Ошибка простой последовательной модели: вы должны скомпилировать вашу модель перед использованием - PullRequest
0 голосов
/ 02 мая 2020

Эта ошибка кажется go, если я удаляю слой Flatten ().

Я пытаюсь использовать свою модель, но она выдает эту ошибку времени выполнения: вы должны скомпилировать модель до ее использования.

Я не понимаю, что не так, я пытался использовать менее плотные слои, но он не работает.

Может кто-нибудь помочь мне с этим? PLZ объяснить с помощью кода.

from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Dense, Flatten



train_directory = 'D:\D_data\Rock_Paper_Scissors\Train'
training_datgagen = ImageDataGenerator(rescale = 1./255)
training_generator = training_datgagen.flow_from_directory(
train_directory,
target_size = (150,150),
class_mode = 'categorical')

validation_directory = 'D:\D_data\Rock_Paper_Scissors\Test'
validation_datagen = ImageDataGenerator(rescale= 1./255)
validation_generator = validation_datagen.flow_from_directory(
validation_directory,
target_size = (150,150),
class_mode = 'categorical'
)

model = Sequential()
model.add(Flatten())
model.add(Dense(128, input_shape = (22500,)))
model.add(Dense(64, activation = 'relu'))
model.add(Dense(32, activation = 'relu'))
model.add(Dense(16, activation = 'relu'))
model.add(Dense(3, activation = 'softmax'))

model.compile(optimizer = 'adam', loss = 'categorical_crossentropy',metrics = ['accuracy'])


model.fit_generator(training_generator,epochs = 15,validation_data = validation_generator,verbose =1)

Ошибка:

File "C:\Users\Ankit\.spyder-py3\temp.py", line 33, in <module>
model.fit_generator(training_generator,epochs = 15,validation_data = validation_generator,verbose =1)

File "C:\Users\Ankit\anaconda3\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)

File "C:\Users\Ankit\anaconda3\lib\site-packages\keras\engine\training.py", line 1732, in fit_generator
initial_epoch=initial_epoch)

File "C:\Users\Ankit\anaconda3\lib\site-packages\keras\engine\training_generator.py", line 42, in fit_generator
model._make_train_function()

File "C:\Users\Ankit\anaconda3\lib\site-packages\keras\engine\training.py", line 303, in _make_train_function
raise RuntimeError('You must compile your model before using it.')

RuntimeError: You must compile your model before using it.

1 Ответ

1 голос
/ 02 мая 2020

Эта ошибка возникает из-за несогласованности вашей сети, параметр input_shape должен быть передан первому слою в вашей сети, а вы передаете его второму слою.

Решение простое, поставьте право input_shape на ваш Flatten слой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...