具有不同形状向量的 Tensorflow 数据集
Tensorflow dataset with vectors of differing shapes
我正在尝试从具有不同长度(数据列)的向量创建数据集。我目前正在使用以下代码:
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 问题解决了从文件读取时的问题,但是,我明确定义了数据。
您要么自己填充张量,要么使用稀疏张量。
我通常使用稀疏张量。当您将稀疏张量转换为密集张量时,您可以指定大小应该是多少并为您完成填充。
这种张量的通常情况是输入字符串、词袋或序列。嵌入操作处理字符串和词袋。序列通常用 rnn 相关操作处理(例如查看 tf.nn.static_rnn)
通常您希望张量最终在同一批次中具有相同的长度,因为矩阵运算需要有矩阵操作数。
我正在尝试从具有不同长度(数据列)的向量创建数据集。我目前正在使用以下代码:
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 问题解决了从文件读取时的问题,但是,我明确定义了数据。
您要么自己填充张量,要么使用稀疏张量。
我通常使用稀疏张量。当您将稀疏张量转换为密集张量时,您可以指定大小应该是多少并为您完成填充。
这种张量的通常情况是输入字符串、词袋或序列。嵌入操作处理字符串和词袋。序列通常用 rnn 相关操作处理(例如查看 tf.nn.static_rnn)
通常您希望张量最终在同一批次中具有相同的长度,因为矩阵运算需要有矩阵操作数。