My *_*Boi 3 python keras tensorflow
错误:
return K.categorical_crossentropy(y_true, y_pred, from_logits=from_logits)
C:\Users\selvaa\miniconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\backend.py:4619 categorical_crossentropy
target.shape.assert_is_compatible_with(output.shape)
C:\Users\selvaa\miniconda3\envs\tensorflow\lib\site-packages\tensorflow\python\framework\tensor_shape.py:1128 assert_is_compatible_with
raise ValueError("Shapes %s and %s are incompatible" % (self, other))
ValueError: Shapes (None, 1) and (None, 151) are incompatible
Run Code Online (Sandbox Code Playgroud)
我的型号:
x = np.array(x)
y = np.array(y)
x = x/255.0
model = Sequential()
model.add(Conv2D(3, (3,3), input_shape=(128,128,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(302, activation='relu'))
model.add(Dense(151, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x, y, batch_size=32, epochs=5, verbose=1, validation_split=0.1)
Run Code Online (Sandbox Code Playgroud)
我正在尝试训练一个模型来识别不同的口袋妖怪,我的数据集有每 151 个口袋妖怪的两张图片(正确标记和全部)。不确定我做错了什么。
这是我打印 x.shape 和 y.shape 时发生的情况:
(301, 128, 128, 3) (301,)
Run Code Online (Sandbox Code Playgroud)
使用损失tf.keras.losses.SparseCategoricalCrossEntropy
,如下面的代码示例所示。
损失函数tf.keras.losses.SparseCategoricalCrossEntropy
接受 shape 中的参考标签(n_samples,)
和 shape 中的预测标签(n_samples, n_classes)
,这适用于您的数据。您不能使用,categorical_crossentropy
因为这期望您的标签是单热编码的(参见答案底部)。
x = np.array(x)
y = np.array(y)
x = x / 255.0
model = Sequential()
model.add(Conv2D(3, (3,3), input_shape=(128,128,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(302, activation='relu'))
model.add(Dense(151, activation='softmax'))
model.compile(
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
optimizer='adam',
metrics=['accuracy'])
model.fit(x, y, batch_size=32, epochs=5, verbose=1, validation_split=0.1)
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是在训练之前对标签进行一次性编码,例如使用函数tf.one_hot
。如果您使用这种方法,那么您可以使用categorical_crossentropy
.
归档时间: |
|
查看次数: |
3303 次 |
最近记录: |