Объект 'Model' не имеет атрибута '_name' - PullRequest
0 голосов
/ 20 октября 2018

Я делаю CNN в Керасе.Но у меня есть проблема в создании модели Keras.Вот мой код:

x = Input(shape=(256,256,1))
for i in range(16):
    u = int(16 * 2 ** (i//4))
    x = BatchNormalization()(x)
    x1 = Conv2D(u, kernel_size=(1,1), strides=(1,1), activation='relu')(x)
    x1 = MaxPooling2D(pool_size=(3,3), strides=(1,1))(x1)
    x2 = Conv2D(u, kernel_size=(2,2), strides=(1,1), activation='relu')(x)
    x2 = MaxPooling2D(pool_size=(2,2), strides=(1,1))(x2)
    x3 = Conv2D(u, kernel_size=(3,3), strides=(1,1), activation='relu')(x)
    x3 = MaxPooling2D(pool_size=(1,1), strides=(1,1))(x3)
    x = multiply([x1, x2, x3])
    #x = Dropout(0.45)(x)
    x = MaxPooling2D(pool_size=(3,3), strides=(1,1))(x)
out = BatchNormalization()(x)
model = tf.keras.models.Model(inputs=x, outputs=out)

, и я получил следующую ошибку:

AttributeError                            Traceback (most recent call last)
<ipython-input-99-630b3ef0b15f> in <module>()
     13     x = MaxPooling2D(pool_size=(3,3), strides=(1,1))(x)
     14 out = BatchNormalization()(x)
---> 15 model = tf.keras.models.Model(inputs=x, outputs=out)
...

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

1 Ответ

0 голосов
/ 20 октября 2018

Проблема в том, что вы назначаете другие тензоры на x после определения его как входного тензора.Поэтому его нельзя использовать в качестве входных данных модели, т. Е. inputs=x.Чтобы решить эту проблему с минимальными изменениями, просто сохраните x в другой переменной после определения ее в качестве входного тензора:

x = Input(shape=(256,256,1))
inp = x

# the rest is the same...

model = tf.keras.models.Model(inputs=inp, outputs=out) # pass `inp` as inputs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...