2016-12-30 409 views
0

Keras張量是否有簡單的重命名?我需要它在某種情況下給張量更合適的名稱。爲Keras張量重命名Keras張量名稱

當我編譯有多個輸出或輸入的模型時,模型需要輸入或輸出張量的名稱。例如,以下模型需要名爲'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

有類似的問題。對我來說,下面的工作是爲張量類型的輸出分配一個名稱。我使用了虛擬Lambda層(標識函數)並將新名稱分配給此lambda層(結果不再是張量類型,但是對於我而言,這並不重要)。

from keras.layers import Lambda 

naming_layer = Lambda(lambda x: x, name='your_name') 
newly_named_output = naming_layer (tensor_output)