Windows环境下TensorFlow输入形状不匹配ValueError问题求助
问题解决方法
核心问题是输入数据的维度顺序与模型占位符要求不匹配:模型期望输入形状为(batch_size, 66, 200, 3)(即[批量数, 图像高度, 图像宽度, 通道数]),但实际传入的数据是(100,200,66,3),图像的高度和宽度维度顺序颠倒了。
以下是分文件的修改方案:
1. 修改driving_data.py(数据加载层)
找到图像加载并转换为numpy数组的代码段,添加维度交换逻辑,将图像从(宽度, 高度, 通道数)转为(高度, 宽度, 通道数):
# 假设原加载代码示例 from PIL import Image import numpy as np img = np.array(Image.open(image_path)) # 添加这一行交换维度,将(200,66,3)转为(66,200,3) img = img.transpose((1, 0, 2))
如果用OpenCV加载图像(默认形状为(高度, 宽度, 通道数)但颜色通道是BGR),若仍出现维度问题,检查是否误交换过维度,调整为目标形状即可。
2. 验证数据形状(可选但推荐)
在driving_data.py的batch生成函数末尾,添加打印语句确认形状:
print("当前batch图像形状:", images.shape) # 应输出(100,66,200,3)
运行train.py前,确保输出符合模型要求的形状。
3. 确认model.py的占位符定义(无需修改,仅验证)
检查model.py中输入占位符的定义,确认是正确的目标形状:
x = tf.placeholder(tf.float32, shape=(None, 66, 200, 3))
若此处定义错误也会导致维度不匹配,但根据报错信息,此处定义是正确的。
内容的提问来源于stack exchange,提问作者MEZZ0
相关产品推荐
相关产品推荐

