Эта модель еще не построена. Почему?

Я создал эту базовую модель, и она работает правильно:

from tensorflow.keras.applications import ResNet50
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout

base_model = ResNet50(include_top=False, 
                      weights='imagenet', 
                      input_shape=(150, 150, 3))
base_model.trainable = True

Но когда я пытаюсь расширить исходную модель (или даже когда я копирую весь код в модель), я получаю сообщение об ошибке:

model = Sequential()
model.add(ResNet50(include_top=False, 
                      weights='imagenet', 
                      input_shape=(150, 150, 3)))
model.add(Flatten())
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.25))
model.add(Dense(512, activation="sigmoid"))
model.summary()

Ошибка говорит

The model has not yet been built. Build the model first by calling 
'build()' or calling 'fit()' with some data, or specify an 'input_shape'
argument in the first layer(s) for automatic build.

person ducky    schedule 06.08.2021    source источник
comment
Я могу ответить на ваш вопрос, но для того, чтобы он был полезен другим людям в SackOverflow, вам нужно написать правильный вопрос. Это означает, что вы должны написать (в виде отформатированного блока текста) код и ошибки и избегать добавления ссылок на изображения с кодом, который нельзя найти или сослаться на него позже. Имейте в виду, что StackOverflow здесь не только для того, чтобы ответить на ваш вопрос, но и для создания коллективных знаний. PS: Если вы сделаете это правильно, я гарантирую ответ.   -  person ibarrond    schedule 06.08.2021
comment
Спасибо, что сообщили мне об этом. У меня проблема с созданием кода в вопросе (или показать изображение без ссылки), и обычно другие помогают мне его редактировать. Но я попытался отредактировать его правильно. Не могли бы вы помочь мне ответить на него? @ибарронд   -  person ducky    schedule 07.08.2021
comment
Ответил! Я вижу, что ваш английский не идеален, и можно положиться на других людей, чтобы исправить некоторые грамматические ошибки/опечатки. Тем не менее, вы всегда должны задавать вопросы, предоставляя фрагменты кода другим программистам, чтобы они могли попробовать его и прийти к той же ошибке. Ваше редактирование было хорошим! отличная работа.   -  person ibarrond    schedule 08.08.2021
comment
Отвечает ли это на ваш вопрос? Эта модель еще не была построена ошибка на модели .summary()   -  person ibarrond    schedule 08.08.2021


Ответы (1)


Во-первых, следует погуглить ошибку (просто погуглить Модель еще не построена), так как это распространенная ошибка и уже при первом обращении я нашел ответ в StackOverflow (эта). Первый ответ на этот вопрос (здесь) напрямую решает вашу проблему.

Теперь, чтобы ответить на ваш вопрос, вы меняете архитектуру модели при добавлении слоев, поэтому вам нужно построить ее снова. Чтобы построить его снова, вы должны следовать тому, что говорит вам сообщение об ошибке, и вызывать функцию build() с вашим input_shape:

#... your code
model.add(Dense(512, activation="sigmoid"))
model.build(input_shape=(150, 150, 3))
person ibarrond    schedule 07.08.2021