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

问题描述 投票:1回答:1

Docs

x:张量。必须是以下类型之一:int32,int64,bfloat16,一半,float32,float64。

示例:

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]
python tensorflow modulo unsigned-integer
1个回答
0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.