1

DeepLearning4j を使用して既存の Caffe モデルを実装する必要があります。ただし、DL4J は初めてなので、実装方法がわかりません。ドキュメントと例を検索してもほとんど役に立ちませんでした。これら 2 つの用語は大きく異なります。以下の caffe prototxt を dl4j でどのように記述しますか?

レイヤー1:

layers {
  name: "myLayer1"
  type: CONVOLUTION
  bottom: "data"
  top: "myLayer1"
  blobs_lr: 1
  blobs_lr: 2
  convolution_param {
    num_output: 20
    kernel_w: 2
    kernel_h: 2
    stride_w: 1
    stride_h: 1
    weight_filler {
    type: "msra"
    variance_norm: AVERAGE
    }
    bias_filler {
       type: "constant"
    }
 }
}

レイヤ 2

 layers {
   name: "myLayer1Relu"
   type: RELU
   relu_param {
   negative_slope: 0.3
 }
 bottom: "myLayer1"
 top: "myLayer1"
 }

レイヤ 3

  layers {
   name: "myLayer1_dropout"
   type: DROPOUT
   bottom: "myLayer1"
   top: "myLayer1"
   dropout_param {
     dropout_ratio: 0.2
   }
 }

レイヤ 4

layers {
  name: "final_class"
  type: INNER_PRODUCT
  bottom: "myLayer4"
  top: "final_class"
  blobs_lr: 1
  blobs_lr: 2
  weight_decay: 1
  weight_decay: 0
  inner_product_param {
    num_output: 10
    weight_filler {
      type: "xavier"
      variance_norm: AVERAGE
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
4

2 に答える 2

1

これを行う自動化された方法はありませんが、ビルダー DSL を少数のレイヤーのみにマッピングすることは難しくありません。最低限の例は次のとおりです: https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/convolution/LenetMnistExample.java

stride、padding、xavier、biasInit など、同じプリミティブがすべて表示されます。

今後の keras インポートは、caffe -> keras -> dl4j を橋渡しする方法になるかもしれません。

編集:私はあなたのためにそれを構築するつもりはありません。(それがあなたがここで探しているものかどうかはわかりません)

ただし、Dl4j にはすでに適切なプリミティブがあります。それには、variance_norm の入力レイヤーがありません。入力を渡す前に、ゼロ平均と単位分散の正規化を使用します。

javadoc: http://deeplearning4j.org/docを読んだだけの場合、設定の一部としてバイアス初期化があります。

于 2016-11-07T12:45:00.050 に答える