Tensorflow是否简化了计算图?

ben*_*uai 4 tensorflow

我有一个简单的问题,我也在搜索已经安静了一点,但也许我使用了错误的关键字.

Tensorflow如何处理给定的图形?如果有一个简单的图形:

x = tf.constant(1.0,name ='input')

w = tf.constant0.8,name ='weight')

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')

算术语句当然是由计算图形给出的,但是Tensorflow是通过不复制存储器等来节省时间的一种编译和简化方法.那么计算内核的"精简"版本是在CPU或GPU等'设备'上执行的吗?

所以它减少到这样的东西:

y_2 = tf.add(tf.mul(w,x),b,name ='output_1')

也许有人知道一个很好的资源,可以更多地了解Tensorflow如何在引擎盖下运行,而不必深入了解源代码.

非常感谢你提前!

mrr*_*rry 8

TensorFlow包括各种优化,可以简化数据流图.特别是:

  • TensorFlow将应用公共子表达式消除以避免执行冗余计算.在你的例子的情况下,这将没有太大的影响,但TensorFlow将观察到w并且b是相同的常量,并用单个值替换它们.

  • TensorFlow将应用常量传播,以便在每次执行子图时相同的(计算)值只计算一次.在您的示例中,整个表达式是常量,因此TensorFlow将使用与tf.constant()result(1.6)对应的单个值替换它.

  • 如果您使用实验性XLA编译器,TensorFlow将进行更积极的简化,并且可能能够使用包含即时编译代码的单个TensorFlow内核替换子图.如果在您的示例中x为a tf.placeholder(),则可以将剩余的计算编译为具有一个输入和一个输出的单个内核.