我要求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次迭代保存模型?谢谢!
答案 0 :(得分:2)
确实如此,但我猜测您创建的Saver
实例的默认max_keep
值为5,因此它会在创建最后5个时覆盖它们。要保持10,请将保护程序创建行更改为
saver = tf.train.Saver(max_keep=10)
如果您不想保存每个人,您可能还想使用keep_checkpoint_every_n_hours
参数。