AI人工智能 單層神經(jīng)網(wǎng)絡(luò)

2020-09-24 10:57 更新

在這個(gè)例子中,我們來(lái)創(chuàng)建一個(gè)單層神經(jīng)網(wǎng)絡(luò),它由獨(dú)立的神經(jīng)元組成,這些神經(jīng)元在輸入數(shù)據(jù)上起作用以產(chǎn)生輸出。 請(qǐng)注意,這里使用 neural_simple.txt 文件作為輸入。

如下所示導(dǎo)入所需的軟件包 -

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

加載數(shù)據(jù)集如下代碼 -

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

以下是我們要使用的數(shù)據(jù)。 請(qǐng)注意,在此數(shù)據(jù)中,前兩列是特征,最后兩列是標(biāo)簽。

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. ]])

現(xiàn)在,將這四列分成2個(gè)數(shù)據(jù)列和2個(gè)標(biāo)簽 -

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

使用以下命令繪制輸入數(shù)據(jù) -

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

現(xiàn)在,為每個(gè)維度定義最小值和最大值,如下所示 -

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

接下來(lái),如下定義輸出層中神經(jīng)元的數(shù)量 -

nn_output_layer = labels.shape[1]

現(xiàn)在,定義一個(gè)單層神經(jīng)網(wǎng)絡(luò) -

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

訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時(shí)代數(shù)和學(xué)習(xí)率如下所示 -

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

現(xiàn)在,使用以下命令可視化并繪制訓(xùn)練進(jìn)度 -

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

現(xiàn)在,使用上述分類(lèi)器中的測(cè)試數(shù)據(jù)點(diǎn) -

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])

下面是測(cè)試結(jié)果 -

[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

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)