I am working on a Eye Disease Recognition system using Deep Learning Models and facing some errors I am using the Kaggle ODIR Challenge 2019 Dataset for my project
I am getting athe ValueError for Shapes not being compatible Error is as follows
ValueError Traceback (most recent call last)
Cell In[10], line 2
1 # Training
----> 2 history = model.fit(
3 training_generator,
4 steps_per_epoch=1,
5 epochs=EPOCHS,
6 validation_data=validation_generator,
7 validation_steps=1,
8 verbose=1,
9 callbacks = [early_stopping])
File ~\anaconda3\Lib\site-packages\keras\src\utils\traceback_utils.py:70, in filter_traceback.<locals>.error_handler(*args, **kwargs)
67 filtered_tb = _process_traceback_frames(e.__traceback__)
68 # To get the full stack trace, call:
69 # `tf.debugging.disable_traceback_filtering()`
---> 70 raise e.with_traceback(filtered_tb) from None
71 finally:
72 del filtered_tb
File ~\AppData\Local\Temp\__autograph_generated_filephnikqi7.py:15, in outer_factory.<locals>.inner_factory.<locals>.tf__train_function(iterator)
13 try:
14 do_return = True
---> 15 retval_ = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(iterator)), None, fscope)
16 except:
17 do_return = False
ValueError: in user code:
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\engine\training.py", line 1401, in train_function *
return step_function(self, iterator)
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\engine\training.py", line 1384, in step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\engine\training.py", line 1373, in run_step **
outputs = model.train_step(data)
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\engine\training.py", line 1151, in train_step
loss = self.compute_loss(x, y, y_pred, sample_weight)
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\engine\training.py", line 1209, in compute_loss
return self.compiled_loss(
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\engine\compile_utils.py", line 277, in __call__
loss_value = loss_obj(y_t, y_p, sample_weight=sw)
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\losses.py", line 143, in __call__
losses = call_fn(y_true, y_pred)
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\losses.py", line 270, in call **
return ag_fn(y_true, y_pred, **self._fn_kwargs)
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\losses.py", line 2221, in categorical_crossentropy
return backend.categorical_crossentropy(
File "C:\Users\sarth\anaconda3\Lib\site-packages\keras\src\backend.py", line 5573, in categorical_crossentropy
target.shape.assert_is_compatible_with(output.shape)
ValueError: Shapes (None, 8) and (None, 7) are incompatible
The relevant code is
model = Sequential()
model.add(Rescaling(1./255, input_shape=input_shape))
model.add(pretrained)
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(256, activation='relu'))
#model.add(Dropout(0.2))
model.add(Dense(7))
model.add(Activation('softmax'))
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
rescaling (Rescaling) (None, 264, 264, 3) 0
resnet50 (Functional) (None, None, None, 2048 23587712
)
flatten (Flatten) (None, 165888) 0
dense (Dense) (None, 256) 42467584
dense_1 (Dense) (None, 256) 65792
dense_2 (Dense) (None, 7) 1799
activation (Activation) (None, 7) 0
=================================================================
Total params: 66122887 (252.24 MB)
Trainable params: 66069767 (252.04 MB)
Non-trainable params: 53120 (207.50 KB)
patience = 50
early_stopping = EarlyStopping(monitor='loss', patience=patience, restore_best_weights=True)
pretrained.trainable = False
model.compile(loss='categorical_crossentropy', loss_weights=weights,
optimizer=Adam(learning_rate=0.001),
metrics=['accuracy'])
history = model.fit(
training_generator,
steps_per_epoch=1,
epochs=EPOCHS,
validation_data=validation_generator,
validation_steps=1,
verbose=1,
callbacks = [early_stopping])
Expected output is Epochs for Training and Validation process