pytorch神經網路學習筆記 2

2021-10-07 16:30:15 字數 2103 閱讀 5683

關係擬合

import torch

from torch.autograd import variable

import torch.nn.functional as f

import matplotlib.pyplot as plt

x = torch.unsqueeze(torch.linspace(-1

,1,100

),dim=1)

# unsqueeze把一維資料變成二維資料

# torch當中只能處理二維資料

y = x.

pow(2)

+0.2

*torch.rand(x.size())

#y=x^2+一些噪點的影響

x,y =variable(x)

,variable(y)

#因為神經網路只能輸入variable

#plt.scatter(x.data.numpy(),y.data.numpy())

#列印散點圖

#plt.show()

class

net(torch.nn.module)

:#繼承torch的乙個模組

def__init__

(self,n_feature,n_hidden,n_output)

:#n_feature輸入層,n_hidden隱藏層,n_output輸出層

super

(net,self)

.__init__(

) self.hidden = torch.nn.linear(n_feature,n_hidden)

self.predict = torch.nn.linear(n_hidden,n_output)

defforward

(self,x)

:#搭建神經網路前向傳遞的一些過程

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

) x = self.predict(x)

return x

net = net(1,

10,1)

print

(net)

#視覺化

plt.ion(

)plt.show(

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

),lr=

0.5)

#優化神經網路,傳遞引數,lr是學習效率,也是梯度下降幅度

loss_func = torch.nn.mseloss(

)#均方差

#訓練for t in

range

(100):

prediction = net(x)

loss = loss_func(prediction,y)

#計算誤差,prediction是**值,y是真實值

optimizer.zero_grad(

)#梯度全部設為0

loss.backward(

)#反向傳遞

optimizer.step(

)#以lr來優化梯度

if t%5==

0:#畫出學習過程

plt.cla(

)#清屏

plt.scatter(x.data.numpy(

),y.data.numpy())

#畫散點圖

plt.plot(x.data.numpy(

),prediction.data.numpy(),

'r-'

,'lw=5'

)#畫線

plt.text(

0.5,0,

'loss=%.4f'

% loss.item(

),fontdict=

)#畫誤差值

plt.pause(

0.5)

#每隔0.5秒畫一次

gif圖動態展示搭建的效果

參考:莫煩python教學

Pytorch學習筆記 五 多層神經網路

本次設計乙個簡單的三層神經網路模型。上一章學習了乙個線性的分類模型。但如果資料集無法用一條線 乙個面進行分類呢?此時神經網路就有用武之地了。但是本次實驗還是用的上次的資料集,有效果就行 import torch import numpy as np o data 讀取資料 with open dat...

PyTorch學習之神經網路

神經網路可以通過torch.nn包來構建,它是基於自動梯度來構建一些模型,乙個nn.module包括層和乙個方法forward input 同時也會返回乙個輸出 output 下圖是乙個簡單的前饋神經網路lenet,乙個簡單的神經網路包括一下幾點 super net,self 首先找到 net 的父...

pytorch實現神經網路

import torch import torch.nn as nn import torch.nn.functional as f import inspect import torch.optim as optim 自動求導機制 對乙個標量用backward 會反向計算在計算圖中用到的葉節點的梯...