TensorFlow喂入数据形状不匹配报错求助(Kaggle泰坦尼克任务)
解决泰坦尼克预测任务中的TensorFlow维度不匹配报错
嘿,这个问题我之前踩过坑!咱们来快速搞定它:
报错根源
你遇到的 ValueError: Cannot feed value of shape (891,) for Tensor 'Placeholder_37:0', which has shape '(?, 1)' 核心是数据维度不匹配:
- 你定义的Y占位符
shape=[None, 1]要求输入是二维数组(行数任意,固定1列) - 但你通过
train_y_data = train.loc[:, "Survived"]获取的是pandas Series,属于一维数组(形状为(891,)),两者维度对不上,所以TensorFlow抛出了错误。
快速修复方案
只需要把一维的标签数据转换成二维结构就行,最简单的方式是用reshape(-1, 1):
修改你的标签提取代码:
# 原代码 # train_y_data = train.loc[:, "Survived"] # 修改后 train_y_data = train.loc[:, "Survived"].values.reshape(-1, 1)
.values将pandas Series转换为numpy数组.reshape(-1, 1)让数组自动适配现有行数(这里是891),强制转为1列的二维结构,最终形状会变成(891, 1),完美匹配Y占位符的要求。
验证修改效果
你可以加一行代码确认形状是否正确:
print(train_y_data.shape) # 输出应为 (891, 1)
这样再运行训练循环,维度不匹配的报错就会消失啦!
内容的提问来源于stack exchange,提问作者정등혁
相关产品推荐
相关产品推荐

