0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PyTorch入門-1

汽車電子技術(shù) ? 來源:Python數(shù)據(jù)分析之旅 ? 作者: cauwfq ? 2023-02-23 16:32 ? 次閱讀

圖片

1.為什么選擇PyTorch
  1)簡潔:追求更少封裝,避免重復(fù)造輪子
  2)速度:靈活性不以速度為代價(jià)
  3)易用:語法優(yōu)雅,簡單易學(xué)
  4)資源:社區(qū)豐富,維護(hù)及時(shí)
2.基礎(chǔ)入門
  1)安裝(pip install torch)
  2)創(chuàng)建tensor(PyTorch重要的數(shù)據(jù)結(jié)構(gòu))
  3)自動(dòng)求導(dǎo)
  
import numpy as np  
import torch


#創(chuàng)建3行4列tensor,設(shè)置自動(dòng)求導(dǎo)
x = torch.randn(3,4,requires_grad=True)
#輸出結(jié)構(gòu)
x

圖片

#初始化b
b = torch.randn(3,4,requires_grad=True)
#計(jì)算t
t = x + b
#求和
y = t.sum()
#反向傳播計(jì)算
y.backward()
#輸出b梯度
b.grad

圖片

實(shí)戰(zhàn)一個(gè)例子(計(jì)算過程如下):

圖片

#計(jì)算流程
x = torch.rand(1)
b = torch.rand(1, requires_grad = True)
w = torch.rand(1, requires_grad = True)
y = w * x 
z = y + b 
#如果不清空會(huì)累加起來
z.backward(retain_graph=True)
#w梯度
w.grad

圖片

#b梯度
b.grad

圖片

3.搭建線性回歸模型
  1)構(gòu)造數(shù)據(jù)
  2)初始化參數(shù)
  3)前向傳播
  4)模型訓(xùn)練
  5)預(yù)測結(jié)果
  6)保存模型
#初始化x值
x_values = [i for i in range(11)]
#轉(zhuǎn)換為ndarray
x_train = np.array(x_values, dtype=np.float32)
#維度轉(zhuǎn)換
x_train = x_train.reshape(-1, 1)
#查看形狀,(11,1)
x_train.shape


#計(jì)算y值
y_values = [2*i + 1 for i in x_values]
#轉(zhuǎn)換為ndarray
y_train = np.array(y_values, dtype=np.float32)
#維度轉(zhuǎn)換
y_train = y_train.reshape(-1, 1)
#查看形狀,(11,1)
y_train.shape
import torch
import torch.nn as nn


#線性回歸模型(本質(zhì)是一個(gè)不加激活函數(shù)的全連接層)
class LinearRegressionModel(nn.Module):
    #初始化參數(shù)
    def __init__(self, input_dim, output_dim):
        super(LinearRegressionModel, self).__init__()
        self.linear = nn.Linear(input_dim, output_dim)  
    #前向傳播
    def forward(self, x):
        out = self.linear(x)
        return out


#輸入維度
input_dim = 1
#輸出維度
output_dim = 1
#初始化模型
model = LinearRegressionModel(input_dim, output_dim)
#輪數(shù)
epochs = 1000
#學(xué)習(xí)率
learning_rate = 0.01
#隨機(jī)梯度下降算法
optimizer = torch.optim.SGD(model.parameters(), 
                            lr=learning_rate)
#定義均方損失函數(shù)
criterion = nn.MSELoss()


#遍歷每一輪(這里使用CPU進(jìn)行訓(xùn)練,建議使用GPU速度快)
for epoch in range(epochs):
    #計(jì)算輪數(shù)
    epoch += 1
    #注意轉(zhuǎn)換成tensor
    inputs = torch.from_numpy(x_train)
    labels = torch.from_numpy(y_train)
    #梯度要清零每一次迭代
    optimizer.zero_grad() 
    #前向傳播
    outputs = model(inputs)
    #計(jì)算損失
    loss = criterion(outputs, labels)
    #返向傳播
    loss.backward()
    #更新權(quán)重參數(shù)
    optimizer.step()
    #每50輪輸出損失值
    if epoch % 50 == 0:
        print('epoch {}, loss {}'.format(epoch, loss.item()))

圖片

#預(yù)測訓(xùn)練數(shù)據(jù)集
predicted = model(torch.from_numpy(x_train).requires_grad_()).data.numpy()
#輸出結(jié)果,跟我們真實(shí)y值幾乎沒有差別
predicted

圖片

