用pytorh建立神經網路的一般流程總結

2021-10-01 06:31:00 字數 2765 閱讀 2756

再net例項化

再epoch訓練

再net.eval()測試

3.2 pytorch的基本元素

(1)張量(tensor)

張量是pytorch中最基本的元素,相當於numpy.ndarray. 兩者的運算方式也如出一轍,在pytorch中也可以相互轉化。

(2)變數(variable)

tensor是pytorch中對numpy.ndarray的完美替代品,但搭建神經網路時,還需要variable來構建計算圖。variable是對tensor的封裝,是乙個存放會變化的值的地理位置,這個值就是tensor。每個variable有3個屬性:

variable.data: variable中tensor的值;

variable.grad:variable中tensor的梯度;

variable.gradfn:指向function物件,用於反向傳播的梯度計算之用。

(3)神經網路模組(nn.module)

nn是pytorch中專門為神經網路設計的藉口。nn.module是nn中乙個重要的類,的含各種網路層的定義以及前向傳播(forward pass)的方法。在定義自己的神經網路時,需要繼承nn.module類,並實現自己的forward方法

通用**實現流程

以pytorch為例,乙個常規的深度學習**開發流程如下:

4.1 安裝並匯入相關的深度學習庫

import torch   

from torch.autograd import variable

import torch.nn

4.2 資料獲取和預處理

準備好需要使用的訓練資料和測試資料,並進行相應的預處理,如歸一化,零均值,剪下,翻轉等等

import torch.data.dataloader as dataloader 

import torchvision

4.3 定義神經網路

神經網路的定義需要繼承torch.nn.module類,包括初始化__init__(self)和自定義的前向傳播層forward(self, x)

(1)init(self):放置有可學習引數的層,如卷積層,全連線層等

(2)forward(self, x):輸入x,按照前向傳播演算法,使用卷積等操作來得到神經網路最終的輸出。

class

net(torch.nn.module)

:def

__init__

(self)

:super

(net, self)

.__init__(

) self.hidden = torch.nn.linear(1,

20)# 隱藏層

self.predict = torch.nn.linear(20,

1)# 輸出層

defforward

(self, x)

: x = f.relu(self.hidden(x)

)# 隱藏層的啟用函式

x = self.predict(x)

# 線性輸出層

return x

net = net(n_feature=

2, n_hidden=

10, n_output=

2)

4.4 定義損失函式(loss function)和優化器(optimizer)

損失函式用來衡量網路**的輸出和實際標籤值之間的差距。通過反向傳播的計算,通過優化器提供的方式來調整神經網路的引數。

loss_func = torch.nn.crossentropyloss(

)#損失函式

optimizer = torch.optim.sgd(net.parameters(

), lr=

0.02

)#優化器

4.5 訓練網路

訓練網路的目的是通過最小化誤差的方法來調整網路的引數,使得網路可以對輸入資料進行準確的**。包括如下的步驟:

(1)獲取訓練資料和標籤:

(2)前向傳播

(3)計算損失函式

(4)清零優化器

(5)反向傳播並更新引數

torch_dataset = data.tensordataset(x, y)

# (1) 獲取訓練資料

loader = data.dataloader(dataset=torch_dataset, \

batch_size=batch_size, shuffle=

true

, num_workers=2,

)# (1) 封裝資料

for t in

range

(100):

out = net(x)

# (2) 前向傳播

loss = loss_func(out, y)

# (3) 計算損失函式

optimizer.zero_grad(

)# (4) 清空優化器

loss.backward(

)# (5) 誤差反向傳播, 計算引數更新值

optimizer.step(

)# (5) 更新網路引數

4.5 測試網路

將測試資料輸入網路的到相應的**輸出,和真實輸出作比較,並評估**效果。

prediction = net(x_test)

神經網路的認識(一)神經網路的認識

特徵提取 我的理解就是將物體資料化,將乙個實體盡可能的描述成計算機可以懂得話,就比如定義乙個人,姓名 性別 愛好 出生地 出生日期 這樣可以給他打足夠多的標籤,就可以定義他是誰了,這個標籤就是特徵。使用神經網路有4個步驟 提取問題中實體的特徵向量作為神經網路的輸入,不同實體可以提取不同的特徵向量 定...

神經網路(一)

神經網路 想讓計算機模擬大腦處理資訊的過程。如 有一杯水,手摸一下,收集溫度資訊,在神經元中進行傳遞,心中有乙個預設值,看是否溫度太高,還是太低。感知機 人工神經網路 神經網路的發展 傑弗里 埃弗里斯特 辛頓。英語 geoffrey everest hinton 是一位英國出生的計算機學家和心理學家...

神經網路 一

神經元是神經網路的基本組成。神經網路的神經元,是模仿生物的神經元結構。影象如下 為了形象理解,可以將上圖簡化如下 在這個神經元中,input的feature 可以有很多維度,output也可以有很多的 layer。感知機 1 感知機是網路神經的基礎,感知機也被稱為單層神經網路 即,單個神經元也稱作感...