AI人工智能 單層神經網絡

2020-09-24 10:57 更新

在這個例子中,我們來創(chuàng)建一個單層神經網絡,它由獨立的神經元組成,這些神經元在輸入數據上起作用以產生輸出。 請注意,這里使用 neural_simple.txt 文件作為輸入。

如下所示導入所需的軟件包 -

import numpy as np
import matplotlib.pyplot as plt
import neurolab as nl

加載數據集如下代碼 -

input_data = np.loadtxt(“/Users/admin/neural_simple.txt')

以下是我們要使用的數據。 請注意,在此數據中,前兩列是特征,最后兩列是標簽。

array([[2. , 4. , 0. , 0. ],
      [1.5, 3.9, 0. , 0. ],
      [2.2, 4.1, 0. , 0. ],
      [1.9, 4.7, 0. , 0. ],
      [5.4, 2.2, 0. , 1. ],
      [4.3, 7.1, 0. , 1. ],
      [5.8, 4.9, 0. , 1. ],
      [6.5, 3.2, 0. , 1. ],
      [3. , 2. , 1. , 0. ],
      [2.5, 0.5, 1. , 0. ],
      [3.5, 2.1, 1. , 0. ],
      [2.9, 0.3, 1. , 0. ],
      [6.5, 8.3, 1. , 1. ],
      [3.2, 6.2, 1. , 1. ],
      [4.9, 7.8, 1. , 1. ],
      [2.1, 4.8, 1. , 1. ]])

現在,將這四列分成2個數據列和2個標簽 -

data = input_data[:, 0:2]
labels = input_data[:, 2:]

使用以下命令繪制輸入數據 -

plt.figure()
plt.scatter(data[:,0], data[:,1])
plt.xlabel('Dimension 1')
plt.ylabel('Dimension 2')
plt.title('Input data')

現在,為每個維度定義最小值和最大值,如下所示 -

dim1_min, dim1_max = data[:,0].min(), data[:,0].max()
dim2_min, dim2_max = data[:,1].min(), data[:,1].max()

接下來,如下定義輸出層中神經元的數量 -

nn_output_layer = labels.shape[1]

現在,定義一個單層神經網絡 -

dim1 = [dim1_min, dim1_max]
dim2 = [dim2_min, dim2_max]
neural_net = nl.net.newp([dim1, dim2], nn_output_layer)

訓練神經網絡的時代數和學習率如下所示 -

error = neural_net.train(data, labels, epochs = 200, show = 20, lr = 0.01)

現在,使用以下命令可視化并繪制訓練進度 -

plt.figure()
plt.plot(error)
plt.xlabel('Number of epochs')
plt.ylabel('Training error')
plt.title('Training error progress')
plt.grid()
plt.show()

現在,使用上述分類器中的測試數據點 -

print('\nTest Results:')
data_test = [[1.5, 3.2], [3.6, 1.7], [3.6, 5.7],[1.6, 3.9]] for item in data_test:
   print(item, '-->', neural_net.sim([item])[0])

下面是測試結果 -

[1.5, 3.2] --> [1. 0.]
[3.6, 1.7] --> [1. 0.]
[3.6, 5.7] --> [1. 1.]
[1.6, 3.9] --> [1. 0.]

您可以看到迄今為止討論的代碼的輸出圖表 -

img

img

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號