ValueError: Shapes (None, 1) and (None, 19) are incompatible
не подскажите в чем суть ошибки?
from keras.datasets import mnist # subroutines for fetching the MNIST dataset
from keras.models import Model # basic class for specifying and training a neural network
from keras.layers import Input, Dense, Flatten, Convolution2D, MaxPooling2D, Dropout
from keras.utils import np_utils #
# Build VT-CNN2 Neural Net model using Keras primitives --
# - Reshape [N,2,128] to [N,1,2,128] on input
# - Pass through 2 2DConv/ReLu layers
# - Pass through 2 Dense layers (ReLu and Softmax)
# - Perform categorical cross entropy optimization
dr = 0.5 # dropout rate (%)
model = models.Sequential()
model.add(Reshape([1]+in_shp, input_shape=in_shp))
model.add(ZeroPadding2D((0, 2)))
model.add(Convolution2D(256, 1, 3, padding ='valid', activation="relu", name="conv1",kernel_initializer = 'glorot_uniform'))
model.add(Dropout(dr))
model.add(ZeroPadding2D((0, 2)))
model.add(Convolution2D(80, 2, 3, padding ="valid", activation="relu", name="conv2", kernel_initializer ='glorot_uniform', data_format='channels_first'))
model.add(Dropout(dr))
model.add(Flatten())
model.add(Dense(256, activation='relu', kernel_initializer ='he_normal', name="dense1"))
model.add(Dropout(dr))
model.add(Dense( 19, kernel_initializer ='he_normal', name="dense2" ))
model.add(Activation('softmax'))
model.add(Reshape([19]))
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.summary()
Model: "sequential_26"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
reshape_39 (Reshape) (None, 1, 2, 1024) 0
_________________________________________________________________
zero_padding2d_49 (ZeroPaddi (None, 1, 6, 1024) 0
_________________________________________________________________
conv1 (Conv2D) (None, 1, 2, 256) 262400
_________________________________________________________________
dropout_58 (Dropout) (None, 1, 2, 256) 0
_________________________________________________________________
zero_padding2d_50 (ZeroPaddi (None, 1, 6, 256) 0
_________________________________________________________________
conv2 (Conv2D) (None, 80, 2, 85) 400
_________________________________________________________________
dropout_59 (Dropout) (None, 80, 2, 85) 0
_________________________________________________________________
flatten_17 (Flatten) (None, 13600) 0
_________________________________________________________________
dense1 (Dense) (None, 256) 3481856
_________________________________________________________________
dropout_60 (Dropout) (None, 256) 0
_________________________________________________________________
dense2 (Dense) (None, 19) 4883
_________________________________________________________________
activation_15 (Activation) (None, 19) 0
_________________________________________________________________
reshape_40 (Reshape) (None, 19) 0
=================================================================
Total params: 3,749,539
Trainable params: 3,749,539
Non-trainable params: 0
# perform training ...
# - call the main training loop in keras for our network+dataset
filepath = '/content/drive/MyDrive/PYTHON/lalala_w.h5'
history = model.fit(X_train,
y_train,
batch_size=batch_size,
epochs = epochs,
verbose=2,
validation_data=(X_holdout, y_holdout),
callbacks = [
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=True, mode='auto'),
keras.callbacks.EarlyStopping(monitor='val_loss', patience=5, verbose=0, mode='auto')
])
# we re-load the best weights once training is finished
model.load_weights(filepath)
И выходит такая ошибка:
Epoch 1/100
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-42-7750f5559e7d> in <module>()
11 callbacks = [
12 keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=True, mode='auto'),
---> 13 keras.callbacks.EarlyStopping(monitor='val_loss', patience=5, verbose=0, mode='auto')
14 ])
15 # we re-load the best weights once training is finished
9 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
975 except Exception as e: # pylint:disable=broad-except
976 if hasattr(e, "ag_error_metadata"):
--> 977 raise e.ag_error_metadata.to_exception(e)
978 else:
979 raise
ValueError: in user code:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:805 train_function *
return step_function(self, iterator)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:795 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1259 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica
return fn(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:788 run_step **
outputs = model.train_step(data)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:756 train_step
y, y_pred, sample_weight, regularization_losses=self.losses)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/compile_utils.py:203 __call__
loss_value = loss_obj(y_t, y_p, sample_weight=sw)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/losses.py:152 __call__
losses = call_fn(y_true, y_pred)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/losses.py:256 call **
return ag_fn(y_true, y_pred, **self._fn_kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper
return target(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/losses.py:1537 categorical_crossentropy
return K.categorical_crossentropy(y_true, y_pred, from_logits=from_logits)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper
return target(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py:4833 categorical_crossentropy
target.shape.assert_is_compatible_with(output.shape)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/tensor_shape.py:1134 assert_is_compatible_with
raise ValueError("Shapes %s and %s are incompatible" % (self, other))
ValueError: Shapes (None, 1) and (None, 19) are incompatible