我正在尝试从可以具有不同长度的矢量(数据列)创建数据集。我目前正在使用以下代码:
import tensorflow as tf
data = [[1,2,3,4,5,6],[7,8,9,10]]
shapes = [[3,2],[2,2]]
classes = [0,1]
dataset = tf.data.Dataset.from_tensor_slices(
{"data": tf.constant(data),
"shape": tf.constant(shapes),
"class": tf.constant(classes)})
iterator = dataset.make_one_shot_iterator().get_next()
with tf.Session() as sess:
x = sess.run(dataset)
print(x)
然而,我收到此错误:
Traceback (most recent call last):
File "test2.py", line 7, in <module>
{"data": tf.constant(data),
File "/Users/[username]/Documents/University/Project/Application/env/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 214, in constant
value, dtype=dtype, shape=shape, verify_shape=verify_shape))
File "/Users/[username]/Documents/University/Project/Application/env/lib/python3.6/site-packages/tensorflow/python/framework/tensor_util.py", line 442, in make_tensor_proto
_GetDenseDimensions(values)))
ValueError: Argument must be a dense tensor: [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10]] - got shape [2], but wanted [2, 6].
设置可接受不同长度矢量的数据集的正确方法是什么? This问题解决了从文件中读取时的问题,但是,我明确地定义了数据。
答案 0 :(得分:0)
你要么自己填充张量,要么使用稀疏张量。
我通常使用稀疏张量。将稀疏张量转换为密集时,可以指定大小应该是什么,并为您完成填充。
这种张量的通常情况是输入字符串,词袋或序列。嵌入操作处理字符串和单词包。序列通常使用与rnn相关的操作进行处理(例如,查看tf.nn.static_rnn)
通常,您希望张量在同一批次中最终具有相同的长度,因为矩阵运算需要具有矩阵操作数。