模型的保存和读取

1.tensorflow保存和读取模型:tf.train.Saver() .save()#保存模型需要用到save函数

save(

sess,

save_path,

global_step=None,

latest_filename=None,

meta_graph_suffix='meta',

write_meta_graph=True,

write_state=True

)

'''

sess: 保存模型要求必须有一个加载了计算图的会话,而且所有变量必须已被初始化。

save_path: 模型保存路径及保存名称

global_step: 如果提供的话,这个数字会添加到save_path后面,用于区分不同训练阶段的结果

'''

示例:#例子

import tensorflow as tf

import numpy as np

import os

#用numpy产生数据

x_data = np.linspace(-1,1,300)[:, np.newaxis] #转置

noise = np.random.normal(0,0.05, x_data.shape)

y_data = np.square(x_data)-0.5+noise

#输入层

x_ph = tf.placeholder(tf.float32, [None, 1])

y_ph = tf.placeholder(tf.float32, [None, 1])

#隐藏层

w1 = tf.Variable(tf.random_normal([1,10]))

b1 = tf.Variable(tf.zeros([1,10])+0.1)

wx_plus_b1 = tf.matmul(x_ph, w1) + b1

hidden = tf.nn.relu(wx_plus_b1)

#输出层

w2 = tf.Variable(tf.random_normal([10,1]))

b2 = tf.Variable(tf.zeros([1,1])+0.1)

wx_plus_b2 = tf.matmul(hidden, w2) + b2

y = wx_plus_b2

#损失

loss = tf.reduce_mean(tf.reduce_sum(tf.square(y_ph-y),reduction_indices=[1]))

train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

#保存模型对象saver

saver = tf.train.Saver()

#判断模型保存路径是否存在,不存在就创建

if not os.path.exists('tmp/'):

os.mkdir('tmp/')

#初始化

with tf.Session() as sess:

if os.path.exists('tmp/checkpoint'): #判断模型是否存在

saver.restore(sess, 'tmp/model.ckpt') #存在就从模型中恢复变量

else:

init = tf.global_variables_initializer() #不存在就初始化变量

sess.run(init)

for i in range(1000):

_,loss_value = sess.run([train_op,loss], feed_dict={x_ph:x_data, y_ph:y_data})

if(i%50==0):

save_path = saver.save(sess, 'tmp/model.ckpt')

print("迭代次数:%d , 训练损失:%s"%(i, loss_value))

每调用一次保存操作会创建后3个数据文件并创建一个检查点(checkpoint)文件,简单理解就是权重等参数被保存到 .chkp.data 文件中,以字典的形式;图和元数据被保存到 .chkp.meta 文件中,可以被 tf.train.import_meta_graph 加载到当前默认的图。

2.keras保存和读取模型

model.save(filepath),同时保存model和权重的import numpy as np

from keras.datasets import mnist

from keras.utils import np_utils

from keras.models import Sequential

from keras.layers import Dense

from keras.optimizers import SGD

# 载入数据

(x_train,y_train),(x_test,y_test) = mnist.load_data()

# (60000,28,28)

print('x_shape:',x_train.shape)

# (60000)

print('y_shape:',y_train.shape)

# (60000,28,28)->(60000,784)

x_train = x_train.reshape(x_train.shape[0],-1)/255.0

x_test = x_test.reshape(x_test.shape[0],-1)/255.0

# 换one hot格式

y_train = np_utils.to_categorical(y_train,num_classes=10)

y_test = np_utils.to_categorical(y_test,num_classes=10)

# 创建模型,输入784个神经元,输出10个神经元

model = Sequential([

Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')

])

# 定义优化器

sgd = SGD(lr=0.2)

# 定义优化器,loss function,训练过程中计算准确率

model.compile(

optimizer = sgd,

loss = 'mse',

metrics=['accuracy'],

)

# 训练模型

model.fit(x_train,y_train,batch_size=64,epochs=5)

# 评估模型

loss,accuracy = model.evaluate(x_test,y_test)

print('\ntest loss',loss)

print('accuracy',accuracy)

# 保存模型

model.save('model.h5')

