Tensorflow:为什么Modulo(即tf.math.floormod)不支持无符号整数?



来自文档:

x:一个张量。必须是以下类型之一:int32、int64、 浮点16,一半,浮点32,浮点64。

例:

x = tf.math.mod(tf.constant(4, tf.dtypes.uint64), tf.constant(2, tf.dtypes.uint64))
[...]
NotFoundError: Could not find valid device for node.
Node:{{node FloorMod}}
All kernels registered for op FloorMod :
device='XLA_CPU'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_INT64, DT_BFLOAT16, DT_HALF]
device='XLA_CPU_JIT'; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_INT64, DT_BFLOAT16, DT_HALF]
device='CPU'; T in [DT_DOUBLE]
device='CPU'; T in [DT_FLOAT]
device='CPU'; T in [DT_INT64]
device='CPU'; T in [DT_INT32]
[Op:FloorMod]

正如您在文档中指出的那样,到目前为止,它们仅支持这些允许的数据类型。

int32, int64, bfloat16, half, float32, float64.

不过,如果要传递 uint64 值,则需要使用 numPy 将其从 uint64 转换为 int64,并将 int64 值传递给tf.math.mod,如下所示。

import numpy
input = numpy.int64( numpy.uint64(your_number))

您可以在Github中提出相同的问题。

最新更新