學自莫凡python
搭建乙個簡單的神經網路,用一條曲線來擬合生成的資料點。下面是訓練過程中,擬合出的曲線和資料點的分布圖,訓練的最終誤差loss=0.0066。
# 1.匯入必要的模組
import torch
import torch.nn.functional as f # f中包含很多函式比如激勵函式
import matplotlib.pyplot as plt #用於繪圖
# 2.生成要擬合的資料點
# linspace(-1,1,100),從-1~1之間取100個數
# 因為torch只能處理二維資料,使用unsqueeze函式將一維資料轉換為二維資料
x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1)
# torch.squeeze(a,n)就是在a中指定位置n加上乙個維數為1的維度
# 將y設定為x的平方,並加入噪點的影響使資料點圍繞y=x^2周圍
y = x.pow(2) + 0.2 * torch.rand(x.size())
# plt.scatter(x.data.numpy(), y.data.numpy())
# plt.show()
# 3.搭建神經網路
class net(torch.nn.module):
# 設定神經網路屬性,定義各層的資訊
# n_feature代表輸入資料的個數,n_hidden是隱藏層神經元的個數,n_output輸出的個數
def __init__(self, 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)
# 前向傳遞過程
def forward(self, x):
x = f.relu(self.hidden(x))
x = self.predict(x)
return x
# 4.定義網路
net = net(1,8,1) # 定義乙個含有8個神經元的隱藏層,一次只輸入1個資料,輸出1個資料的網路
print(net)
# 設定乙個實時列印的過程,顯示在螢幕
plt.ion()
plt.show()
# 5.設定優化器
# 選擇sgd優化器對神經網路的全部引數進行優化,學習率設定為0.5
optimizer = torch.optim.sgd(net.parameters(),lr=0.5)
# 選擇均方差為計算誤差
loss_func = torch.nn.mseloss()
# 6.訓練
for t in range(100):
prediction = net(x) #產生**值
loss = loss_func(prediction, y) # 計算**值與真實值之間的誤差
optimizer.zero_grad() # 將網路中所有引數的梯度降為0
loss.backward() # 誤差反向傳播,並對每個節點計算梯度
optimizer.step() # 以學習率位0.5對梯度進行優化
# 每學習5步列印一次
if t % 5 == 0:
plt.cla() # # clear axis即清除當前圖形中的當前活動軸。其他軸不受影響。
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.data,
fontdict=) # 列印當前的loss值
plt.pause(0.1)
# 實時列印結束
plt.ioff()
plt.show()
搭建神經網路
1.import 2.train,test 3.model tf.keras.model.sequential 在sequential中描述網路結構,相當於走一遍前向傳播 4.model.compile 在compile中配置訓練方法,選擇哪個優化器,選擇什麼損失函式,選擇什麼評價指標 5.mode...
神經網路體系搭建(一) 神經網路
本篇是神經網路體系搭建的第一篇,解決體系搭建的前四個問題,詳見神經網路體系搭建 序 神經網路的定義就不再贅述,直接從最簡單的神經網路說起。將一系列輸入資料,通過訓練好的網路模型處理,得到輸出結果,這是神經網路決策的步驟。那麼我們的重點就是通過訓練得到網路模型。從上圖可以看出,模型的關鍵其實是尋找合適...
簡單搭建神經網路
簡單的神經網路 準備,前傳,後傳,迭代 下面是乙個簡單的神經網路搭建的 coding utf 8 import tensorflow as tf import numpy as np batch size 8 seed 23455 基於seed產生隨機數 rng np.random.randomst...