python - 检查输入时出错:预期 conv2d_1_input 的形状为 (3, 32, 32) 但得到的数组的形状为 (32, 32, 3)
问题描述
我想为 cifar10 数据集训练 CNN,但在检查输入时出现此错误 Error: expected conv2d_10_input to have shape (3, 32, 32) but got array with shape (32, 32, 3)
epochs = 10 batch_size = 32
model.fit(X_train,Y_train,validation_data=(X_test,Y_test),epochs=epochs,batch_size=batch_size,verbose = 1)
解决方案
数据集似乎是(高度、宽度、通道)格式,但模型需要(通道、高度、宽度)格式。
我们可以使用tf.transpose()
可以围绕张量的维度“切换”的功能在这些之间进行转换。
要将单个图像张量从 HWC 转换为 CHW,只需执行以下操作:
reshaped = tf.transpose(image_tensor, (2,0,1))
要转换批次,您可以执行以下操作:
reshaped = tf.transpose(images_tensor, (0,3,1,2))
推荐阅读
- oop - 面向对象设计中的继承或组合
- flutter - 如何获取 StatefulWidget 的状态?
- javascript - 如何在 D3 圆内将列表居中
- html - 如何将按钮放在网站文本的中心下方?
- elsa-workflows - 使用 Elsa 工作流 ForEach 循环活动
- c# - 为什么这个 ASP.NET Core 3.1 kebab 套管 URL 不起作用?
- forms - 基于多个问题的 Google 表单验证
- sql - 如何添加数据库约束 18 或以上
- java - 格式与杰克逊
- java - 如何将位图保存在 DCIM 的新文件夹中以在手机的图库中显示(手机没有 SDCard)?