python - TensorFlow 预期维度为 1,CategoricalCrossentropy 损失为 10 错误
问题描述
当我尝试执行 model.compile as 时出现以下错误
model.compile(optimizer='adam',
loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
ValueError:无法挤压 dim[1],预期维度为 1,对于 '{{node Squeeze}} = SqueezeT=DT_FLOAT,squeeze_dims=[-1]' 得到 10,输入形状:[?,10]
我正在尝试训练 CNN 对图像进行分类。数据集的创建方式如下:
train_dataset = tf.keras.preprocessing.image_dataset_from_directory(
'jpg',
labels=y,
label_mode='categorical',
color_mode="rgb",
batch_size=32,
image_size=(500, 500),
seed=42,
subset="training",
validation_split=0.3
)
标签 y 是以下形式的列表(一种热编码):
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0], ...]
这是我的顺序模型的摘要:
Layer (type) Output Shape Param #
conv2d_12 (Conv2D) (None, 498, 498, 32) 896
max_pooling2d_8 (MaxPooling2 (None, 249, 249, 32) 0
conv2d_13 (Conv2D) (None, 247, 247, 64) 18496
max_pooling2d_9 (MaxPooling2 (None, 12) , 64) 0
conv2d_14 (Conv2D) (None, 121, 121, 64) 36928
flatten_4 (Flatten) (None, 937024) 0
dense_8 (Dense) (None, 64) 59969600
dense_9 (Dense) (None, 10) 650
我的问题是,这是损失函数还是标签格式的问题?我该怎么做才能解决这个问题?
解决方案
推荐阅读
- swift - Sort multiple date objects in Swift
- mysql - MySQL - SQLyog Job Agent (SJA) - Two Way Database Syncronization Based on Date Time
- javascript - HTML import is not working in Electron app
- laravel - useradd invalid user in Dockerfile
- python - Is there anyway to solve this without using two for loop
- python - how do i create a list from csv contents and then search within that list
- python-3.x - Using the Python math.prod() in a specified Pandas date range
- gradient - Why is Policy Gradient method for Reinforcement Learning good for LARGE action spaces
- microservices - Batch operation over thousands of aggregates in CQRS system, do people do that?
- python - 如何在python中创建产品订单的共现矩阵?