通过 map 方法更改类型
Change of type via map method
我正在努力解决 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
应用为
来更改元素类型
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函数的return类型与其输入类型不一样。为什么会这样?不能改变类型吗?如果是这样,我怎样才能将数据集中的元素类型更改为 tf.float32
?
请注意,实际数据集更为复杂,但这是说明问题的最小示例。
我终于自己找到了。该问题与 map
完全无关,但对于除法,需要显式转换。
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
dataset = dataset.map(lambda x: tf.cast(x, tf.float32) / 10.0)
list(dataset.as_numpy_iterator())
我正在努力解决 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
应用为
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函数的return类型与其输入类型不一样。为什么会这样?不能改变类型吗?如果是这样,我怎样才能将数据集中的元素类型更改为 tf.float32
?
请注意,实际数据集更为复杂,但这是说明问题的最小示例。
我终于自己找到了。该问题与 map
完全无关,但对于除法,需要显式转换。
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
dataset = dataset.map(lambda x: tf.cast(x, tf.float32) / 10.0)
list(dataset.as_numpy_iterator())