值错误:形状不匹配-使用tensorflow时
当运行下面的代码时,我得到一个错误,说是形状不匹配,在谷歌上搜索后,我发现这通常是由于在目标不是热编码的情况下使用交叉熵作为损失函数造成的。因为我的不是热编码的,所以我使用了稀疏\u分类\u交叉熵,但错误仍然存在 以下是我收到的错误:值错误:形状不匹配-使用tensorflow时,tensorflow,google-colaboratory,tf.keras,Tensorflow,Google Colaboratory,Tf.keras,当运行下面的代码时,我得到一个错误,说是形状不匹配,在谷歌上搜索后,我发现这通常是由于在目标不是热编码的情况下使用交叉熵作为损失函数造成的。因为我的不是热编码的,所以我使用了稀疏\u分类\u交叉熵,但错误仍然存在 以下是我收到的错误: Train on 60000 samples Epoch 1/100 32/60000 [..............................] - ETA: 1:18 ----------------------------------------
Train on 60000 samples
Epoch 1/100
32/60000 [..............................] - ETA: 1:18
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-123-4ce1d4d047d4> in <module>()
----> 1 model.fit(x_train, y_train, batch_size=32, epochs=100, verbose=1)
25 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/ops/nn_ops.py in sparse_softmax_cross_entropy_with_logits(_sentinel, labels, logits, name)
3391 "should equal the shape of logits except for the last "
3392 "dimension (received %s)." % (labels_static_shape,
-> 3393 logits.get_shape()))
3394 # Check if no reshapes are required.
3395 if logits.get_shape().ndims == 2:
ValueError: Shape mismatch: The shape of labels (received (32,)) should equal the shape of logits except
for the last dimension (received (5408, 10)).
我才意识到我忘了在模型中添加“展平”层: model.add(tf.keras.layers.Flatten()) 解决了这个问题
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=3, strides=2, input_shape= [28,28,1], activation='relu'))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(units = 10, activation='softmax'))
我才意识到我忘了在模型中添加“展平”层: model.add(tf.keras.layers.Flatten()) 解决了这个问题
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=3, strides=2, input_shape= [28,28,1], activation='relu'))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(units = 10, activation='softmax'))