AI人工智能 多層神經網絡

2020-09-24 11:03 更新

在這個例子中,我們創(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í)行上述代碼,您可以觀察如下所示的圖形 -

img

img

img

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號