使用tf.convert_to_tensor 时遇到value error 怎么解决

来源:互联网 发布:淘宝店铺合作协议书 编辑:程序博客网 时间:2024/06/05 12:16

问题描述

最近写tensorflow 程序,使用PIL读取图片后转存为numpy 数组,然后创建batch数据时使用的是list,即,list元素是array,然而在将这个list转换为tensor时,出现了这样的问题:

....-got shape [64, 224, 224, 3], but wanted [64].

函数描述

convert_to_tensor(    value,    dtype=None,    name=None,    preferred_dtype=None)

这个函数value接受的参数包括Tensor对象, numpy array, Python list, 和Python scalar.

探究

这么简单的函数怎么会出问题呢?官方手册里给出了可能的错误:runtime error 和 type error似乎都不对症。
于是乎也只能是怀疑这种list+array的混搭模式无法正常转换成tensor了,从前边的错误提示也可以看出来程序认为我想要的是[64],一维的,因为我的list 有64个元素,而实际结果却是四维的。

试验

shell 中进行测试:

python>>>import tensorflow as tf>>>import numpy as np>>>a=np.numpy([1,2,3])>>>b=[a]>>>c=tf.convert_to_tensor(b)

然后获得了同样的错误:

ValueError: Argument must be a dense tensor: [array([1,2,3])]- got shape [1,3], but wanted [1].

解决办法

找到病因就好对症下药了,将list+array转换成纯list 或者纯array 就好了。
我使用的后者,强制转换:

>>>b=np.array(b)>>>c=tf.convert_to_tensor(b)