和其他人一样,我有一个优化器和成本计算器如下:
with tf.name_scope("calc_cost"):
cost_mini_batch = compute_cost(ZL, Y_mini_batch, parameters, lambd,
mb_size=tf.cast(X_mini_batch.shape[1], dtype=tf.float32))
with tf.name_scope("train"):
optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(cost_mini_batch)
在我的训练执行中,我运行以下内容......
_ , minibatch_cost = sess.run([optimizer, cost_mini_batch])
但我对于如何阅读本声明感到有点困惑。 由于优化器无论如何运行cost_mini_batch,我想知道这个语句是否会导致cost_mini_batch运行两次的问题?我感兴趣的实际值(用于记录目的)是minibatch_cost。 (我有点希望看到它正在减少。)但我显然同时希望训练算法运行优化器。
我想知道有没有比我更多经验的人可以帮我正确地阅读sess.run(...)语句?我假设cost_mini_batch在这里没有运行两次。例如,什么会导致它运行两次?
答案 0 :(得分:1)
Tensorflow 工作流程为:
1. build the Graph
2. run the graph in Session
作为您的代码,您在图表中定义了cost_mini_batch
和optimizer
两个元素,之后,您调用会话来运行此<强>图形即可。实际上它们只会在您调用sess.run
时运行。