This error seems to go if i remove the Flatten() layer.
I am trying to use my model but it is giving this runtime error : You must compile your model before using it.
I don't understand what is wrong, I've tried using lesser Dense layers but it is not working.
Can someone help me with this? PLZ explain with code.
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)
Error:
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.
This error happens because your network is inconsistent, the input_shape
parameter should be given to the first layer in your network, but you are giving it to the second layer.
The solution is simple, put the right input_shape
to your Flatten
layer.