關係擬合
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 會反向計算在計算圖中用到的葉節點的梯...