#保存模型
torch.save(model.state_dict(), 'model.pkl')
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 速度
    +關(guān)注

    關(guān)注

    1

    文章

    33

    瀏覽量

    15603
  • 資源
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    17787
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13226
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Pytorch入門之的基本操作

    Pytorch入門之基本操作
    發(fā)表于 05-22 17:15

    PyTorch如何入門

    PyTorch 入門實(shí)戰(zhàn)(一)——Tensor
    發(fā)表于 06-01 09:58

    PyTorch10的基礎(chǔ)教程

    PyTorch 10 基礎(chǔ)教程(4):訓(xùn)練分類器
    發(fā)表于 06-05 17:42

    Pytorch AI語音助手

    想做一個(gè)Pytorch AI語音助手,有沒有好的思路呀?
    發(fā)表于 03-06 13:00

    如何安裝TensorFlow2 Pytorch?

    如何安裝TensorFlow2 Pytorch?
    發(fā)表于 03-07 07:32

    如何往星光2板子里裝pytorch?

    如題,想先gpu版本的pytorch只安裝cpu版本的pytorch,pytorch官網(wǎng)提供了基于conda和pip兩種安裝方式。因?yàn)樵凼莚isc架構(gòu)沒對(duì)應(yīng)的conda,而使用pip安裝提示也沒有
    發(fā)表于 09-12 06:30

    Pytorch入門教程與范例

    的深度學(xué)習(xí)框架。 對(duì)于系統(tǒng)學(xué)習(xí) pytorch,官方提供了非常好的入門教程?,同時(shí)還提供了面向深度學(xué)習(xí)的示例,同時(shí)熱心網(wǎng)友分享了更簡潔的示例。 1. overview 不同于 theano
    發(fā)表于 11-15 17:50 ?5413次閱讀
    <b class='flag-5'>Pytorch</b><b class='flag-5'>入門</b>教程與范例

    PyTorch官網(wǎng)教程PyTorch深度學(xué)習(xí):60分鐘快速入門中文翻譯版

    PyTorch 深度學(xué)習(xí):60分鐘快速入門”為 PyTorch 官網(wǎng)教程,網(wǎng)上已經(jīng)有部分翻譯作品,隨著PyTorch1.0 版本的公布,這個(gè)教程有較大的代碼改動(dòng),本人對(duì)教程進(jìn)行重新翻
    的頭像 發(fā)表于 01-13 11:53 ?1w次閱讀

    基于PyTorch的深度學(xué)習(xí)入門教程之PyTorch的安裝和配置

    神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并且運(yùn)用各種深度學(xué)習(xí)算法訓(xùn)練網(wǎng)絡(luò)參數(shù),進(jìn)而解決各種任務(wù)。 本文從PyTorch環(huán)境配置開始。PyTorch是一種Python接口的深度學(xué)習(xí)框架,使用靈活,學(xué)習(xí)方便。還有其他主流的深度學(xué)習(xí)框架,例如Caffe,TensorFlow,CNTK等等,各有千秋。筆者
    的頭像 發(fā)表于 02-16 15:15 ?2602次閱讀

    基于PyTorch的深度學(xué)習(xí)入門教程之PyTorch簡單知識(shí)

    本文參考PyTorch官網(wǎng)的教程,分為五個(gè)基本模塊來介紹PyTorch。為了避免文章過長,這五個(gè)模塊分別在五篇博文中介紹。 Part1PyTorch簡單知識(shí) Part2:
    的頭像 發(fā)表于 02-16 15:20 ?2261次閱讀

    基于PyTorch的深度學(xué)習(xí)入門教程之PyTorch的自動(dòng)梯度計(jì)算

    本文參考PyTorch官網(wǎng)的教程,分為五個(gè)基本模塊來介紹PyTorch。為了避免文章過長,這五個(gè)模塊分別在五篇博文中介紹。 Part1PyTorch簡單知識(shí) Part2:
    的頭像 發(fā)表于 02-16 15:26 ?2035次閱讀

    基于PyTorch的深度學(xué)習(xí)入門教程之使用PyTorch構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)

    ? ? ? ? 前言 本文參考PyTorch官網(wǎng)的教程,分為五個(gè)基本模塊來介紹PyTorch。為了避免文章過長,這五個(gè)模塊分別在五篇博文中介紹。 Part1PyTorch簡單知識(shí) P
    的頭像 發(fā)表于 02-15 09:40 ?2102次閱讀

    基于PyTorch的深度學(xué)習(xí)入門教程之DataParallel使用多GPU

    前言 本文參考PyTorch官網(wǎng)的教程,分為五個(gè)基本模塊來介紹PyTorch。為了避免文章過長,這五個(gè)模塊分別在五篇博文中介紹。 Part1PyTorch簡單知識(shí) Part2:
    的頭像 發(fā)表于 02-15 09:55 ?4112次閱讀

    基于PyTorch的深度學(xué)習(xí)入門教程之PyTorch重點(diǎn)綜合實(shí)踐

    前言 PyTorch提供了兩個(gè)主要特性: (1) 一個(gè)n維的Tensor,與numpy相似但是支持GPU運(yùn)算。 (2) 搭建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)的自動(dòng)微分功能。 我們將會(huì)使用一個(gè)全連接的ReLU網(wǎng)絡(luò)作為
    的頭像 發(fā)表于 02-15 10:01 ?1796次閱讀

    深度學(xué)習(xí)框架pytorch入門與實(shí)踐

    深度學(xué)習(xí)框架pytorch入門與實(shí)踐 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的一個(gè)分支,它使用多層神經(jīng)網(wǎng)絡(luò)對(duì)大量數(shù)據(jù)進(jìn)行學(xué)習(xí),以實(shí)現(xiàn)人工智能的目標(biāo)。在實(shí)現(xiàn)深度學(xué)習(xí)的過程中,選擇一個(gè)適用的開發(fā)框架是非常關(guān)鍵
    的頭像 發(fā)表于 08-17 16:03 ?1603次閱讀