【发布时间】:2022-01-05 22:23:42
【问题描述】:
我正在与 Tensorflow 中有关 Dataset 的 map 方法的细节苦苦挣扎,如 here 所述。例子
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
dataset = dataset.map(lambda x: x + 2)
list(dataset.as_numpy_iterator())
工作正常,但通过应用 map as 来更改元素类型
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
dataset = dataset.map(lambda x: x / 10.0)
list(dataset.as_numpy_iterator())
产生错误信息
TypeError: `x` and `y` must have the same dtype, got tf.int32 != tf.float32.
因为应用的map函数的返回类型与其输入类型不同。为什么会这样?不能改变类型吗?如果是这样,如何将数据集中的元素类型更改为tf.float32,达到预期的效果?
请注意,实际数据集更复杂,但这是说明问题的最小示例。
【问题讨论】:
标签: python tensorflow tensorflow-datasets