具有不同形状的矢量的Tensorflow数据集

时间:2018-04-10 10:21:20

标签: tensorflow vector dataset shape tensor

我正在尝试从可以具有不同长度的矢量(数据列)创建数据集。我目前正在使用以下代码:

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问题解决了从文件中读取时的问题,但是,我明确地定义了数据。

1 个答案:

答案 0 :(得分:0)

你要么自己填充张量,要么使用稀疏张量。

我通常使用稀疏张量。将稀疏张量转换为密集时,可以指定大小应该是什么,并为您完成填充。

这种张量的通常情况是输入字符串,词袋或序列。嵌入操作处理字符串和单词包。序列通常使用与rnn相关的操作进行处理(例如,查看tf.nn.static_rnn

通常,您希望张量在同一批次中最终具有相同的长度,因为矩阵运算需要具有矩阵操作数。

相关问题