最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pyTorch深入學(xué)習(xí)梯度和Linear Regression實(shí)現(xiàn)

 更新時(shí)間:2021年09月30日 11:33:26   作者:算法菜鳥飛高高  
這篇文章主要介紹了pyTorch深入學(xué)習(xí),實(shí)現(xiàn)梯度和Linear Regression,文中呈現(xiàn)了詳細(xì)的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助

梯度

PyTorch的數(shù)據(jù)結(jié)構(gòu)是tensor,它有個(gè)屬性叫做requires_grad,設(shè)置為True以后,就開始track在其上的所有操作,前向計(jì)算完成后,可以通過(guò)backward來(lái)進(jìn)行梯度回傳。
評(píng)估模型的時(shí)候我們并不需要梯度回傳,使用with torch.no_grad() 將不需要梯度的代碼段包裹起來(lái)。每個(gè)Tensor都有一個(gè).grad_fn屬性,該屬性即創(chuàng)建該Tensor的Function,直接用構(gòu)造的tensor返回None,否則是生成該tensor的操作。

tensor(data, *, dtype=None, device=None, requires_grad=False, pin_memory=False) -> Tensor
#require_grad默認(rèn)是false,下面我們將顯式的開啟
x = torch.tensor([1,2,3],requires_grad=True,dtype=torch.float)

注意只有數(shù)據(jù)類型是浮點(diǎn)型和complex類型才能require梯度,所以這里顯示指定dtype為torch.float32

x = torch.tensor([1,2,3],requires_grad=True,dtype=torch.float32)
> tensor([1.,2.,3.],grad_fn=None)
y = x + 2
> tensor([3.,4.,5.],grad_fn=<AddBackward0>)
z = y * y * 3
> tensor([3.,4.,5.],grad_fn=<MulBackward0>)

像x這種直接創(chuàng)建的,沒(méi)有g(shù)rad_fn,被稱為葉子結(jié)點(diǎn)。grad_fn記錄了一個(gè)個(gè)基本操作用來(lái)進(jìn)行梯度計(jì)算的。
關(guān)于梯度回傳計(jì)算看下面一個(gè)例子

x = torch.ones((2,2),requires_grad=True)
> tensor([[1.,1.],
> 		   [1.,1.]],requires_grad=True)
y = x + 2
z = y * y * 3
out = z.mean()
#out是一個(gè)標(biāo)量,無(wú)需指定求偏導(dǎo)的變量
out.backward()
x.grad
> tensor([[4.500,4.500],
> 		  [4.500,4.500]])
#每次計(jì)算梯度前,需要將梯度清零,否則會(huì)累加
x.grad.data.zero_()

在這里插入圖片描述

值得注意的是只有葉子節(jié)點(diǎn)的梯度在回傳時(shí)才會(huì)被計(jì)算,也就是說(shuō),上面的例子中拿不到y(tǒng)和z的grad。
來(lái)看一個(gè)中斷求導(dǎo)的例子

x = torch.tensor(1.,requires_grad=True)
y1 = x ** 2
with torch.no_grad()
	y2 = x ** 3
y3 = y1 + y2
y3.backward()
print(x.grad)
> 2

在這里插入圖片描述

本來(lái)梯度應(yīng)該為5的,但是由于y2被with torch.no_grad()包裹,在梯度計(jì)算的時(shí)候不會(huì)被追蹤。

如果我們想要修改某個(gè)tensor的數(shù)值但是又不想被autograd記錄,那么需要使用對(duì)x.data進(jìn)行操作就行這也是一個(gè)張量。

線性回歸(linear regression)

利用線性回歸來(lái)預(yù)測(cè)一棟房屋的價(jià)格,價(jià)格取決于很多feature,這里簡(jiǎn)化問(wèn)題,假設(shè)價(jià)格只取決于兩個(gè)因素,面積(平方米)和房齡(年)

在這里插入圖片描述

x1代表面積,x2代表房齡,售出價(jià)格為y

模擬數(shù)據(jù)集

假設(shè)我們的樣本數(shù)量為1000個(gè),每個(gè)數(shù)據(jù)包括兩個(gè)features,則數(shù)據(jù)為1000 * 2的2-d張量,用正太分布來(lái)隨機(jī)取值。
labels是房屋的價(jià)格,長(zhǎng)度為1000的一維張量。
真實(shí)w和b提前把值定好,然后再取一個(gè)干擾量 δ \delta δ(也用高斯分布取值,用來(lái)模擬真實(shí)數(shù)據(jù)集中的偏差)

num_features = 2#兩個(gè)特征
num_examples = 1000 #樣本個(gè)數(shù)
w = torch.normal(0,1,(num_features,1))
b = torch.tensor(4.2)
samples = torch.normal(0,1,(num_examples,num_features))
labels = samples.matmul(w) + b
noise = torch.normal(0,.01,labels.shape)
labels += noise

加載數(shù)據(jù)集

import random
def data_iter(samples,labels,batch_size):
	num_samples = samples.shape[0] #獲得batch軸的長(zhǎng)度
	indices = [i for i in range(num_samples)]
	random.shuffle(indices)#將索引數(shù)組原地打亂
	for i in range(0,num_samples,batch_size):
	j = torch.LongTensor(indices[i:min(i+batch_size,num_samples)])
	yield samples.index_select(0,j),labels(0,j)

