Tensorflow未保存所需的模型

时间:2018-05-20 22:02:42

标签: tensorflow

我要求tensorflow在每个纪元中每100次迭代保存模型,以下是我的代码。但经过900次迭代后,只保存了第500,600,700,800,900次迭代的训练模型。

with tf.Session(config = tf.ConfigProto(log_device_placement = True)) as sess:

    sess.run(init_op)

    for i in range(args.num_epochs):
        start_time = time.time()
        k = 0
        acc_train = 0
        # initialize the iterator to train_dataset
        sess.run(train_init_op)
        while True:
            try:
                accu, l, _ = sess.run([accuracy, loss, optimizer], feed_dict = {training: True})
                k += 1
                acc_train += accu
                if k % 100 == 0:
                    print('Epoch: {}, step: {}, training loss: {:.3f}, training accuracy: {:.2f}%'.format(i, k, l, accu * 100))
                    saver.save(sess, args.saved_model_path, global_step = (i+1) * k)
            except tf.errors.OutOfRangeError:
                break

以下是训练准确度:

时代:0,步数:100,训练损失:0.669,训练准确率:59.38%

时代:0,步数:200,训练损失:0.806,训练准确度:54.69%

时代:0,步数:300,训练损失:0.781,训练准确度:57.81%

时代:0,步骤:400,训练损失:0.725,训练准确度:64.06%

时代:0,步数:500,训练损失:0.347,训练准确度:89.06%

时代:0,步数:600,训练损失:0.193,训练准确度:89.06%

时代:0,步数:700,训练损失:0.003,训练准确度:100.00%

时代:0,步骤:800,训练损失:0.190,训练准确度:98.44%

时代:0,步数:900,训练损失:0.009,训练准确度:100.00%

我的问题是为什么tensorflow没有为第100次,第200次,第300次,第400次迭代保存模型?谢谢!

1 个答案:

答案 0 :(得分:2)

确实如此,但我猜测您创建的Saver实例的默认max_keep值为5,因此它会在创建最后5个时覆盖它们。要保持10,请将保护程序创建行更改为

saver = tf.train.Saver(max_keep=10)

如果您不想保存每个人,您可能还想使用keep_checkpoint_every_n_hours参数。