ValueError:无法将非矩形Python序列转换为Tensor

时间:2019-05-25 12:51:11

标签: python numpy tensorflow

我想使用tf.convert_to_tensor将列表更改为张量,数据如下:

data=[

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   1., 0., 0.]), 
array([0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.]), 
array([0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
   0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
   0., 0., 0.]), 
array([0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])
    ]

它不起作用,系统提示:

ValueError:无法将非矩形Python序列转换为Tensor。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

不能。就像错误消息说的那样,TensorFlow数组沿一维不能具有不同的大小。尝试使用TensorFlow数组列表或数据集api。

答案 1 :(得分:1)

我不确定TensorFlow 1中是否存在它们,但TensorFlow 2.0支持RaggedTensors,该文档将其描述为“ ...等价于嵌套可变长度列表的TensorFlow。”

我认为将您的数据转换为RaggedTensors并不重要。它甚至可能像这样简单:

data_tensor = tf.ragged.constant(data)