I am training a simple sequential model for NLP in keras. Here is the model architecture:
from keras.models import Sequential
from keras import layers
from keras.layers import Embedding, Flatten, Dense
embedding_dim = 500
model = Sequential()
model.add(layers.Embedding(input_dim = vocab_size,
output_dim = embedding_dim, input_shape = (2,)))
model.add(layers.Flatten())
model.add(layers.Dense(10, activation = 'relu'))
model.add(layers.Dense(1, activation = 'softmax'))
model.compile(optimizer = 'adam',
loss = 'categorical_crossentropy',
metrics = METRICS)
I also implemented early stopping and class weights as follows:
early_stopping = tf.keras.callbacks.EarlyStopping(
monitor = 'val_loss',
verbose = 1,
patience = 10,
mode = 'max',
restore_best_weights = True)
class_weight = {1: 3.,
2: 2.,
3: 1.5,
4: 1.,
5: 3.,
6: 3.
}
I then called model.fit() as follows:
history = model.fit(X_train, y_train,
epochs = 100,
verbose = 2,
validation_data = (X_val, y_val),
batch_size = 10,
class_weight = class_weight,
callbacks = [early_stopping]
)
This resulted in this error:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[74], line 9
1 class_weight = {1: 3.,
2 2: 2.,
3 3: 1.5,
(...)
6 6: 3.
7 }
----> 9 history = model.fit(X_train, y_train,
10 epochs = 100,
11 verbose = 2,
12 validation_data = (X_val, y_val),
13 batch_size = 10,
14 class_weight = class_weight,
15 callbacks = [early_stopping]
16 )
File ~AppDataLocalanaconda3Libsite-packageskerassrcutilstraceback_utils.py:122, in filter_traceback.<locals>.error_handler(*args, **kwargs)
119 filtered_tb = _process_traceback_frames(e.__traceback__)
120 # To get the full stack trace, call:
121 # `keras.config.disable_traceback_filtering()`
--> 122 raise e.with_traceback(filtered_tb) from None
123 finally:
124 del filtered_tb
File ~AppDataLocalanaconda3Libsite-packagespandascoreseries.py:1040, in Series.__getitem__(self, key)
1037 return self._values[key]
1039 elif key_is_scalar:
-> 1040 return self._get_value(key)
1042 # Convert generator to list before going through hashable part
1043 # (We will iterate through the generator there to check for slices)
1044 if is_iterator(key):
File ~AppDataLocalanaconda3Libsite-packagespandascoreseries.py:1156, in Series._get_value(self, label, takeable)
1153 return self._values[label]
1155 # Similar to Index.get_value, but we do not fall back to positional
-> 1156 loc = self.index.get_loc(label)
1158 if is_integer(loc):
1159 return self._values[loc]
File ~AppDataLocalanaconda3Libsite-packagespandascoreindexesbase.py:3798, in Index.get_loc(self, key)
3793 if isinstance(casted_key, slice) or (
3794 isinstance(casted_key, abc.Iterable)
3795 and any(isinstance(x, slice) for x in casted_key)
3796 ):
3797 raise InvalidIndexError(key)
-> 3798 raise KeyError(key) from err
3799 except TypeError:
3800 # If we have a listlike key, _check_indexing_error will raise
3801 # InvalidIndexError. Otherwise we fall through and re-raise
3802 # the TypeError.
3803 self._check_indexing_error(key)
KeyError: 0
As per a similar question regarding this error in Keras, “KeyError: 0” when trying to load a sequential model in Keras, I tried updating my version of Keras. Howeve, this didn’t change anything. I believe the error is something internal to Keras, but I’m not sure what’s wrong.
Please advise!