2016-12-30 7 views
0

Есть ли простое переименование для тензора 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

Схожая проблема. Для меня следующее работало, чтобы присвоить имя выходу тензорного типа. Я использовал фиктивный слой Лямбды (функция идентификации) и назначил новое имя этому лямбда-слою (результат больше не относится к тензорному типу, но для моей цели это не имело значения).

from keras.layers import Lambda 

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