tensorflow--模型的保存和提取

参考:

TensorFlow:保存和提取模型
最全Tensorflow模型保存和提取的方法——附实例

  1. 模型的保存会覆盖,后一次保存的模型会覆盖上一次保存的模型。最多保存近5次结果。
  2. 应当保存效果最优时候的模型,而不是训练最后一次的模型。所以应该在每次进行模型性能评估后与保存的目前最后效果比较,如果性能更好则进行模型的保存。
  3. 模型的复用,当你想用别的性能评估指标的时候,不需要再次训练模型来获得指标值,可以提取最优模型直接计算新指标的值。
sess=tf.InteractiveSession()  
sess.run(tf.global_variables_initializer())is_train=False
saver=tf.train.Saver(max_to_keep=3)#训练阶段
if is_train:max_acc=0f=open('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_acc=sess.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(i+1)+', val_acc: '+str(val_acc)+'\n')if val_acc>max_acc:max_acc=val_accsaver.save(sess,'ckpt/mnist.ckpt',global_step=i+1)f.close()#验证阶段
else:model_file=tf.train.latest_checkpoint('ckpt/')saver.restore(sess,model_file)val_loss,val_acc=sess.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()

实操:

说明:

  1. Social Attentional Memory Network 是一个推荐系统的模型,代码中没有模型保存和提取操作,数据量也算是小的,可以下载下来练习一下如何实际操作。
  2. SAMN 是我用这个模型进行的练习,可以参考,代码后面标注 lly 的是我写的或者修改的内容。

步骤:

  1. 先在原代码的主目录的下面建一个文件夹 model 。
  2. 第一次进行训练,进入目录执行 python SAMN.py ,其中参数 is_train = True
    训练完后发现model文件夹下面多了五个模型,最后一次保存的模型为最后模型,出现在第171次迭代的时候,即epoch=170
    在这里插入图片描述
    然后在控制台可以看到,epoch=170时候的评估结果:
    迭代第 166 次的损失为:26.586210:迭代第 167 次的损失为:26.567725:迭代第 168 次的损失为:26.586499:迭代第 169 次的损失为:26.571110:迭代第 170 次的损失为:26.668282:recall--------------------------------------------------------------------------------0.16846666666666665 0.19796666666666665 0.22703333333333334 0.24936666666666668 0.2713666666666667ndcg----------------------------------------------------------------------------------0.103169807535364 0.11131981364691529 0.11824016391770284 0.12317271387061263 0.12777428228959994save epoch  170
  1. 第二次使用保存好的模型,先将 SAMN.py 文件的参数 is_train 改为 False,再执行文件。
    执行完后可以看到控制台输出的评估结果和之前训练的时候的结果一样,证明操作成功。(最优结果我只保留了k=[10, 20, 50]的情况)
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐模型是怎样由窄变宽、越变越深的?

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 邢智皓编 | 兔子酱当前,深度学习推荐模型已经成功应用于推荐、广告、搜索等领域,但在了解它之前,简单回顾传统推荐模型仍是有必要的,原因如下:…

动态规划应用--找零钱

文章目录1. 问题描述2. 问题分析2.1 回溯法求解2.2 DP状态转移方程法2.3 DP状态转移表法1. 问题描述 找零问题,在贪心算法讲过。但是贪心不一定能得出最优解。假设有几种不同币值的硬币v1,v2,.……vn(单位是元)。如果…

玩转算法之面试第九章-动态规划

动态规划: 9-12 斐波那契数列 对重复计算,进行优化,进行记忆化搜索 假设基本的问题已经被解决,依次内推。 动态规划:将原问题拆解成若干个子问题,同时保存子问题的答案,使得每个子问题只求…

领域应用 | 从本体论开始说起——运营商关系图谱的构建及应用

本文转载自公众号:中国联通大数据。联通大数据技术专家闫龙将从“本体论”说起,为大家介绍联通大数据关系图谱的构建与应用。一.本体论万维网之父Tim Berners-Lee教授在1998年将语义网络(Semantic web)带入人类的视线。…

史上最强多线程面试44题和答案:线程锁+线程池+线程同步等

最全BAT必考题答案系列 最全MySQL面试60题和答案 史上最全Spring面试71题与答案 史上最全Redis面试49题(含答案):哨兵复制事务集群持久化等 分布式缓存RedisMemcached经典面试题和答案 最全Java锁详解:独享锁/共享锁公平锁/非公平锁乐观锁…

部门直推!百度大搜索招聘NLP、搜索方向算法工程师!

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术工作职责负责百度搜索排序相关性(Relevance)策略。 职位要求-了解主流机器学习算法。 -优秀的分析问题和解决问题的能力,对解决具有挑战性问题充满激情。 -C/C语言编程&…

POJ 1276 ATM凑钱(动态规划)(未解答)

文章目录1. 题目1.1 题目链接1.2 题目大意1.3 解题思路2. 代码2.1 Accepted代码1. 题目 1.1 题目链接 http://poj.org/problem?id1276 1.2 题目大意 需要凑的钱最多100000,面额最多10种,每种张数最多1000,面额最大不超过1000 1.3 解题思…

论文浅尝 | 为基于知识库的问答构建形式查询生成

论文笔记整理:刘晓臻,东南大学计算机科学与工程学院本科生。Citation: H.Zafar, G. Napolitano, and J. Lehmann. Formal query generation for questionanswering overknowledge bases. ESWC, 2018.https://link.springer.com/content/pdf/10.1007%2F97…

Java多线程系列(十一):ReentrantReadWriteLock的实现原理与锁获取详解

我们继续Java多线程与并发系列之旅,之前我们分享了Synchronized 和 ReentrantLock 都是独占锁,即在同一时刻只有一个线程获取到锁。 然而在有些业务场景中,我们大多在读取数据,很少写入数据,这种情况下,如…

这篇顶会paper,讲述了疫情期间憋疯的你和我

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术编 | 小轶2020年净忙着见证历史了。年初疫情爆发后,大家的生活模式也因为疫情发生了巨变。经历了史上最长假期,躺尸太久,到后来满脑子只想开学/复工。今年KDD会议上有一篇很…

论文浅尝 | Knowledge Vault: 全网规模的知识概率融合方法

论文笔记整理:吴桐桐,东南大学博士生,研究方向为自然语言处理。链接:https://www.cs.ubc.ca/~murphyk/Papers/kv-kdd14.pdf基于机器学习,Knowledge Vault不仅能够从多个来源(文本,表格数据&…

java程序员的必用的9款开发工具

今天推荐java程序员开发利器,包含如如下: 开发环境: Eclipse IntelliJ IDEA IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等&#xff…

动态规划应用--搜索引擎拼写纠错

文章目录1. 字符串相似度1.1 莱文斯坦距离1.2 最长公共子串长度2. 计算编辑距离2.1 莱文斯坦距离2.2 最长公共子串长度3. 搜索引擎拼写纠错4. 练习题在 Trie树那节讲过,利用Trie可以进行关键词提示,节省输入时间。在搜索框中你不小心打错了字&#xff0c…

玩转算法之面试第十章-贪心算法

leetcode 455 分配饼干 尝试将最大的饼干给最贪心的朋友 如果满足&#xff0c;则1 如果不满足&#xff0c;则将最大的饼干给次贪心的朋友&#xff0c;一次类推 试图让最多的小朋友开心 在这里插入代码片 #include<iostream> #include<vector>using namespace …

论文浅尝 | 基于知识库的自然语言理解 04#

本文转载自公众号&#xff1a;知识工场。罗康琦&#xff0c;上海交通大学计算机系2019届博士&#xff0c;研究方向为自然语义理解和知识图谱。2012年获得华中科技大学软件工程学士学位&#xff0c;现就职于京东数据科学实验室&#xff08;Data Science Lab&#xff09;。他曾在…

BERT跨模态之后:占领了视觉常识推理任务榜单TOP 2!

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 小鹿鹿lulu编 | YY前言由于 BERT-like 模型在 NLP 领域上的成功&#xff0c;研究者们开始尝试将其应用到更为复杂的 多模态 任务上。要求模型除文本数据以外&#xff0c;还要接收其他模态的数据&#xf…

常见的算法面试问题以及代码实现

1 时间复杂度分析 一个简单的时间测试代码如下&#xff1a; #include<iostream> #include<cmath> #include<ctime>using namespace std;int main(){for(int x1;x<9;x){int npow(10,x);clock_t startTimeclock();int sum0;for(int i0;i<n;i)sumi;clock…

阿里P8架构师谈:高并发与多线程的关系、区别、高并发的技术方案

什么是高并发&#xff1f; 高并发&#xff08;High Concurrency&#xff09;是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况&#xff0c;主要发生在web系统集中大量访问收到大量请求&#xff08;例如&#xff1a;12306的抢票情况&#xff1b;天猫双十一活动…

LeetCode 1. 两数之和(哈希)

文章目录1. 题目2. 解题1. 暴力解法2. 哈希法3. python3解答1. 题目 题目链接&#xff1a;https://leetcode-cn.com/problems/two-sum/ 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。…

论文浅尝 | TuckER:基于张量分解的知识图谱补全

笔记整理&#xff1a;孙泽群&#xff0c;南京大学计算机科学与技术系&#xff0c;博士研究生。论文链接&#xff1a;https://arxiv.org/abs/1901.09590背景知识图谱是图结构的数据库&#xff0c;以三元组(es, r, eo)的形式存储事实&#xff0c;其中es和eo分别表示主语和宾语实体…