为损失函数重命名Keras张量名称

时间:2016-12-30 02:16:29

标签: 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'),而不是模型的名称。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

有类似的问题。对我来说,以下工作是为张量类型的输出分配名称。我使用了一个虚拟Lambda图层(标识函数)并将新名称分配给此lambda图层(但结果不再是张量类型,但出于我的目的,这无关紧要。)

from keras.layers import Lambda

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