2次元畳み込みのための小さなカスタムケラスモデルにカスタムウェイトを設定する際に助けが必要です。ケラスモデルのウェイト設定
X = [[[3, 2, -4],
[0, 5, 4],
[2, -1, -7],
[-7, 0, 1]],
[[-8, 9, 1],
[-3, 6, 0],
[0, -4, 2],
[5, 1, 1]]]
このように、2つのチャンネルだけの4x3画像を考えることができます。私のカーネルは次のようになります。
kernel = [[[2, 1],
[0, -1],
[0, -1]],
[[1, 2],
[2, -1],
[2, -2]]]
したがって、2次元の3x2カーネルです。 1のストライドなしパディング、と手で2次元畳み込みを行う利回り:残念ながら
[[10, 14],
[27, 16]]
、次Kerasコード:
model = Sequential()
conv2d = Conv2D(filters=1, kernel_size=(3,2), strides=1, input_shape=(2,4,3), use_bias=False)
model.add(conv2d)
layer = model.layers[0]
layer.set_weights([np.array(kernel).reshape(3, 2, 2, 1)])
print(model.predict(np.array(X).reshape((1,) + np.shape(X))))
出力:
[[19, -6],
[-39, 16]]
私はできませんでしたKerasが畳み込みのためにカーネルをどのように整理するかを理解する。これまでのところ、直観に反して見えますが、おそらく何かが欠けています。
私はTensorflow 1.4.0でKeras 2.0.9をバックエンドとして使用しています。