TensorFlow Saver类 保存模型与恢复模型

2024-06-22 06:58

本文主要是介绍TensorFlow Saver类 保存模型与恢复模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因工程需求,今天想找一下Saver类如何保存部分参数或者是恢复部分参数,一直没找到有效的帖子,所以自己来总结性的写一个吧

常规的保存与恢复如下

saver = tf.train.Saver(tf.trainable_variables(), max_to_keep=3) 定义一个Saver对象 (max_to_keep指我们总共保存多少个模型)
saver.save(sess, 'model/model.ckpt', global_step=step)(step是指当前训练到哪一步了,只是为了区分名字,会组装到ckpt文件名里去)

每次保留都会生成三个文件,data文件是权重文件,index是一个索引文件,meta文件保留的图的结构

恢复图结构:

saver=tf.train.import_meta_graph('model.ckpt-1000.meta')(图结构就进入了sess了)

保留部分参数

v1 = tf.Variable(1. , name="v1")
v2 = tf.Variable(2. , name="v2")
a = tf.add(v1, v2)
saver = tf.train.Saver("v1":v1,"v2": v2}) 
saver.save(sess, 'model/model.ckpt', global_step=step)

恢复部分参数

saver = tf.train.Saver({"v1": u1, "v2": u2})
with tf.Session() as sess:  saver.restore(sess, "./Model/model.ckpt")  

把model.ckpt中u1 u2的值分别赋给v1 v2,以便在新模型中使用,恢复部分参数更多是使用下面的一个方法


扩展原始模型

graph = tf.train.import_meta_graph(dir + '/vgg/results/vgg-16.meta')
graph = tf.get_default_graph()
output_conv =vgg_graph.get_tensor_by_name('conv1_2:0')
output_conv_sg = tf.stop_gradient(output_conv)     #从此处进行截断,进行后续新的处理
# Build further operations
output_conv_shape = output_conv_sg.get_shape().as_list()
W1=tf.get_variable('W1',shape[1,1,output_conv_shape[3],32],initializer=tf.random_normal_initializer(stddev=1e-1))
z1 = tf.nn.conv2d(output_conv_sg, W1, strides=[1, 1, 1, 1], padding='SAME') 
a = tf.nn.relu(z1)

这样就可以在别人训练好的模型的基础上采用一部分底层的东西运用到自己的模型上,因为像一个训练好的模型最开始的几层提取的都是边边角角的信息,在别的同样的自然场景下还是可以用这几层已经训练好的权重,会更快的收敛,加快训练速度




这篇关于TensorFlow Saver类 保存模型与恢复模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083600

相关文章

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行