'ValueError: `logits` and `labels` must have the same shape, received ((None, 250, 1) vs (None,))
I'm a noob in machinelearning. I'm running LSTM model with the following layers in Sequential. The encoder is encoding an address into a 250 char long tf_id array. See the model summary below for reference. When i'm running model.fit() i get an error below. i tried Flattened() layer before the Dense(1) and it did not work. any pointers?
error
Traceback (most recent call last):
File "/Users/zeus/PycharmProjects/ml_gibb_addr/com/address/train/train_lstm_model.py", line 70, in <module>
train_lstm_model(data=data, epochs=10)
File "/Users/zeus/PycharmProjects/ml_gibb_addr/com/address/train/train_lstm_model.py", line 41, in train_lstm_model
history = model.fit(
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/utils/traceback_utils.py", line 67, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py", line 1147, in autograph_handler
raise e.ag_error_metadata.to_exception(e)
ValueError: in user code:
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/engine/training.py", line 1021, in train_function *
return step_function(self, iterator)
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/engine/training.py", line 1010, in step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/engine/training.py", line 1000, in run_step **
outputs = model.train_step(data)
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/engine/training.py", line 860, in train_step
loss = self.compute_loss(x, y, y_pred, sample_weight)
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/engine/training.py", line 918, in compute_loss
return self.compiled_loss(
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/engine/compile_utils.py", line 201, in __call__
loss_value = loss_obj(y_t, y_p, sample_weight=sw)
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/losses.py", line 141, in __call__
losses = call_fn(y_true, y_pred)
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/losses.py", line 245, in call **
return ag_fn(y_true, y_pred, **self._fn_kwargs)
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/losses.py", line 1932, in binary_crossentropy
backend.binary_crossentropy(y_true, y_pred, from_logits=from_logits),
File "/Users/zeus/PycharmProjects/machineLearning/venv1/lib/python3.8/site-packages/keras/backend.py", line 5247, in binary_crossentropy
return tf.nn.sigmoid_cross_entropy_with_logits(labels=target, logits=output)
ValueError: `logits` and `labels` must have the same shape, received ((None, 250, 1) vs (None,)).
Code:
model = keras.Sequential([
encoder,
tf.keras.layers.Embedding(
input_dim=len(encoder.get_vocabulary()),
output_dim=64,
# Use masking to handle the variable sequence lengths
mask_zero=True),
tf.keras.layers.LSTM(64, return_sequences=True),
tf.keras.layers.LSTM(64, return_sequences=True),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1)
])
model.summary()
model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
optimizer=tf.keras.optimizers.Adam(1e-4),
metrics=['accuracy'])
nptrain_ds = np.asarray(train_dataset)
nptest_ds = np.asarray(test_dataset)
history = model.fit(
x=nptrain_ds[0], y=nptrain_ds[1].astype(float),
epochs=epochs,
# validation_data=nptest_ds,
validation_split=validation_split)
Model summary:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
text_vectorization (TextVec (None, 250) 1
torization)
embedding (Embedding) (None, 250, 64) 16000
lstm (LSTM) (None, 250, 64) 33024
lstm_1 (LSTM) (None, 250, 64) 33024
dense (Dense) (None, 250, 64) 4160
dense_1 (Dense) (None, 250, 1) 65
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
