神經網絡參數優化更新的步驟——tensorflow實現線性回歸
基本思路
本文是簡單地體驗一下神經網絡參數更新的流程,因此不涉及激活函數和Drop_out等知識點。
首先利用高斯分布隨機生成2000個點,這2000個點圍繞某條已知的直線,再初始化權重參數w和偏移量b,根據w和b計算出預測值,再與真實值比較計算出損失函數(采用均方誤差作為指標),使用梯度下降的優化方法更新參數使得損失函數最小化,最后讓整個線性回歸模型訓練500次即可。
代碼及流程
本例使用ModelArts進行模型部署,所用的框架是tensorflow。
1.進入ModelArts控制臺和創建項目
進入ModelArts控制臺(控制臺選擇華北-北京四,北京四有免費資源)后選擇開發環境,點擊進入Notebook,點擊創建新項目(若進入的是新版的Notebook,請點擊回到舊版)
項目名稱自擬,工作環境選擇第一個(只要包含tensorflow的1.x.x版本即可),類型選擇CPU2核8G,資源池選擇公共資源池,儲存配置選擇云硬盤。
創建好Notebook后,新建一個文件(即點擊new),選擇tensorflow-1.13.1,創建成功后就可以開始寫代碼啦。
2.代碼
import matplotlib.pyplot as plt import numpy as np import tensorflow as tf #隨機點的生成 x_set = [] y_set = [] for i in range(2000): x = np.random.normal(0.0,0.5) x_set.append(x) y = 0.03*x+0.05+np.random.normal(0.0,0.02) y_set.append(y) plt.scatter(x_set,y_set,c='r') plt.show() #設置權重參數w,由于是點,所以設置為一維 W = tf.Variable(tf.random.normal([1],mean = 0,stddev = 0.01),name = "W") #設置偏移量b b = tf.Variable(tf.zeros([1],tf.float32)) #預測值 y_p = W*x_set+b #計算損失函數(均方誤差) loss = tf.reduce_mean(tf.square(y_set-y_p)) #梯度下降優化參數 optimizer = tf.train.GradientDescentOptimizer(0.1)#0.1是學習率 train = optimizer.minimize(loss) #初始化變量 init = tf.compat.v1.global_variables_initializer() sess = tf.compat.v1.Session() sess.run(init) print("W=",sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss)) print("Start training\n") #訓練500次 for step in range(500): sess.run(train) print("W=",sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss)) print("Training ending\n") print("W=",sess.run(W),"b=",sess.run(b))
隨機生成的點:
訓練后結果:
訓練結果的w和b還是比較接近預設的0.03和0.05的。
TensorFlow 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。