python保存模型与参数_如何导出python中的模型参数相关推荐

  1. c语言全局变量作为参数_在C / C ++中使用变量参数列表

    c语言全局变量作为参数 C/C++ provides a means to pass a variable number of arguments to a function.  This artic ...

  2. python保存文件到桌面_我用Python不到一分钟就将桌面文件整理分类!

    大家好,又到了Python办公自动化专题 本文跟大家分享一个文件整理脚本的实现过程.具体的功能很简单,给定一个打算整理的文件夹目录,这个脚本可以将该目录下的所有文件都揪出来,并且根据后缀名归类到不同的 ...

  3. java in out 参数_总是避免Java中的in-out参数?

    毫无疑问,输入输出参数会导致代码混乱,因为它们可能会增加意外/不可预测的副作用. 所以,许多优秀的程序员说: 避免使用in-out参数来更改可变方法参数.希望保持参数不变. 对于一个完美主义程序员来说 ...

  4. 从前台页面取参数到sql的like中比较时参数的预处理

    //从前台页面取参数到sql的like中比较时参数的预处理 this.keytxt.Text.Trim().Replace("'", "''").Replace ...

  5. 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个参数被传 ...

  6. lstm需要优化的参数_通过Keras 构建基于 LSTM 模型的故事生成器

    LSTM 网络工作示意图 什么是 LSTM 网络? LSTM (Long Short Term Memory, 长短期神经网络)是一种特殊的循环神经网络(RNN, Recurrent neural n ...

  7. python类方法需要传入cls参数_如何从Python 3.x中的类定义传递参数到元类?

    这是如何从类定义向元类传递参数的python 3.x版本?问题,根据请求单独列出,因为答案与python 2.x明显不同. 在python 3.x中,如何将参数传递给元类的__prepare__.__ ...

  8. python人脸识别训练模型生产_深度学习-人脸识别DFACE模型pytorch训练(二)

    首先介绍一下MTCNN的网络结构,MTCNN有三种网络,训练网络的时候需要通过三部分分别进行,每一层网络都依赖前一层网络产生训练数据供当前训练网络,这样也推动了两个网络之间的最小损耗. Pnet Rn ...

  9. python中打开文件时只允许写入的模式是_在open函数中访问模式参数使用()表示打开一个文件只用于写入。(4.0分)_学小易找答案...

    [单选题]溢流坝属于( ) [单选题]在重力坝的底部沿坝轴线方向设置大尺寸的空腔,即为( ) [单选题]模式()的用途是打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾.(4.0分) ...

最新文章

  1. 如果有一天,我们和甲方交换身份…
  2. where and when is Angular scope initialized
  3. 物联网智能硬件设备常见攻击方法
  4. apache.camel_Apache Camel 2.9发布–十大变化
  5. 带你自学Python系列(八):列表具体操作思维导图总结,再也不用翻书查用法了!...
  6. where、having、group by、order by、limit的区别和使用顺序
  7. C标签加EL表达式在jsp页面实现遍历后台内容
  8. lodash按需引入
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_2_一切皆为字节...
  10. 02-微信小程序商城 顶部广告图片(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  11. 系统镜像ISO写入U盘
  12. Go语言实战+code
  13. Unity3D C#数学系列之求点到直线的距离
  14. 中新时评:中国经济亮红灯 宏观调控“下猛药
  15. linux镜像使用什么pe安装系统,Linux系统ISO镜像文件可不可以用pe启动盘来安装
  16. R语言25-Prosper 贷款数据分析1
  17. VUE_v-lazy懒加载
  18. 关于表单验证中成功则跳转到指定页面否则不跳转的问题
  19. html下拉式日历,C#实现日历样式的下拉式计算器
  20. matlab点云数据dem,一种基于点云数据的DEM生成方法

热门文章

  1. 苹果12 Pro Max和mini测评来了,看完我选择了iPhone 12
  2. 亚马逊:我们提取了BERT的一个最优子架构,只有Bert-large的16%,CPU推理速度提升7倍...
  3. 取代百度!美团成中国第三大互联网公司
  4. 变换为json类型却遭遇乱码\u516c\u5f00\u65e5\u671f
  5. JSP第二次作业_3小题
  6. 利用边缘检测计算物体面积(内含源码)
  7. 基于 CNN 特征区域进行目标检测
  8. 不用3D建模软件,如何用数学公式创造一个女孩?会眨眼,有光影的那种
  9. 高速上车辆追尾无法移动 众人齐力抬车温暖归途
  10. Installing Oracle Database 18c Using RPM Packages