如何导出python中的模型参数?这篇文章教给你两个方法

这篇文章小编给大家分享一个如何导出python中的模型参数的方法,小编讲解的非常详细,如果感兴趣的小伙伴可以耐心阅读完这篇文章,相信一定能够从中获取不少的知识 。

如何导出python中的模型参数?这篇文章教给你两个方法

文章插图
模型的保存和读取的方法如下
(一)通过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))

推荐阅读