<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們這次的任務是隨機生成一些離散的點,然後用直線(y = w *x + b )去擬合
首先看一下我們需要匯入的包有
torch 包為我們生成張量,可以使用反向傳播
matplotlib.pyplot 包幫助我們繪製曲線,實現視覺化
這裡我們通過rand隨機生成資料,因為生成的資料在0~1之間,這裡我們擴大10倍。
我們設定的batch_size,也就是資料的個數為20個,所以這裡會產生維度是(20,1)個訓練樣本
我們假設大概的迴歸是 y = 2 * x + 3 的,為了保證損失不一直為0 ,這裡我們新增一點噪音
最後返回x作為輸入,y作為真實值label
rand [0,1]均勻分佈
如果想要每次產生的亂數是一樣的,可以在程式碼的前面設定一下亂數種子
首先,我們要建立的模型是線性的y = w * x + b ,所以我們需要先初始化w ,b
使用randn 標準正態分佈隨機初始化權重w,將偏置b初始化為0
為什麼將權重w隨機初始化?
接下來可以訓練我們的模型了
1. 將輸入的特徵x和對應真實值label y通過zip函數打包。將輸入x經過模型 w *x + b 的預測輸出預測值y
2. 計算損失函數loss,因為之前將w、b都是設定成會計算梯度的,那麼loss.backward() 會自動計算w和b的梯度。用w的值data,減去梯度的值grad.data 乘上 學習率lr完成一次更新
3. 當w、b梯度不為零的話,要清零。這裡有兩種解釋,第一種是每次計算完梯度後,值會和之前計算的梯度值進行累加,而我們只是需要當前這步的梯度值,所有我們需要將之前的值清零。第二種是,因為梯度的累加,那麼相當於實現一個很大的batch訓練。假如一個epoch裡面,梯度不進行清零的話,相當於把所有的樣本求和後在進行梯度下降,而不是我們原先使用的針對單個樣本進行下降的SGD演演算法
4. 每100次迭代後,我們列印一下損失
scatter 相當於離散點的繪圖
要繪製連續的影象,只需要給個定義域然後通過表示式 w * x +b 計算y就可以了,最後輸出一下w和b,看看是不是和我們設定的w = 2,b =3 接近
import torch import matplotlib.pyplot as plt def trainSet(batch_size = 20): # 定義訓練集 x = torch.rand(batch_size,1) * 10 y = x * 2 + 3 + torch.randn(batch_size,1) # y = x * 2 + 3(近似) return x,y train_x, train_y = trainSet() # 訓練集 w =torch.randn(1,requires_grad= True) b = torch.zeros(1,requires_grad= True) lr = 0.001 for epoch in range(1000): for x,y in zip(train_x,train_y): # SGD演演算法,如果是BSGD的話,不需要這個for y_pred = w*x + b loss = (y - y_pred).pow(2) / 2 loss.backward() w.data -= w.grad.data * lr b.data -= b.grad.data * lr if w.data is not True: # 梯度值不為零的話,要清零 w.grad.data.zero_() # 否則相當於一個大的batch訓練 if b.data is not True: b.grad.data.zero_() if epoch % 100 ==0: print('loss:',loss.data) plt.scatter(train_x,train_y) x = torch.arange(0,11).view(-1,1) y = x * w.data + b.data plt.plot(x,y) plt.show() print(w.data,b.data)
輸出的影象
輸出的結果為
這裡可以看的最後的w = 1.9865和b = 2.9857 和我們設定的2,3是接近的
到此這篇關於Python反向傳播實現線性迴歸步驟詳細講解的文章就介紹到這了,更多相關Python線性迴歸內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45