咱們的模型訓練出來想給別人用,或者是我今天訓練不完,明天想接着訓練,怎麼辦?這就須要模型的保存與讀取。看代碼:html
import tensorflow as tf import numpy as np import os #輸入數據 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 #輸入層 xs = tf.placeholder(tf.float32, [None, 1]) ys = 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(xs,W1) + b1 output1 = 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(output1,W2) + b2 output2 = Wx_plus_b2 #損失 loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-output2),reduction_indices=[1])) train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) #模型保存加載工具 saver = tf.train.Saver() #判斷模型保存路徑是否存在,不存在就建立 if not os.path.exists('tmp/'): os.mkdir('tmp/') #初始化 sess = tf.Session() 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_step,loss], feed_dict={xs:x_data,ys:y_data}) if(i%50==0): #每50次保存一次模型 save_path = saver.save(sess, 'tmp/model.ckpt') #保存模型到tmp/model.ckpt,注意必定要有一層文件夾,不然保存不成功!!! print("模型保存:%s 當前訓練損失:%s"%(save_path, loss_value))
你們第一次訓練獲得:dom
模型保存:tmp/model.ckpt 當前訓練損失:1.35421
模型保存:tmp/model.ckpt 當前訓練損失:0.011808
模型保存:tmp/model.ckpt 當前訓練損失:0.00916655
模型保存:tmp/model.ckpt 當前訓練損失:0.00690887
模型保存:tmp/model.ckpt 當前訓練損失:0.00575491
模型保存:tmp/model.ckpt 當前訓練損失:0.00526401
模型保存:tmp/model.ckpt 當前訓練損失:0.00498503
模型保存:tmp/model.ckpt 當前訓練損失:0.00478226
模型保存:tmp/model.ckpt 當前訓練損失:0.0046346
模型保存:tmp/model.ckpt 當前訓練損失:0.00454276
模型保存:tmp/model.ckpt 當前訓練損失:0.00446402
模型保存:tmp/model.ckpt 當前訓練損失:0.00436883
模型保存:tmp/model.ckpt 當前訓練損失:0.00427732
模型保存:tmp/model.ckpt 當前訓練損失:0.00418589
模型保存:tmp/model.ckpt 當前訓練損失:0.00409241
模型保存:tmp/model.ckpt 當前訓練損失:0.00400956
模型保存:tmp/model.ckpt 當前訓練損失:0.00392799
模型保存:tmp/model.ckpt 當前訓練損失:0.00383506
模型保存:tmp/model.ckpt 當前訓練損失:0.00373741
模型保存:tmp/model.ckpt 當前訓練損失:0.00366922工具
第二次繼續訓練,獲得:spa
模型保存:tmp/model.ckpt 當前訓練損失:0.00412003
模型保存:tmp/model.ckpt 當前訓練損失:0.00388735
模型保存:tmp/model.ckpt 當前訓練損失:0.00382827
模型保存:tmp/model.ckpt 當前訓練損失:0.00379988
模型保存:tmp/model.ckpt 當前訓練損失:0.00378107
模型保存:tmp/model.ckpt 當前訓練損失:0.003764
模型保存:tmp/model.ckpt 當前訓練損失:0.00375149
模型保存:tmp/model.ckpt 當前訓練損失:0.00374324
模型保存:tmp/model.ckpt 當前訓練損失:0.00373386
模型保存:tmp/model.ckpt 當前訓練損失:0.00372364
模型保存:tmp/model.ckpt 當前訓練損失:0.00371543
模型保存:tmp/model.ckpt 當前訓練損失:0.00370875
模型保存:tmp/model.ckpt 當前訓練損失:0.00370262
模型保存:tmp/model.ckpt 當前訓練損失:0.00369697
模型保存:tmp/model.ckpt 當前訓練損失:0.00369161
模型保存:tmp/model.ckpt 當前訓練損失:0.00368653
模型保存:tmp/model.ckpt 當前訓練損失:0.00368169
模型保存:tmp/model.ckpt 當前訓練損失:0.00367714
模型保存:tmp/model.ckpt 當前訓練損失:0.00367274
模型保存:tmp/model.ckpt 當前訓練損失:0.00366843rest
能夠看到,第二次訓練是在第一次訓練的基礎上繼續訓練的。因而,咱們能夠把咱們想要的模型保存下來,慢慢訓練。code
參考文檔:orm
一、《TensorFlow使用指南》:http://www.tensorfly.cn/tfdoc/tutorials/mnist_tf.htmlhtm