torch.index_select(dim,index)
dim表示tensor的軸,index是一個(gè)tensor,里面包含的是索引。

定義loss_function

def loss_function(predict,labels):
	loss = (predict,labels)** 2 / 2
	return loss.mean()

定義優(yōu)化器

def loss_function(predict,labels):
	loss = (predict,labels)** 2 / 2
	return loss.mean()

開始訓(xùn)練

w = torch.normal(0.,1.,(num_features,1),requires_grad=True)
b = torch.zero(0.,dtype=torch.float32,requires_grad=True)
batch_size = 100
for epoch in range(10):
	for data, label in data_iter(samples,labels,batch_size):
		predict = data.matmul(w) + b
		loss = loss_function(predict,label)
		loss.backward()
		optimizer([w,b],0.05)
		w.grad.data.zero_()
		b.grad.data.zero_() 

以上就是pyTorch深入學(xué)習(xí)梯度和Linear Regression實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于pyTorch實(shí)現(xiàn)梯度和Linear Regression的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pytorch 使用 nii數(shù)據(jù)做輸入數(shù)據(jù)的操作

    Pytorch 使用 nii數(shù)據(jù)做輸入數(shù)據(jù)的操作

    這篇文章主要介紹了Pytorch 使用 nii數(shù)據(jù)做輸入數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 對(duì)numpy中布爾型數(shù)組的處理方法詳解

    對(duì)numpy中布爾型數(shù)組的處理方法詳解

    下面小編就為大家分享一篇對(duì)numpy中布爾型數(shù)組的處理方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python中的raise關(guān)鍵字詳解

    Python中的raise關(guān)鍵字詳解

    這篇文章主要介紹了Python中的raise關(guān)鍵字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Python中typing模塊與類型注解的使用方法

    Python中typing模塊與類型注解的使用方法

    這篇文章主要給大家介紹了關(guān)于Python中typing模塊與類型注解的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 用OpenCV將視頻分解成單幀圖片,圖片合成視頻示例

    用OpenCV將視頻分解成單幀圖片,圖片合成視頻示例

    今天小編就為大家分享一篇用OpenCV將視頻分解成單幀圖片,圖片合成視頻示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python餐飲AI機(jī)器人學(xué)習(xí)數(shù)據(jù)網(wǎng)絡(luò)抓取

    Python餐飲AI機(jī)器人學(xué)習(xí)數(shù)據(jù)網(wǎng)絡(luò)抓取

    在餐飲行業(yè),AI機(jī)器人可以通過(guò)學(xué)習(xí)大量的相關(guān)數(shù)據(jù)來(lái)提供更好的服務(wù)和體驗(yàn),在文本中,我們將介紹如何使用python進(jìn)行餐飲A?I機(jī)器人學(xué)習(xí)數(shù)據(jù)的網(wǎng)絡(luò)抓取,并提供代碼的示例和最佳實(shí)踐
    2023-12-12
  • python 實(shí)現(xiàn)循環(huán)定義、賦值多個(gè)變量的操作

    python 實(shí)現(xiàn)循環(huán)定義、賦值多個(gè)變量的操作

    這篇文章主要介紹了python 實(shí)現(xiàn)循環(huán)定義、賦值多個(gè)變量的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python網(wǎng)絡(luò)編程socket實(shí)現(xiàn)服務(wù)端、客戶端操作詳解

    python網(wǎng)絡(luò)編程socket實(shí)現(xiàn)服務(wù)端、客戶端操作詳解

    這篇文章主要介紹了python網(wǎng)絡(luò)編程socket實(shí)現(xiàn)服務(wù)端、客戶端操作,結(jié)合實(shí)例形式分析了python基于socket實(shí)現(xiàn)服務(wù)端、客戶端相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • 基于Python進(jìn)行年齡和性別檢測(cè)

    基于Python進(jìn)行年齡和性別檢測(cè)

    這篇文章主要介紹了通過(guò)Python 編程語(yǔ)言帶您完成使用機(jī)器學(xué)習(xí)進(jìn)行年齡和性別檢測(cè)的任務(wù)。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2021-12-12
  • Python+FuzzyWuzzy實(shí)現(xiàn)模糊匹配的示例詳解

    Python+FuzzyWuzzy實(shí)現(xiàn)模糊匹配的示例詳解

    在日常開發(fā)工作中,經(jīng)常會(huì)遇到這樣的一個(gè)問(wèn)題:要對(duì)數(shù)據(jù)中的某個(gè)字段進(jìn)行匹配,但這個(gè)字段有可能會(huì)有微小的差異。本文將分享一個(gè)簡(jiǎn)單易用的模糊字符串匹配工具包:FuzzyWuzzy,讓你輕松解決煩惱的匹配問(wèn)題
    2022-04-04

最新評(píng)論

石阡县| 巴彦淖尔市| 澄迈县| 开化县| 喀喇| 碌曲县| 贺州市| 运城市| 吉木萨尔县| 桓台县| 葫芦岛市| 兴义市| 怀来县| 瓮安县| 同心县| 甘孜| 铜山县| 灵璧县| 洛扎县| 河东区| 通化县| 温泉县| 玛多县| 宜兰县| 南郑县| 乌兰县| 新田县| 邮箱| 大港区| 康定县| 石楼县| 宁南县| 巍山| 云安县| 信宜市| 西贡区| 芜湖县| 华阴市| 涞水县| 吉林市| 宁海县|