W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在這個例子中,我們創(chuàng)建了一個由多個層組成的多層神經網絡,以提取訓練數(shù)據(jù)中的基礎模式。 這個多層神經網絡將像一個回歸器一樣工作。 我們將根據(jù)下面等式生成一些數(shù)據(jù)點: y = 2x2 + 8
。
如下所示導入必要的軟件包 -
import numpy as np
import matplotlib.pyplot as plt
import neurolab as nl
根據(jù)上述公式生成一些數(shù)據(jù)點 -
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)在,重塑這個數(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)在,構建神經網絡,其具有兩個隱藏層,第一隱藏層中具有十個神經元的神經元,第二隱藏層中六個,輸出層中一個神經元。
neural_net = nl.net.newff([[min_val, max_val]], [10, 6, 1])
現(xiàn)在使用梯度訓練算法 -
neural_net.trainf = nl.train.train_gd
現(xiàn)在訓練網絡的目標是學習上面生成的數(shù)據(jù) -
error = neural_net.train(data, labels, epochs = 1000, show = 100, goal = 0.01)
訓練數(shù)據(jù)點上運行神經網絡 -
output = neural_net.sim(data)
y_pred = output.reshape(num_points)
現(xiàn)在繪圖并可視化任務 -
plt.figure()
plt.plot(error)
plt.xlabel('Number of epochs')
plt.ylabel('Error')
plt.title('Training error progress')
現(xià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|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: