net网站开发JD,网站建设的组织机构,一个网站通常包含多个网页吗,可以做长页海报的网站参考#xff1a;
TensorFlow#xff1a;保存和提取模型 最全Tensorflow模型保存和提取的方法——附实例
模型的保存会覆盖#xff0c;后一次保存的模型会覆盖上一次保存的模型。最多保存近5次结果。应当保存效果最优时候的模型#xff0c;而不是训练最后一次的模型。所以…参考
TensorFlow保存和提取模型 最全Tensorflow模型保存和提取的方法——附实例
模型的保存会覆盖后一次保存的模型会覆盖上一次保存的模型。最多保存近5次结果。应当保存效果最优时候的模型而不是训练最后一次的模型。所以应该在每次进行模型性能评估后与保存的目前最后效果比较如果性能更好则进行模型的保存。模型的复用当你想用别的性能评估指标的时候不需要再次训练模型来获得指标值可以提取最优模型直接计算新指标的值。
sesstf.InteractiveSession()
sess.run(tf.global_variables_initializer())is_trainFalse
savertf.train.Saver(max_to_keep3)#训练阶段
if is_train:max_acc0fopen(ckpt/acc.txt,w)for i in range(100):batch_xs, batch_ys mnist.train.next_batch(100)sess.run(train_op, feed_dict{x: batch_xs, y_: batch_ys})val_loss,val_accsess.run([loss,acc], feed_dict{x: mnist.test.images, y_: mnist.test.labels})print(epoch:%d, val_loss:%f, val_acc:%f%(i,val_loss,val_acc))f.write(str(i1), val_acc: str(val_acc)\n)if val_accmax_acc:max_accval_accsaver.save(sess,ckpt/mnist.ckpt,global_stepi1)f.close()#验证阶段
else:model_filetf.train.latest_checkpoint(ckpt/)saver.restore(sess,model_file)val_loss,val_accsess.run([loss,acc], feed_dict{x: mnist.test.images, y_: mnist.test.labels})print(val_loss:%f, val_acc:%f%(val_loss,val_acc))
sess.close()实操
说明
Social Attentional Memory Network 是一个推荐系统的模型代码中没有模型保存和提取操作数据量也算是小的可以下载下来练习一下如何实际操作。SAMN 是我用这个模型进行的练习可以参考代码后面标注 lly 的是我写的或者修改的内容。
步骤
先在原代码的主目录的下面建一个文件夹 model 。第一次进行训练进入目录执行 python SAMN.py 其中参数 is_train True。 训练完后发现model文件夹下面多了五个模型最后一次保存的模型为最后模型出现在第171次迭代的时候即epoch170 然后在控制台可以看到epoch170时候的评估结果 迭代第 166 次的损失为:26.586210迭代第 167 次的损失为:26.567725迭代第 168 次的损失为:26.586499迭代第 169 次的损失为:26.571110迭代第 170 次的损失为:26.668282recall--------------------------------------------------------------------------------0.16846666666666665 0.19796666666666665 0.22703333333333334 0.24936666666666668 0.2713666666666667ndcg----------------------------------------------------------------------------------0.103169807535364 0.11131981364691529 0.11824016391770284 0.12317271387061263 0.12777428228959994save epoch 170第二次使用保存好的模型先将 SAMN.py 文件的参数 is_train 改为 False再执行文件。 执行完后可以看到控制台输出的评估结果和之前训练的时候的结果一样证明操作成功。(最优结果我只保留了k[10, 20, 50]的情况)