再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 感知機是網路神經的基礎,感知機也被稱為單層神經網路 即,單個神經元也稱作感...