首页 文章

Tensorflow是否简化了计算图?

提问于
浏览
4

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

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是如何在引擎盖下运行的,而不必深入了解源代码 .

非常感谢你提前!

1 回答

  • 8

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

    • TensorFlow将应用common subexpression elimination以避免执行冗余计算 . 在您的示例中,这不会产生太大影响,但TensorFlow将观察到 wb 是相同的常量,并用单个值替换它们 .

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

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

相关问题