【问题标题】:Is my understanding of tensorflow v1 session correct?我对 tensorflow v1 会话的理解是否正确?
【发布时间】:2022-01-22 15:51:08
【问题描述】:

我有以下代码:

self.sess = tf.Session()
_, self.cost = self.sess.run(
    [self._train_op, self.loss],
    feed_dict={self.s: batch_memory[:, :self.n_features],
    self.q_target: q_target}
)

我理解的执行顺序是:

self.cost=self.sess.run(
    [self.loss],feed_dict={self.s: batch_memory[:, :self.n_features], self.q_target: q_target})
_=self.sess.run([self._train_op],feed_dict={self.loss:self.cost})

我的理解正确吗?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    执行顺序是连续的。图表的创建顺序与在会话中定义操作的顺序相同。

    简单示例:

    import tensorflow as tf
    x = 4
    y = 5
    add_op = tf.add(x, y, name='Add')
    mul_op = tf.multiply(x, y, name='Multiply')
    pow_op = tf.pow(add_op, mul_op, name='Power')
    useless_op = tf.multiply(x, add_op, name='Useless')
    
    with tf.Session() as sess:
        pow_out, useless_out = sess.run([pow_op, useless_op]) 
    

    当获取pow_op操作时,它会首先运行add_op和mul_op来得到它们的输出张量,然后在它们上运行pow_op来计算需要的输出值。换句话说,useless_op 不会被执行,因为它的输出张量没有用于执行pow_op 操作。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 2021-10-29
      • 2011-10-22
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多