save——model模块保存和载入使用简单例子
https://www.w3xue.com/exp/article/201812/10995.html
=====1====实践模型存入
import tensorflow as tf
from tensorflow import saved_model as sm
# 首先定义一个极其简单的计算图
X = tf.placeholder(tf.float32, shape=(3, ))
scale = tf.Variable([10, 11, 12], dtype=tf.float32)
y = tf.multiply(X, scale)
# 在会话中运行
with tf.Session() as sess:
sess.run(tf.initializers.global_variables())
value = sess.run(y, feed_dict={X: [1., 2., 3.]})
print(value) # 准备存储模型
path = '/home/×××/tf_model/model_1'
builder = sm.builder.SavedModelBuilder(path) # 构建需要在新会话中恢复的变量的 TensorInfo protobuf
X_TensorInfo = sm.utils.build_tensor_info(X)
scale_TensorInfo = sm.utils.build_tensor_info(scale)
y_TensorInfo = sm.utils.build_tensor_info(y)
# 构建 SignatureDef protobuf
SignatureDef = sm.signature_def_utils.build_signature_def(
inputs={'input_1': X_TensorInfo, 'input_2': scale_TensorInfo},
outputs={'output': y_TensorInfo},
method_name='what'
)
# 将 graph 和变量等信息写入 MetaGraphDef protobuf
# 这里的 tags 里面的参数和 signature_def_map 字典里面的键都可以是自定义字符串,TensorFlow 为了方便使用,不在新地方将自定义的字符串忘记,可以使用预定义的这些值
builder.add_meta_graph_and_variables(sess, tags=[sm.tag_constants.TRAINING],
signature_def_map={sm.signature_constants.CLASSIFY_INPUTS: SignatureDef}
)
# 将 MetaGraphDef 写入磁盘
builder.save() =====222===模型导入 import tensorflow as tf
from tensorflow import saved_model as sm
# 需要建立一个会话对象,将模型恢复到其中
with tf.Session() as sess:
path = '/home/×××/tf_model/model_1'
MetaGraphDef = sm.loader.load(sess, tags=[sm.tag_constants.TRAINING], export_dir=path)
# 解析得到 SignatureDef protobuf
SignatureDef_d = MetaGraphDef.signature_def
SignatureDef = SignatureDef_d[sm.signature_constants.CLASSIFY_INPUTS]
# 解析得到 3 个变量对应的 TensorInfo protobuf
X_TensorInfo = SignatureDef.inputs['input_1']
scale_TensorInfo = SignatureDef.inputs['input_2']
y_TensorInfo = SignatureDef.outputs['output']
# 解析得到具体 Tensor
# .get_tensor_from_tensor_info() 函数中可以不传入 graph 参数,TensorFlow 自动使用默认图
X = sm.utils.get_tensor_from_tensor_info(X_TensorInfo, sess.graph)
scale = sm.utils.get_tensor_from_tensor_info(scale_TensorInfo, sess.graph)
y = sm.utils.get_tensor_from_tensor_info(y_TensorInfo, sess.graph)
print(sess.run(scale))
print(sess.run(y, feed_dict={X: [3., 2., 1.]}))
# 输出
[10. 11. 12.]
[30. 22. 12.]
========11111======实践模型存入(无格式,代码没对齐)
import tensorflow as tf
from tensorflow import saved_model as sm
# 首先定义一个极其简单的计算图
X = tf.placeholder(tf.float32, shape=(3, ))
scale = tf.Variable([10, 11, 12], dtype=tf.float32)
y = tf.multiply(X, scale)
# 在会话中运行
with tf.Session() as sess:
sess.run(tf.initializers.global_variables())
value = sess.run(y, feed_dict={X: [1., 2., 3.]})
print(value)
# 准备存储模型
path = '/home/×××/tf_model/model_1'
builder = sm.builder.SavedModelBuilder(path)
# 构建需要在新会话中恢复的变量的 TensorInfo protobuf
X_TensorInfo = sm.utils.build_tensor_info(X)
scale_TensorInfo = sm.utils.build_tensor_info(scale)
y_TensorInfo = sm.utils.build_tensor_info(y)
# 构建 SignatureDef protobuf
SignatureDef = sm.signature_def_utils.build_signature_def(
inputs={'input_1': X_TensorInfo, 'input_2': scale_TensorInfo},
outputs={'output': y_TensorInfo},
method_name='what'
)
# 将 graph 和变量等信息写入 MetaGraphDef protobuf
# 这里的 tags 里面的参数和 signature_def_map 字典里面的键都可以是自定义字符串,TensorFlow 为了方便使用,不在新地方将自定义的字符串忘记,可以使用预定义的这些值
builder.add_meta_graph_and_variables(sess, tags=[sm.tag_constants.TRAINING],
signature_def_map={sm.signature_constants.CLASSIFY_INPUTS: SignatureDef}
)
# 将 MetaGraphDef 写入磁盘
builder.save()
==================222222===========================================
=========模型导入
这样我们就把模型整体存储到了磁盘中,而且我们将三个变量 X, scale, y 全部序列化后存储到了其中,所以恢复模型时便可以将他们完全解析出来:
import tensorflow as tf
from tensorflow import saved_model as sm
# 需要建立一个会话对象,将模型恢复到其中
with tf.Session() as sess:
path = '/home/×××/tf_model/model_1'
MetaGraphDef = sm.loader.load(sess, tags=[sm.tag_constants.TRAINING], export_dir=path)
# 解析得到 SignatureDef protobuf
SignatureDef_d = MetaGraphDef.signature_def
SignatureDef = SignatureDef_d[sm.signature_constants.CLASSIFY_INPUTS]
# 解析得到 3 个变量对应的 TensorInfo protobuf
X_TensorInfo = SignatureDef.inputs['input_1']
scale_TensorInfo = SignatureDef.inputs['input_2']
y_TensorInfo = SignatureDef.outputs['output']
# 解析得到具体 Tensor
# .get_tensor_from_tensor_info() 函数中可以不传入 graph 参数,TensorFlow 自动使用默认图
X = sm.utils.get_tensor_from_tensor_info(X_TensorInfo, sess.graph)
scale = sm.utils.get_tensor_from_tensor_info(scale_TensorInfo, sess.graph)
y = sm.utils.get_tensor_from_tensor_info(y_TensorInfo, sess.graph)
print(sess.run(scale))
print(sess.run(y, feed_dict={X: [3., 2., 1.]}))
# 输出
[10. 11. 12.]
[30. 22. 12.]
============333333讲解=
https://github.com/Jerryzhangzhao/DL_tensorflow/blob/master/save%20and%20restore%20model/use%20saved%20model/save_and_restore_by_savedmodelbuilder.py
save——model模块保存和载入使用简单例子的更多相关文章
- 【NLP学习其五】模型保存与载入的注意事项(记问题No module named 'model')
这是一次由于路径问题(找不到模型)引出模型保存问题的记录 最近,我试着把使用GPU训练完成的模型部署至预发布环境时出现了一个错误,以下是log节选 unpickler.load() ModuleNot ...
- Django之model模块创建表完整过程
Django中,与数据库相关的模块是model模块,它提供了一种简单易操作的API方式与数据库交互,它是通过ORM映射的方式来操作数据库,一个类对应数据库一张表,一个类属性,对应该表的一个字段,一个实 ...
- (原+译)pytorch中保存和载入模型
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/8108466.html 参考网址: http://pytorch.org/docs/master/not ...
- Tensorflow 保存和载入训练过程
本节涉及点: 保存训练过程 载入保存的训练过程并继续训练 通过命令行参数控制是否强制重新开始训练 训练过程中的手动保存 保存训练过程前,程序征得同意 一.保存训练过程 以下方代码为例: import ...
- TensorFlow 模型的保存与载入
参考学习博客: # https://www.cnblogs.com/felixwang2/p/9190692.html 一.模型保存 # https://www.cnblogs.com/felixwa ...
- 7.keras-模型保存和载入
keras-模型保存和载入 1.数据的载入与预处理 import numpy as np from keras.datasets import mnist from keras.utils impor ...
- Django学习之四:Django Model模块
目录 Django Model 模型 MODEL需要在脑子里记住的基础概念 区分清楚,必须不能混淆的 class Meta 内嵌元数据定义类 简单model创建实例 数据源配置 接着通过models在 ...
- docker保存、载入、导出、导入
保存和载入 拿到CONTAINER ID docker ps -a 通过容器id生成镜像dockerlinuxdemoweb:update docker commit b33633d12871 doc ...
- Docker 本地导入镜像/保存镜像/载入镜像/删除镜像
1.Docker导入本地镜像 有时候我们自己在本地或者其它小伙伴电脑上拷贝了一份镜像,有了这个镜像之后,我们可以把本地的镜像导入,使用docker import 命令. 例如这里下载了一个 aliba ...
随机推荐
- Zookeeper启动失败,报错 can not open chanel to 2
zookeeper 3.4.8 安装在 7 台不同的虚拟机上,配置文件如下: tickTime= initLimit= syncLimit= dataDir=/var/zookeeper client ...
- Linux中环境变量文件profile、bashrc、bash_profile之间的区别和联系
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为: # /etc/pr ...
- apacheTop
1.监控 httpd 请求数据,请求统计 apachetop -f /var/www/access_log 2. apachetop -H hits (Will display stats on th ...
- Woobuntu
Wooyun + Ubuntu = Woobuntu Woobuntu是基于Ubuntu系统的一款安全研究环境配置工具,可以自动安装并配置众多的安全工具与依赖环境,此外还针对中国用户的习惯进行了一些优 ...
- (持续更新中~~~)kafka--消息引擎与分布式流处理平台
kafka概述 kafka是一个分布式的基于发布/订阅模式的消息队列(message queue),一般更愿意称kafka是一款开源的消息引擎系统,只不过消息队列会耳熟一些.kafka主要应用于大数据 ...
- oracle 清空当前用户所有对象
BEGIN FOR REC IN (SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_TYPE='PROCEDURE' OR ...
- Itextpdf + Adobe Acrobat DC填充模板生成pdf快速入门
Itextpdf + Adobe Acrobat DC填充模板生成pdf快速入门 生成pdf有很多种方法,如通过freemarker,或 使用itextpdf.本文将使用itextpdf生成pdf 1 ...
- 关于@wraps(fn)
- vue history模式下的微信支付,及微信支付授权目录的填写,处理URL未注册
微信公众号配置网页授权域名:填写网址域名 微信开发者平台配置url: 访问url:http://www.baidu.com/pay/ment 支付授权目录:http://www.baidu.com/p ...
- LINUX笔记之一概述
unix商业发行版三个主要的:IBM的AIX,HP的HP-UX,SUN的Solaris.AIX和HP-UX只能装在对应的机器上,只有Solaris可以装在个人PC上. 普通发行版FREE BSD和LI ...