1.為什么選擇PyTorch
1)簡潔:追求更少封裝,避免重復造輪子
2)速度:靈活性不以速度為代價
3)易用:語法優雅,簡單易學
4)資源:社區豐富,維護及時
2.基礎入門
1)安裝(pip install torch)
2)創建tensor(PyTorch重要的數據結構)
3)自動求導
import numpy as np
import torch
#創建3行4列tensor,設置自動求導
x = torch.randn(3,4,requires_grad=True)
#輸出結構
x
#初始化b
b = torch.randn(3,4,requires_grad=True)
#計算t
t = x + b
#求和
y = t.sum()
#反向傳播計算
y.backward()
#輸出b梯度
b.grad
實戰一個例子(計算過程如下):
#計算流程
x = torch.rand(1)
b = torch.rand(1, requires_grad = True)
w = torch.rand(1, requires_grad = True)
y = w * x
z = y + b
#如果不清空會累加起來
z.backward(retain_graph=True)
#w梯度
w.grad
#b梯度
b.grad
3.搭建線性回歸模型
1)構造數據
2)初始化參數
3)前向傳播
4)模型訓練
5)預測結果
6)保存模型
#初始化x值
x_values = [i for i in range(11)]
#轉換為ndarray
x_train = np.array(x_values, dtype=np.float32)
#維度轉換
x_train = x_train.reshape(-1, 1)
#查看形狀,(11,1)
x_train.shape
#計算y值
y_values = [2*i + 1 for i in x_values]
#轉換為ndarray
y_train = np.array(y_values, dtype=np.float32)
#維度轉換
y_train = y_train.reshape(-1, 1)
#查看形狀,(11,1)
y_train.shape
import torch
import torch.nn as nn
#線性回歸模型(本質是一個不加激活函數的全連接層)
class LinearRegressionModel(nn.Module):
#初始化參數
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)
#輪數
epochs = 1000
#學習率
learning_rate = 0.01
#隨機梯度下降算法
optimizer = torch.optim.SGD(model.parameters(),
lr=learning_rate)
#定義均方損失函數
criterion = nn.MSELoss()
#遍歷每一輪(這里使用CPU進行訓練,建議使用GPU速度快)
for epoch in range(epochs):
#計算輪數
epoch += 1
#注意轉換成tensor
inputs = torch.from_numpy(x_train)
labels = torch.from_numpy(y_train)
#梯度要清零每一次迭代
optimizer.zero_grad()
#前向傳播
outputs = model(inputs)
#計算損失
loss = criterion(outputs, labels)
#返向傳播
loss.backward()
#更新權重參數
optimizer.step()
#每50輪輸出損失值
if epoch % 50 == 0:
print('epoch {}, loss {}'.format(epoch, loss.item()))
#預測訓練數據集
predicted = model(torch.from_numpy(x_train).requires_grad_()).data.numpy()
#輸出結果,跟我們真實y值幾乎沒有差別
predicted
#保存模型
torch.save(model.state_dict(), 'model.pkl')
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
速度
+關注
關注
1文章
33瀏覽量
15710 -
資源
+關注
關注
0文章
59瀏覽量
18120 -
pytorch
+關注
關注
2文章
809瀏覽量
13770
發布評論請先 登錄
相關推薦
熱點推薦
如何往星光2板子里裝pytorch?
如題,想先gpu版本的pytorch只安裝cpu版本的pytorch,pytorch官網提供了基于conda和pip兩種安裝方式。因為咱是risc架構沒對應的conda,而使用pip安裝提示也沒有
發表于 09-12 06:30
Pytorch入門教程與范例
的深度學習框架。 對于系統學習 pytorch,官方提供了非常好的入門教程?,同時還提供了面向深度學習的示例,同時熱心網友分享了更簡潔的示例。 1. overview 不同于 theano
發表于 11-15 17:50
?5566次閱讀

PyTorch官網教程PyTorch深度學習:60分鐘快速入門中文翻譯版
“PyTorch 深度學習:60分鐘快速入門”為 PyTorch 官網教程,網上已經有部分翻譯作品,隨著PyTorch1.0 版本的公布,這個教程有較大的代碼改動,本人對教程進行重新翻
基于PyTorch的深度學習入門教程之PyTorch的安裝和配置
神經網絡結構,并且運用各種深度學習算法訓練網絡參數,進而解決各種任務。 本文從PyTorch環境配置開始。PyTorch是一種Python接口的深度學習框架,使用靈活,學習方便。還有其他主流的深度學習框架,例如Caffe,TensorFlow,CNTK等等,各有千秋。筆者
基于PyTorch的深度學習入門教程之PyTorch簡單知識
本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 Part2:
基于PyTorch的深度學習入門教程之PyTorch的自動梯度計算
本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 Part2:
基于PyTorch的深度學習入門教程之使用PyTorch構建一個神經網絡
? ? ? ? 前言 本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 P
基于PyTorch的深度學習入門教程之訓練一個神經網絡分類器
前言 本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 Part2:
基于PyTorch的深度學習入門教程之DataParallel使用多GPU
前言 本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 Part2:
基于PyTorch的深度學習入門教程之PyTorch重點綜合實踐
前言 PyTorch提供了兩個主要特性: (1) 一個n維的Tensor,與numpy相似但是支持GPU運算。 (2) 搭建和訓練神經網絡的自動微分功能。 我們將會使用一個全連接的ReLU網絡作為
深度學習框架pytorch入門與實踐
深度學習框架pytorch入門與實踐 深度學習是機器學習中的一個分支,它使用多層神經網絡對大量數據進行學習,以實現人工智能的目標。在實現深度學習的過程中,選擇一個適用的開發框架是非常關鍵
評論