python中的__rtruediv__和__rfloordiv__是怎么一回事?

truediv,__floordiv__是用于除法的。 那__rtruediv__和__rfloordiv__又有什么用呢?

  1. tf.truediv 按元素除法x / y(使用Python 3除法运算符语义)。

注意:首选使用Tensor运算符或遵循Python除法运算符语义的tf.divide。此函数强制使用Python 3除法运算符语义,其中所有整数参数首先转换为浮点类型。 此op由Python 3中的正常x / y除法和带有__future__ import division的Python 2.7生成。 如果想要向下舍入整数除法,请使用x // y或tf.floordiv。x和y必须具有相同的数字类型。 如果输入是浮点,则输出将具有相同的类型。 如果输入是整数,则输入将转换为float32 for int8和int16,float64转换为int32和int64(匹配Numpy的行为)。

tf.truediv(

    x,

    y,

    name=None

)

 

参数说明:x:张量。数值类型,作为分子。

y: 张量。数值类型,作为分母。

name:操作的名字,可选。

 

返回值:x/y,浮点型。
a=tf.constant(2)

b=tf.constant(5)

addOp=tf.add(a,b)

sess=tf.Session()

init=tf.global_variables_initializer()

sess.run(init)

 

truediv_op=tf.truediv(a,b)

print(sess.run(truediv_op))

2.tf.floordiv 针对浮点数的除法向下取整。

与整数的tf.div(x,y)相同,但对浮点参数使用tf.floor(tf.div(x,y)),以便结果始终为整数(尽管可能是表示为浮点的整数))。 此操作由Python 3中的x // y floor division和带有__future__ import division的Python 2.7生成。

请注意,为了提高效率,floordiv对负数使用C语法(与Python和Numpy不同)。

x和y必须具有相同的类型,结果也将具有相同的类型。

tf.floordiv(
    x,
    y,
    name=None
)

参数说明:

x:实数数值类型的张量,作为分子

y:作为分母

name:操作名

floordiv_op=tf.floordiv(a,b)

print(sess.run(floordiv_op)) #0

floordiv_op1=tf.floordiv(b,a)

print(sess.run(floordiv_op1)) #2