首页 > 解决方案 > tensorflow 1x 为什么将会话运行优化器保存为变量?

问题描述

我正在从 DataCamp 教程中学习 tensorflow,在最后的训练阶段,我在下面有这段代码。我的问题是线

opt = sess.run(优化器,feed_dict={x:batch_x,y:batch_y})

为什么我们将 sess.run(optimizer, ...) 保存为变量?变量“opt”不再在任何地方使用......关于 tensorflow 的优化器如何在后台工作的一些解释将非常感谢!

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

training_iters = 20
saver = tf.train.Saver()
# tf.reset_default_graph()
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    train_loss = []
    test_loss = []
    train_accuracy = []
    test_accuracy = []
    summary_writer = tf.summary.FileWriter('./Output', sess.graph)

    for i in range(training_iters):
        for batch in range(len(train_X)//batch_size):
            batch_x = train_X[batch*batch_size:min((batch+1)*batch_size,len(train_X))]
            batch_y = train_y[batch*batch_size:min((batch+1)*batch_size,len(train_y))]    

            opt = sess.run(optimizer, feed_dict={x: batch_x, y: batch_y})

            # print(type(opt)) # class 'NoneType'

            loss, acc = sess.run([cost, accuracy], feed_dict={x: batch_x, y: batch_y})
        print("Iter " + str(i) + \
              ", Loss= " + "{:.6f}".format(loss) + \
              ", Training Accuracy= " + "{:.5f}".format(acc))      # prints the loss and training accuracy after each epoch

        print("Optimization Finished!")

        # Calculate accuracy for all 10000 mnist test images
        test_acc, valid_loss = sess.run([accuracy,cost], feed_dict={x: val_X, y: val_y})
        train_loss.append(loss)
        test_loss.append(valid_loss)
        train_accuracy.append(acc)
        test_accuracy.append(test_acc)
        print("Testing Accuracy:","{:.5f}".format(test_acc))

    saved_path = saver.save(sess, './my-model', global_step=training_iters)    

    summary_writer.close()

标签: tensorflowoptimization

解决方案


推荐阅读