(作者:陈玓玏)
一、 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])