2016-12-30 9 views
0

ケラステンソルの単純な名前変更はありますか?私はテンソルを特定の文脈でより適切な名前を与えるために必要とします。ケラステンソル名を失う関数の名前に変更する

複数の出力または入力を持つモデルをコンパイルするとき、モデルには入力または出力テンソルの名前が必要です。たとえば、モデルの下には「advc_out_tn」と「atoz.output」という名前が必要です。

advc_out_tn = self.advc_model(atoz.output) 

self.advc_atoz_model = Model(input=atoz.input, output=[advc_out_tn, atoz.output]) 
self.advc_atoz_model.compile(optimizer='adam', loss="binary_crossentropy", loss_weights={"advc_out_tn":1.0, "atoz_out_tn":1.0}) 

しかし、実際の名前ではないので、私にエラーが発生します。

ValueError: Unknown entry in loss_weights dictionary: "atoz_out_tn". Only expected the following keys: ['model_2', 'concat_decoded_img'] 

しかし、テンソルの実際の名前は多少不器用です。特に与えられたモデル(この場合はatoz)を使用し、出力テンソルに '.out'でアクセスすると、モデルの名前ではなく、最後のレイヤー名(concat_decoded_img)が得られます。

どうすればこの問題を解決できますか?

答えて

0

同様の問題がありました。私にとって、以下は、テンソル型の出力に名前を割り当てるために働いた。私はダミーラムダ層(アイデンティティ関数)を使用し、このラムダ層に新しい名前を割り当てます(結果はもはやテンソル型ではありませんが、私の目的ではこれは問題ではありません)。

from keras.layers import Lambda 

naming_layer = Lambda(lambda x: x, name='your_name') 
newly_named_output = naming_layer (tensor_output) 
関連する問題