Pytorch試水 梯度下降法實現線性回歸

2021-10-25 02:12:11 字數 1282 閱讀 4010

import torch as t

from torch.autograd import variable as v

from matplotlib import pyplot as plt

#隨機數種子

t.manual_seed(1000)

def get_fake_data(batch_size=8):

'''產生隨即資料y=2x+3,並新增雜訊'''

x=t.rand(batch_size,1)*20

y=2*x+(1+t.randn(batch_size,1))*3

return x,y

x,y=get_fake_data()

#plt.scatter(x.squeeze().numpy(),y.squeeze().numpy())

#初始化w,b

w=v(t.rand(1,1),requires_grad=true)

b=v(t.zeros(1,1),requires_grad=true)

#學習率

lr=0.001

for i in range(8000):

x,y=get_fake_data()

x,y=v(x),v(y)

#前向傳播,mm為矩陣乘法

y_pred=x.mm(w)+b.expand_as(y)

loss=0.5*(y_pred-y)**2

loss=loss.sum()

#反向傳播

loss.backward()

#梯度下降法更新引數

w.data.sub_(lr*w.grad.data)

b.data.sub_(lr*b.grad.data)

#梯度清零

w.grad.data.zero_()

b.grad.data.zero_()

#繪圖xx=t.range(0,20).view(-1,1)

梯度下降法和隨機梯度下降法

批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...

梯度下降法

梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...

梯度下降法

回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...