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 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...