TensorFlow中不同类型的分区

Dut*_*taA 6 python tensorflow

我对TensorFlow很新.所以我在这里从TensorFlow中看到了这种不同类型的分裂.代码印在下面:

a = tf.constant([2, 2], name='a')
b = tf.constant([[0, 1], [2, 3]], name='b')
with tf.Session() as sess:
    print(sess.run(tf.div(b, a)))             ? [[0 0] [1 1]]
    print(sess.run(tf.divide(b, a)))          ? [[0. 0.5] [1. 1.5]]
    print(sess.run(tf.truediv(b, a)))         ? [[0. 0.5] [1. 1.5]]
    print(sess.run(tf.floordiv(b, a)))        ? [[0 0] [1 1]]
    print(sess.run(tf.realdiv(b, a)))         ? # Error: only works for real values
    print(sess.run(tf.truncatediv(b, a)))     ? [[0 0] [1 1]]
    print(sess.run(tf.floor_div(b, a)))       ? [[0 0] [1 1]]
Run Code Online (Sandbox Code Playgroud)

由于我是编程语言的菜鸟,我无法理解他们的一些文档,包括"计算分区python风格"等等.如果有人可以解释所有和实际方面之间的差异,我将不胜感激.

ope*_*ark 12

tf.div - 强制执行python v2除法语义,例如,如果两个参数都是整数,则使用整数除法(也称为"floor division"),如果参数是float或复数,则使用正常的浮点除法.如果两个参数都是整数,则结果为整数,否则为float.

tf.div(7, 5)
# >>> 1
tf.div(-7, 5)
# >>> -2
tf.div(7.0, 5.0)
# >>> 1.4
Run Code Online (Sandbox Code Playgroud)

tf.truediv - 强制执行python v3除法语义,例如,如果两个参数都是整数,则它们首先被转换为float类型(文档网页指定将哪种类型的整数转换为哪种类型的float)然后应用正常的浮点除法:

tf.truediv(7, 5)
# >>> 1.4
tf.truediv(-7, 5)
# >>> -1.4
tf.truediv(7.0, 5.0)
# >>> 1.4
Run Code Online (Sandbox Code Playgroud)

tf.divide(x,y)本质上是调用x/y,因此结果取决于/执行除法的环境中运算符的行为.

tf.floordivtf.floor_div返回相同的结果tf.div如果两个参数是整数,tf.floor(tf.div(x,y))如果两个参数是浮点数:

tf.floordiv(7, 5)
# >>> 1
tf.floordiv(-7, 5)
# >>> -2
tf.floordiv(7.0, 5.0)
# >>> 1.0
tf.floordiv(-7.0, 5.0)
# >>> -2.0
Run Code Online (Sandbox Code Playgroud)

tf.realdiv - 正常浮点除法,这是tf.truediv在转换其参数后调用的操作.

tf.truncatediv - 将除法结果入为零:

tf.truncatediv(7, 5)
# >>> 1
tf.truncatediv(-7, 5)
# UNLIKE tf.floordiv and tf.div
# >>> -1
Run Code Online (Sandbox Code Playgroud)