一、計算梯度的簡單示例
import torch
x = torch.tensor([1
.,2.
], requires_grad=
true
)y = x[0]
**2+ x[1]
**2print
('y = {}'
.format
(y))
y.backward(
)print
('grad = {}'
.format
(x.grad)
)# 輸出結果
# y = 5.0
# grad = tensor([2., 4.])
注意問題:
二、梯度下降法的簡單示例
import torch.optim
x = torch.tensor([3
.,2.
], requires_grad=
true
)optimizer = torch.optim.sgd(
[x], lr=
0.1, momentum=0)
# sgd能夠實現梯度下降的邏輯
for step in
range(11
):if step:
optimizer.zero_grad(
)# 清空上次迭代中儲存的資料
y.backward(
)# 求解梯度
optimizer.step(
)# 更新值
y = x[0]
**2+ x[1]
**2print
('step {}: x = {}, y= {}'
.format
(step, x.tolist(
), y)
)"""
執行結果:
step 0: x = [3.0, 2.0], y= 13.0
step 1: x = [2.4000000953674316, 1.600000023841858], y= 8.320000648498535
step 2: x = [1.9200000762939453, 1.2799999713897705], y= 5.32480001449585
step 3: x = [1.5360000133514404, 1.0239999294281006], y= 3.407871961593628
step 4: x = [1.2288000583648682, 0.8191999197006226], y= 2.1810381412506104
step 5: x = [0.9830400347709656, 0.6553599238395691], y= 1.3958643674850464
step 6: x = [0.7864320278167725, 0.5242879390716553], y= 0.8933531641960144
step 7: x = [0.629145622253418, 0.41943034529685974], y= 0.5717460513114929
step 8: x = [0.5033165216445923, 0.33554428815841675], y= 0.36591750383377075
step 9: x = [0.40265321731567383, 0.26843541860580444], y= 0.23418718576431274
step 10: x = [0.32212257385253906, 0.2147483378648758], y= 0.1498797982931137
"""
基本的梯度下降法有如下缺陷:
三、優化演算法
可使用torch.optim.sgd
、torch.optim.rmsprop
、torch.optim.adam
等等。
Pytorch 二 梯度下降
一 梯度下降的作用 乙個神經網路的典型訓練過程如下 定義包含一些可學習引數 或者叫權重 的神經網路 在輸入資料集上迭代 通過網路處理輸入 計算損失 輸出和正確答案的距離 將梯度反向傳播給網路的引數 更新網路的權重,一般使用乙個簡單的規則 weight weight learning rate gra...
二 梯度下降
第二講正式開始介紹機器學習中的監督學習,首先宣告了以下約定 對於m組訓練樣本,x表示其輸入 input feature y表示其輸出 target variable m是乙個正整數 表示個數的嘛 x和y可是是向量也可以是標量,不過入門而言一般y為標量,x i y i 表示訓練樣本,表示訓練集 我們的...
21 梯度法及共軛梯度法
coding utf 8 created on wed mar 20 21 56 21 2019 author zhangchaoyu 當離最優值較遠時,利用梯度法,接近極小點時用收斂較快的其他方法 import math import copy 1 f x,y x x 25 y y 2 f x,y...