---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-37-9a9cd8046c6f> in <cell line: 18>()
16 loss=tf.keras.losses.CategoricalCrossentropy(),
17 metrics=['accuracy'])
---> 18 history1=model1.fit(train_data,epochs=5,validation_data=valid_data)
1 frames
/usr/local/lib/python3.10/dist-packages/keras/src/backend/tensorflow/nn.py in categorical_crossentropy(target, output, from_logits, axis)
552 )
553 if len(target.shape) != len(output.shape):
--> 554 raise ValueError(
555 "Arguments `target` and `output` must have the same rank "
556 "(ndim). Received: "
ValueError: Arguments `target` and `output` must have the same rank (ndim). Received: target.shape=(None,), output.shape=(None, 19)
所以在这方面,我不明白问题是什么??
但是,当我使用 SpareCategoricalCrossentropy 训练我的模型时,它工作正常,但精度非常差,并且在有效数据中它为零。
我尝试使用SpareCategorical,但准确率很低。看到我的数据集来自kaggle,所以我刚刚下载了它并给了它一个图像大小
train_dir="Dataset/train/" test_dir="Dataset/test/" train_data= Images(train_dir,image_size=(150,150),batch_size=32) valid_data= Images(test_dir,image_size=(150,150),batch_size=32)
我想起了这一点。现在谁能告诉我我该怎么办??
在 keras 中,
categorical_crossentropy
和 sparse_categorical_crossentropy
函数使用相同的损失函数。唯一的区别是您使用的目标数组的格式,详细描述见here。因此,您应该对目标数组进行 one-hot 编码才能使用 categorical_crossentropy
。
另一方面,精度低的问题可能是由多种原因造成的,例如学习率过高/过低、神经网络模型的浅度等。您需要在模型定义和训练方面提供有关代码的更多详细信息。