W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
在這個(gè)例子中,我們創(chuàng)建了一個(gè)由多個(gè)層組成的多層神經(jīng)網(wǎng)絡(luò),以提取訓(xùn)練數(shù)據(jù)中的基礎(chǔ)模式。 這個(gè)多層神經(jīng)網(wǎng)絡(luò)將像一個(gè)回歸器一樣工作。 我們將根據(jù)下面等式生成一些數(shù)據(jù)點(diǎn): y = 2x2 + 8
。
如下所示導(dǎo)入必要的軟件包 -
import numpy as np
import matplotlib.pyplot as plt
import neurolab as nl
根據(jù)上述公式生成一些數(shù)據(jù)點(diǎn) -
min_val = -30
max_val = 30
num_points = 160
x = np.linspace(min_val, max_val, num_points)
y = 2 * np.square(x) + 8
y /= np.linalg.norm(y)
現(xiàn)在,重塑這個(gè)數(shù)據(jù)集如下 -
data = x.reshape(num_points, 1)
labels = y.reshape(num_points, 1)
使用以下命令可視化并繪制輸入數(shù)據(jù)集 -
plt.figure()
plt.scatter(data, labels)
plt.xlabel('Dimension 1')
plt.ylabel('Dimension 2')
plt.title('Data-points')
現(xiàn)在,構(gòu)建神經(jīng)網(wǎng)絡(luò),其具有兩個(gè)隱藏層,第一隱藏層中具有十個(gè)神經(jīng)元的神經(jīng)元,第二隱藏層中六個(gè),輸出層中一個(gè)神經(jīng)元。
neural_net = nl.net.newff([[min_val, max_val]], [10, 6, 1])
現(xiàn)在使用梯度訓(xùn)練算法 -
neural_net.trainf = nl.train.train_gd
現(xiàn)在訓(xùn)練網(wǎng)絡(luò)的目標(biāo)是學(xué)習(xí)上面生成的數(shù)據(jù) -
error = neural_net.train(data, labels, epochs = 1000, show = 100, goal = 0.01)
訓(xùn)練數(shù)據(jù)點(diǎn)上運(yùn)行神經(jīng)網(wǎng)絡(luò) -
output = neural_net.sim(data)
y_pred = output.reshape(num_points)
現(xiàn)在繪圖并可視化任務(wù) -
plt.figure()
plt.plot(error)
plt.xlabel('Number of epochs')
plt.ylabel('Error')
plt.title('Training error progress')
現(xiàn)在將繪制實(shí)際與預(yù)測輸出關(guān)系圖 -
x_dense = np.linspace(min_val, max_val, num_points * 2)
y_dense_pred = neural_net.sim(x_dense.reshape(x_dense.size,1)).reshape(x_dense.size)
plt.figure()
plt.plot(x_dense, y_dense_pred, '-', x, y, '.', x, y_pred, 'p')
plt.title('Actual vs predicted')
plt.show()
執(zhí)行上述代碼,您可以觀察如下所示的圖形 -
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: