我有一个简单的问题,我也在搜索已经安静了一下,但是也许我正在使用错误的关键字。
TensorFlow如何处理给定的图形?如果一个简单的图:
x = tf.constant(1.0,name ='input')
w = tf.constant0.8,name ='strige')
b = tf.constant0.8,name ='bias')
y_1 = tf.mul(w,x,name ='output_1')
y_2 = tf.add(y_1,b,name ='output_1')
算术语句当然是由计算图给出的,但是张力流是通过不复制记忆等来节省时间等来简化并简化它的吗?因此,它是在cpu或gpu等"设备"上执行计算内核的"凝结"版本?
使其还原为类似的东西:
y_2 = tf.add(tf.mul(w,x),b,name ='output_1')
也许有人知道一个很好的资源,可以进一步了解如何确切地在引擎盖下运行,而不会太深入源代码。
非常感谢您!
TensorFlow包含各种优化,可以简化数据流图。特别是:
-
TensorFlow将应用常见的子表达消除,以避免执行冗余计算。在您的示例中,这不会产生太大的效果,但是TensorFlow会观察到
w
和b
是相同的常数,并用单个值替换它们。 -
TensorFlow将应用恒定传播,以便在每个执行子图中相同的(计算)值仅计算一次。在您的示例中,整个表达式都是常数,因此TensorFlow将用与结果相对应的单个
tf.constant()
值替换它(1.6
)。 -
如果您使用实验XLA编译器,则TensorFlow将进行更具侵略性的简化,并且可能能够用单个TensorFlow内核替换子图,其中包含即时编译的代码。如果在您的示例中,
x
是tf.placeholder()
,则可以将计算的其余部分编译为一个输入和一个输出的单个内核。