2016-12-30 407 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)