# 回歸任務
# 步驟一 建立資料
import torch
import torch.nn as nn
import torch.nn.functional as f
import matplotlib.pyplot as plt
#生成-1到1等差數列 一百個點
x=torch.linspace(-1
,1,100
)# 訓練集資料需要的是二維,float型別
# 公升維
x=torch.unsqueeze(x,dim=1)
print
("x.shape,"
,x.numpy(
).shape)
#print(x)
# x的平方
y=x.
pow(2)
+0.2
*(torch.rand(x.size())
)# plt.scatter(x.numpy(),y.numpy())
# plt.show()
# 建立模型 三層神經網路 輸入層(乙個神經元)
# ,隱藏層(八個神經元)
# ,隱藏層(十個神經元)
# ,隱藏層(十個神經元)
# 輸出層(乙個神經元)
class
net(torch.nn.module)
:def
__init__
(self)
:super
(net,self)
.__init__(
) self.h1 = nn.linear(1,
8,bias=
true
) self.h2 = nn.linear(8,
10)self.h3 = nn.linear(10,
10)self.out = nn.linear(10,
1)defforward
(self, x)
:# 正向傳播,定義神經網路層的順序
x = self.h1(x)
x = f.relu(x)
x = self.h2(x)
x = f.relu(x)
x = self.h3(x)
x = f.relu(x)
o = self.out(x)
return o
model=net(
)loss_fn=nn.mseloss(
)#隨機梯度下降(sgd)跟新梯度 建立物件
#model.parameters() 模型裡所有的引數
optimizer=torch.optim.sgd(model.parameters(),\
lr=0.3)
plt.ion(
)for i in
range
(100):
o=model(x)
#o=model.forward(x)
#計算均方誤差
loss=loss_fn(o,y)
# (0-y)^2求和 tensor物件
print
(loss.item())
#拿出tensor物件資料
optimizer.zero_grad(
)#在梯度的儲存空間中 把梯度全部清零
#反向傳播跟新引數
loss.backward(
)#求引數的偏導
optimizer.step(
)if i%5==
0:plt.cla(
)#訓練集資料
plt.scatter(x.numpy(
),y.numpy())
#**資料
plt.plot(x.numpy(
),o.data.numpy(),
'r')
plt.pause(
0.1)
plt.ioff(
)plt.show(
)# x = torch.randn(128, 20) # 輸入的維度是(128,20)
# m = torch.nn.linear(20, 30) # 20,30是指維度
# output = m(x)
# print('output.shape:\n', output.shape)
神經網路模型
神經網路往往不需要人為的構造資料特徵,因為乙個神經元就可以看做是原始資料的不同特徵的組合,在神經元數目足夠大,層數足夠多的情況下,是很容易準確的進行分類的.神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經系統對真實世界物體所做出的互動反應 神經元模型 m p神經元模...
神經網路學習筆記(六) 廣義回歸神經網路
可以看出,這個結構與之前我們所講過的徑向基神經網路非常相似,區別就在於多了一層加和層,而去掉了隱含層與輸出層的權值連線。1.輸入層為向量,維度為m,樣本個數為n,線性函式為傳輸函式。2.隱藏層與輸入層全連線,層內無連線,隱藏層神經元個數與樣本個數相等,也就是n,傳輸函式為徑向基函式。3.加和層中有兩...
GRNN廣義回歸神經網路
廣義回歸神經網路 grnn 廣義回歸神經網路是徑向基神經網路的一種,grnn具有很強的非線性對映能力和學習速度,比rbf具有更強的優勢,網路最後普收斂於樣本量集聚較多的優化回歸,樣本資料少時,效果很好,還可以處理不穩定資料。雖然grnn看起來沒有徑向基精準,但實際在分類和擬合上,特別是資料精準度比較...