【发布时间】:2020-01-05 19:31:36
【问题描述】:
我正在尝试将 tf.data.Dataset.map 方法应用于我的数据集,在使用 Tensorflow 2 的图像字幕上下文中。
运行以下代码
def map_func(img_name, cap_train, target):
img_tensor = np.load(img_name+'.npy')
return img_tensor, cap_train, target
train = [
[
'image_1.jpg',
[[0,1,2], [1,2,3], [2,3,4]],
[[3], [4], [5]]
],
[
'image_2.jpg',
[[5,6,7], [6,7,8], [7,8,9]],
[[8], [9], [10]]
],
...
]
dataset = tf.data.Dataset.from_tensor_slices(train)
# Use map to load the numpy files in parallel
dataset = dataset.map(lambda img_name, cap_train, target: tf.numpy_function(
map_func, [img_name, cap_train, target], [tf.float32, tf.int32, tf.int32]),
num_parallel_calls=tf.data.experimental.AUTOTUNE)
将返回ValueError: Can't convert Python sequence with mixed types to Tensor. 我猜这与数据集中的每个元素的形式为[image, list of integers, list of integers] 的事实有关,但我使用tf.float32, tf.int32, tf.int32 映射它,它没有考虑嵌套列表。
我应该如何修改dataset.map() 方法以使用上述train 数据集?
谢谢
【问题讨论】:
-
您阅读过文档吗?有什么指南或教程吗?
-
是的,是的。我正在尝试按照tensorflow.org/tutorials/text/image_captioning 上的教程进行操作,但做了一些更改。
标签: python tensorflow neural-network tensorflow2.0