深度学习-线性回归基础-02
生活随笔
收集整理的這篇文章主要介紹了
深度学习-线性回归基础-02
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
線性回歸:
線性方程 y=kx+b
w12+w22+w33+w44+…w“n”*n
算法:線性回歸
策略:均方誤差
優(yōu)化:梯度下降api(學(xué)習(xí)率)
tensorboard --logdir=“test” (test=你的路徑)
作用域
讓模型代碼更加清晰,作用分明
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告級別,不顯示警告 import tensorflow as tfdef myregression():"""自實(shí)現(xiàn)一個(gè)線性回歸預(yù)測:return: """# 建立作用域with tf.variable_scope("data"):# 1,準(zhǔn)備數(shù)據(jù),x特征值[100,1] y目標(biāo)值[100]x = tf.random_normal([100,1],mean=1.75,stddev=0.5,name="x_data") # 隨機(jī)創(chuàng)建一個(gè)值 100行1列 平均值1.75 方差0.5 name是x_data# 矩陣相乘必須是二維的y_true = tf.matmul(x,[[0.7]]) + 0.8 # 假設(shè)偏置是0.8with tf.variable_scope("model"):# 2,建立線性回歸模型1個(gè)特征,1個(gè)權(quán)重,一個(gè)偏置 y = x*w + b# 隨機(jī)給一個(gè)權(quán)重和偏置的值,讓他去計(jì)算損失,然后在當(dāng)前狀態(tài)下進(jìn)行優(yōu)化# 用變量定義才能進(jìn)行優(yōu)化# trainable參數(shù):指定這個(gè)變量能否跟著梯度下降一起優(yōu)化weight = tf.Variable(tf.random_normal([1,1],mean=0.0,stddev=1.0),name="w",trainable=False)bias = tf.Variable(0.0,name="b")y_predict = tf.matmul(x,weight)+biaswith tf.variable_scope("loos"):# 3,建立損失函數(shù),均方誤差loss = tf.reduce_mean(tf.square(y_true - y_predict))with tf.variable_scope("optimizer"):# 4,梯度下降優(yōu)化損失 leaning_rate:0--1,2,3,4,5train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# 定義一個(gè)初始化變量opinit_op = tf.global_variables_initializer()# 通過會話運(yùn)行程序with tf.Session() as sess: # 上下文管理器# 初始化變量sess.run(init_op)# 打印隨機(jī)最先初始化的權(quán)重和偏置print("隨機(jī)初始化的參數(shù)權(quán)重:%f,偏置為:%f"%(weight.eval(),bias.eval()))# 建立事件文件filewriter = tf.summary.FileWriter("./test",graph=sess.graph)# 循環(huán)訓(xùn)練 運(yùn)行優(yōu)化for i in range(200):sess.run(train_op)print("第%d次優(yōu)化后的參數(shù)權(quán)重:%f,偏置為:%f" % (i,weight.eval(), bias.eval()))return Noneif __name__=="__main__":myregression()
增加變量顯示
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告級別,不顯示警告 import tensorflow as tf# 1,訓(xùn)練參數(shù)問題:trainable# 學(xué)習(xí)率和步數(shù)的設(shè)置 # 2,添加權(quán)重值,損失值等在tensorboard觀察情況# 1,收集變量 2,合并變量寫入事件文件中 def myregression():"""自實(shí)現(xiàn)一個(gè)線性回歸預(yù)測:return: """# 建立作用域tf.variable_scopewith tf.variable_scope("data"):# 1,準(zhǔn)備數(shù)據(jù),x特征值[100,1] y目標(biāo)值[100]x = tf.random_normal([100,1],mean=1.75,stddev=0.5,name="x_data") # 隨機(jī)創(chuàng)建一個(gè)值 100行1列 平均值1.75 方差0.5 name是x_data# 矩陣相乘必須是二維的y_true = tf.matmul(x,[[0.7]]) + 0.8 # 假設(shè)偏置是0.8with tf.variable_scope("model"):# 2,建立線性回歸模型1個(gè)特征,1個(gè)權(quán)重,一個(gè)偏置 y = x*w + b# 隨機(jī)給一個(gè)權(quán)重和偏置的值,讓他去計(jì)算損失,然后在當(dāng)前狀態(tài)下進(jìn)行優(yōu)化# 用變量定義才能進(jìn)行優(yōu)化# trainable參數(shù):指定這個(gè)變量能否跟著梯度下降一起優(yōu)化weight = tf.Variable(tf.random_normal([1,1],mean=0.0,stddev=1.0),name="w",trainable=False)bias = tf.Variable(0.0,name="b")y_predict = tf.matmul(x,weight)+biaswith tf.variable_scope("loos"):# 3,建立損失函數(shù),均方誤差loss = tf.reduce_mean(tf.square(y_true - y_predict))with tf.variable_scope("optimizer"):# 4,梯度下降優(yōu)化損失 leaning_rate:0--1,2,3,4,5train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# 1,收集tensortf.summary.scalar("losses",loss)tf.summary.histogram("weights",weight)# 2,定義合并tensor的opmerged = tf.summary.merge_all()# 定義一個(gè)初始化變量opinit_op = tf.global_variables_initializer()# 通過會話運(yùn)行程序with tf.Session() as sess: # 上下文管理器# 初始化變量sess.run(init_op)# 打印隨機(jī)最先初始化的權(quán)重和偏置print("隨機(jī)初始化的參數(shù)權(quán)重:%f,偏置為:%f"%(weight.eval(),bias.eval()))# 建立事件文件filewriter = tf.summary.FileWriter("./test",graph=sess.graph)# 循環(huán)訓(xùn)練 運(yùn)行優(yōu)化for i in range(500):sess.run(train_op)# 運(yùn)行合并的tensorsummary = sess.run(merged)filewriter.add_summary(summary,i)print("第%d次優(yōu)化后的參數(shù)權(quán)重:%f,偏置為:%f" % (i,weight.eval(), bias.eval()))return Noneif __name__=="__main__":myregression()
模型的保存和加載
保存
加載模型從上次結(jié)果開始訓(xùn)練
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告級別,不顯示警告 import tensorflow as tf# 1,訓(xùn)練參數(shù)問題:trainable# 學(xué)習(xí)率和步數(shù)的設(shè)置 # 2,添加權(quán)重值,損失值等在tensorboard觀察情況# 1,收集變量 2,合并變量寫入事件文件中 def myregression():"""自實(shí)現(xiàn)一個(gè)線性回歸預(yù)測:return: """# 建立作用域tf.variable_scopewith tf.variable_scope("data"):# 1,準(zhǔn)備數(shù)據(jù),x特征值[100,1] y目標(biāo)值[100]x = tf.random_normal([100,1],mean=1.75,stddev=0.5,name="x_data") # 隨機(jī)創(chuàng)建一個(gè)值 100行1列 平均值1.75 方差0.5 name是x_data# 矩陣相乘必須是二維的y_true = tf.matmul(x,[[0.7]]) + 0.8 # 假設(shè)偏置是0.8with tf.variable_scope("model"):# 2,建立線性回歸模型1個(gè)特征,1個(gè)權(quán)重,一個(gè)偏置 y = x*w + b# 隨機(jī)給一個(gè)權(quán)重和偏置的值,讓他去計(jì)算損失,然后在當(dāng)前狀態(tài)下進(jìn)行優(yōu)化# 用變量定義才能進(jìn)行優(yōu)化# trainable參數(shù):指定這個(gè)變量能否跟著梯度下降一起優(yōu)化weight = tf.Variable(tf.random_normal([1,1],mean=0.0,stddev=1.0),name="w",trainable=False)bias = tf.Variable(0.0,name="b")y_predict = tf.matmul(x,weight)+biaswith tf.variable_scope("loos"):# 3,建立損失函數(shù),均方誤差loss = tf.reduce_mean(tf.square(y_true - y_predict))with tf.variable_scope("optimizer"):# 4,梯度下降優(yōu)化損失 leaning_rate:0--1,2,3,4,5train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# 1,收集tensortf.summary.scalar("losses",loss)tf.summary.histogram("weights",weight)# 2,定義合并tensor的opmerged = tf.summary.merge_all()# 定義一個(gè)初始化變量opinit_op = tf.global_variables_initializer()# 定義一個(gè)保存模型的實(shí)例saver = tf.train.Saver()# 通過會話運(yùn)行程序with tf.Session() as sess: # 上下文管理器# 初始化變量sess.run(init_op)# 打印隨機(jī)最先初始化的權(quán)重和偏置print("隨機(jī)初始化的參數(shù)權(quán)重:%f,偏置為:%f"%(weight.eval(),bias.eval()))# 建立事件文件filewriter = tf.summary.FileWriter("./test",graph=sess.graph)# 加載模型,覆蓋模型當(dāng)中隨機(jī)定義的參數(shù),從上次訓(xùn)練的參數(shù)結(jié)果開始if os.path.exists("./ckpt/checkpoint"): # 判斷ckpt目錄下是否存在checkpointsaver.restore(sess,"./ckpt/test_model") # 存在就加載模型# 循環(huán)訓(xùn)練 運(yùn)行優(yōu)化for i in range(500):sess.run(train_op)# 運(yùn)行合并的tensorsummary = sess.run(merged)filewriter.add_summary(summary,i)print("第%d次優(yōu)化后的參數(shù)權(quán)重:%f,偏置為:%f" % (i,weight.eval(), bias.eval()))saver.save(sess,"./ckpt/test_model") # 模型保存return Noneif __name__=="__main__":myregression()
python 線性回歸.py --max_step=300 --model_dir="/ckpt/model"
總結(jié)
以上是生活随笔為你收集整理的深度学习-线性回归基础-02的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习-Tensorflow基本介绍0
- 下一篇: 深度学习-Tensorflow2.2-深