私はと層が定義されていConv2D:これは私のネットワークの最初の層である
kerasでConv2Dからレイヤーウェイトを正しく取得する方法は?
Conv2D(96, kernel_size=(5, 5),
activation='relu',
input_shape=(image_rows, image_cols, 1),
kernel_initializer=initializers.glorot_normal(seed),
bias_initializer=initializers.glorot_uniform(seed),
padding='same',
name='conv_1')
。
入力サイズは64×160、画像は1チャンネルです。
私はこの畳み込みレイヤーからウェイトを視覚化しようとしていますが、それを取得する方法はわかりません。
1.Call
layer.get_weights()[0]
をこの形状(5、5、1、96)の配列をreturs:ここ
は、私は今、これをやっている方法です。 1は画像が1チャンネルであるためです。
layer.get_weights()[0][:,:,:,j][:,:,0]
非常に醜いが、私はこれを簡素化するかどうかはわからない5つのフィルタによる
2.Take 5は、任意のコメントは非常に高く評価されています。
これらの5×5の正方形ではわかりません。彼らは実際にフィルターですか?
もし誰かが正しくモデルからフィルタを取得する方法を教えてくださいできませんでしたか?
ありがとうございました!これは本当に奇妙なことです。ランダムな初期化の場合、重みは似ています。私はconvレイヤーに推奨されるglorot初期化を使用しています。私にとって最も混乱する質問は、ネットワークをトレーニングしていますが、同じウェイトを経験していることです。何を訓練しましたか?これについての答えはありません... –
重みの3次元は何ですか? 'x1w = x.get_weights()[0] [:、:、0、:]'では、 '[:、:、0、:]'の中の0です。最初の2つのディムはカーネルxとyで、最後はカーネルの数ですが、3次元が何であるかはわかりません。それは前のレイヤーの出力の次元と思われますが、なぜか、それが本当に意味するものは理解できません。 – wordsforthewise
0は赤のチャネルです。三次元は赤緑と青です。第1はxであり、第2はyであり、第3はチャネルであり、最後はn番目の畳み込み層である。 – John