ValueError: could not convert string to float: ‘\ufeff50’及ValueError: Cannot feed value of shape错误

  • Post author:
  • Post category:其他



(作者:陈玓玏)



一、 ValueError: could not convert string to float: ‘\ufeff50’错误

错误场景:使用

tensorflow的tf.contrib.learn.datasets.base.load_csv_without_header读取csv文件

时,出现错误

**ValueError: could not convert string to float: '\ufeff50'**

可能的原因:可能是因为你的数据中有一些空白格或者字符串。

解决方案:最好确保文件不该有数据的地方是没有数据的,我把读取的csv周边的一圈没有数据的部分都删除一遍之后,错误就消失了。虽然肉眼不可见,但可能存在空格或者隐藏的单元格。



二、 ValueError: Cannot feed value of shape (100,) for Tensor ‘Placeholder_19:0’, which has shape ‘(?, 1)’错误

错误场景:用tensorflow建模 时,通过shuffle_batch从csv文件中读取数据,并打乱,生成样本batch和标签batch,但是通过预测结果y和标签计算预测精度时,出现错误

ValueError: Cannot feed value of shape (100,) for Tensor 'Placeholder_19:0', which has shape '(?, 1)'

可能的原因:使用train_step.run来跑模型时,特征和label都是二位numpy.array,而我用shuffle_batch读取并由sess.run获得的特征是二维array,label是一维的,所以出现了维度问题。

解决方案:需要人为转换一下,将一维label转换为二维label,保证一个样本一行,无论特征还是label,问题得以解决。

具体代码如下:

原来的label:
[0,1,0,0,1]
需要的label:
[[0],
 [1],
 [0],
 [0],
 [1]]

转换:
new_label = []
for i in label:
     new_label.append([i])



版权声明:本文为weixin_39750084原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。