Ошибка атрибута: объект ‘Model’ не имеет атрибута ‘_name’ во время конкатенации входного слоя

#python #tensorflow #keras #deep-learning

#python #тензорный поток #keras #глубокое обучение

Вопрос:

Я не могу понять, что не так. Мне нужно иметь два набора входных данных, поэтому я разделил их, чтобы присвоить каждому имя (служащее целям), а затем объединил их, чтобы связать их со следующим слоем.

 layer_input1  = tf.keras.Input(shape=(None, 1), name='layer1')
layer_input2  = tf.keras.Input(shape=(None, 1), name='layer2')

layer_input = tf.keras.layers.concatenate([layer_input1, layer_input2], name='inputs')
fc_1 = tf.keras.layers.Dense(2,
                             activation='relu')(layer_input)
fc_1 = tf.keras.layers.Dropout(0.5)(fc_1)
fc_2 = tf.keras.layers.Dense(10,
                             activation='relu')(fc_1)
output_layer = tf.keras.layers.Dense(1,
                             activation='relu', name='predictions')(fc_2)
model = tf.keras.Model(inputs=layer_input, outputs=output_layer)

AttributeError                            Traceback (most recent call last)
<ipython-input-430-b567199137e0> in <module>()
     10 output_layer = tf.keras.layers.Dense(1,
     11                              activation='relu', name='predictions')(fc_2)
---> 12 model = tf.keras.Model(inputs=layer_input, outputs=output_layer)

AttributeError: 'Model' object has no attribute '_name'
  

Ответ №1:

Просто установите входные слои в качестве входных данных модели.

 model = tf.keras.Model(inputs=[layer_input1, layer_input2], outputs=output_layer)
  

Обратите внимание, что конкатенация — это операция, а не объект слоя. Но даже если вы обернете его как слой с помощью Lambda, он не будет обладать некоторыми атрибутами keras.layers.Input

Комментарии:

1. Отлично, это сработало, спасибо! таким образом, конкатенация слоев, по-видимому, не эквивалентна [layer_input1, layer_input2]

2. будет выполнена операция конкатерации, она просто не может быть входным узлом

3. @NoelSaade, если этот ответ был полезен, пожалуйста, подумайте о его принятии.