我有一长串整数列表(代表句子,每个大小不同),我想使用 tf.data 库提供这些列表。每个列表(列表的列表)都有不同的长度,我收到一个错误,我可以在此处重现:
t = [[4,2], [3,4,5]]
dataset = tf.data.Dataset.from_tensor_slices(t)
我得到的错误是:
ValueError: Argument must be a dense tensor: [[4, 2], [3, 4, 5]] - got shape [2], but wanted [2, 2].
有没有办法做到这一点?
编辑1:为了清楚起见,我不想填充列表的输入列表(它是包含超过一百万个元素的句子列表,长度各不相同)我想使用 tf.data 库来提供正确的方法是,具有不同长度的列表的列表。
您可以使用tf.data.Dataset.from_generator() https://www.tensorflow.org/api_docs/python/tf/data/Dataset#from_generator将任何可迭代的 Python 对象(如列表的列表)转换为Dataset
:
t = [[4, 2], [3, 4, 5]]
dataset = tf.data.Dataset.from_generator(lambda: t, tf.int32, output_shapes=[None])
iterator = dataset.make_one_shot_iterator()
next_element = iterator.get_next()
with tf.Session() as sess:
print(sess.run(next_element)) # ==> '[4, 2]'
print(sess.run(next_element)) # ==> '[3, 4, 5]'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)