を切断しない、私は最後の層であるシーケンシャルモデルロードしています:Keras - ポップと再度追加層が、層がKeras(1.2.2)を使用して
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))
その後、私はポップにしたいが最後のレイヤー、完全に接続された別のレイヤーを追加し、分類レイヤーを再追加します。
model = load_model('model1.h5')
layer1 = model.layers.pop() # Copy activation_6 layer
layer2 = model.layers.pop() # Copy classification layer (dense_2)
model.add(Dense(512, name='dense_3'))
model.add(Activation('softmax', name='activation_7'))
model.add(layer2)
model.add(layer1)
print(model.summary())
あなたは私のdense_3とactivation_7が(「に接続されている」と要約で空の値())ネットワークに接続できませんでした見ることができるように。この問題を解決する方法を説明しているドキュメントには何も見つかりません。何か案は?
下記の解答後dense_1 (Dense) (None, 512) 131584 flatten_1[0][0]
____________________________________________________________________________________________________
activation_5 (Activation) (None, 512) 0 dense_1[0][0]
____________________________________________________________________________________________________
dense_3 (Dense) (None, 512) 5632
____________________________________________________________________________________________________
activation_7 (Activation) (None, 512) 0
____________________________________________________________________________________________________
dense_2 (Dense) (None, 10) 5130 activation_5[0][0]
____________________________________________________________________________________________________
activation_6 (Activation) (None, 10) 0 dense_2[0][0]
====================================================================================================
、私はmodel.summary()
をプリントアウトする前にモデルをコンパイルしますが、概要が示すように、いくつかの理由のために、層は、正しくポップされていません。最後の層の接続が間違っている:
dense_1 (Dense) (None, 512) 131584 flatten_1[0][0]
____________________________________________________________________________________________________
activation_5 (Activation) (None, 512) 0 dense_1[0][0]
____________________________________________________________________________________________________
dense_3 (Dense) (None, 512) 5632 activation_6[0][0]
____________________________________________________________________________________________________
activation_7 (Activation) (None, 512) 0 dense_3[0][0]
____________________________________________________________________________________________________
dense_2 (Dense) (None, 10) 5130 activation_5[0][0]
activation_7[0][0]
____________________________________________________________________________________________________
activation_6 (Activation) (None, 10) 0 dense_2[0][0]
dense_2[1][0]
====================================================================================================
しかし、それはあなたがレイヤーをドロップすると、あなたはそれがどんな効果を持っているために、モデルを再コンパイルする必要が
dense_1 (Dense) (None, 512) 131584 flatten_1[0][0]
____________________________________________________________________________________________________
activation_5 (Activation) (None, 512) 0 dense_1[0][0]
____________________________________________________________________________________________________
dense_3 (Dense) (None, 512) 5632 activation_5[0][0]
____________________________________________________________________________________________________
activation_7 (Activation) (None, 512) 0 dense_3[0][0]
____________________________________________________________________________________________________
dense_2 (Dense) (None, 10) 5130
activation_7[0][0]
____________________________________________________________________________________________________
activation_6 (Activation) (None, 10) 0 dense_2[0][0]
====================================================================================================
コンパイルでは、新しく追加されたレイヤー(dense_3とactivation_7)への接続が追加されていますが、activation_6とdense_2への接続はpop()によって更新されていないようです。私はポップした後にコンパイルしようとしましたが、次のレイヤーを追加した後は何も効果がありません。私はここで何が欠けているのですか? –
編集した私の答え –
今は正しく動作していますか? :) –