Reputation: 77
I am creating a python application for Detecting Brain Tumor.
About the data: The dataset contains 2 folders: yes and no which contains 253 Brain MRI Images. The folder yes contains 155 Brain MRI Images that are tumorous and the folder no contains 98 Brain MRI Images that are non-tumorous.
# tensorboard
log_file_name = f'brain_tumor_detection_cnn_{int(time.time())}'
tensorboard = TensorBoard(log_dir=f'logs/{log_file_name}')
# checkpoint
# unique file name that will include the epoch and the validation (development) accuracy
filepath="cnn-parameters-improvement-{epoch:02d}-{val_acc:.2f}"
# save the model with the best validation (development) accuracy till now
checkpoint = ModelCheckpoint("models/{}.model".format(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max'))
# ## Train the model
model.fit(x=X_train, y=y_train, batch_size=32, epochs=10, validation_data=(X_val, y_val), callbacks=[tensorboard, checkpoint])
While Training the Model, I get the following error:
Epoch 1/10
91/91 [==============================] - ETA: 0s - loss: 0.7457 - accuracy: 0.6735
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
c:\python38\lib\site-packages\tensorflow\python\keras\callbacks.py in _get_file_path(self, epoch, logs)
1243 # placeholders can cause formatting to fail.
-> 1244 return self.filepath.format(epoch=epoch + 1, **logs)
1245 except KeyError as e:
KeyError: 'val_acc'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
<ipython-input-20-b50661a1419b> in <module>
1 start_time = time.time()
2
----> 3 model.fit(x=X_train, y=y_train, batch_size=32, epochs=10, validation_data=(X_val, y_val), callbacks=[tensorboard, checkpoint])
4
5 end_time = time.time()
c:\python38\lib\site-packages\tensorflow\python\keras\engine\training.py in _method_wrapper(self, *args, **kwargs)
64 def _method_wrapper(self, *args, **kwargs):
65 if not self._in_multi_worker_mode(): # pylint: disable=protected-access
---> 66 return method(self, *args, **kwargs)
67
68 # Running inside `run_distribute_coordinator` already.
c:\python38\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
811 epoch_logs.update(val_logs)
812
--> 813 callbacks.on_epoch_end(epoch, epoch_logs)
814 if self.stop_training:
815 break
c:\python38\lib\site-packages\tensorflow\python\keras\callbacks.py in on_epoch_end(self, epoch, logs)
363 logs = self._process_logs(logs)
364 for callback in self.callbacks:
--> 365 callback.on_epoch_end(epoch, logs)
366
367 def on_train_batch_begin(self, batch, logs=None):
c:\python38\lib\site-packages\tensorflow\python\keras\callbacks.py in on_epoch_end(self, epoch, logs)
1175 self._save_model(epoch=epoch, logs=logs)
1176 else:
-> 1177 self._save_model(epoch=epoch, logs=logs)
1178 if self.model._in_multi_worker_mode():
1179 # For multi-worker training, back up the weights and current training
c:\python38\lib\site-packages\tensorflow\python\keras\callbacks.py in _save_model(self, epoch, logs)
1194 int) or self.epochs_since_last_save >= self.period:
1195 self.epochs_since_last_save = 0
-> 1196 filepath = self._get_file_path(epoch, logs)
1197
1198 try:
c:\python38\lib\site-packages\tensorflow\python\keras\callbacks.py in _get_file_path(self, epoch, logs)
1244 return self.filepath.format(epoch=epoch + 1, **logs)
1245 except KeyError as e:
-> 1246 raise KeyError('Failed to format this callback filepath: "{}". '
1247 'Reason: {}'.format(self.filepath, e))
1248 else:
KeyError: 'Failed to format this callback filepath: "models/cnn-parameters-improvement-{epoch:02d}-{val_acc:.2f}.model". Reason: \'val_acc\''
Upvotes: 0
Views: 3268
Reputation: 11
In recent versions of TensorFlow, you should use val_accuracy
instead of val_acc.
This should resolve the Error you're encountering.
Upvotes: 0
Reputation: 11
If you are using tensorflow with keras, then try using val_accuracy
instead of val_acc
Upvotes: 1