神經網路的簡單實現

2021-10-25 08:14:32 字數 2417 閱讀 2623

在吳恩達的機器學習教程中,講解了同或邏輯運算的神經網路實現原理,我將其用python語言實現一下。異或即相同取1,不同取0,真值表如下:

x1x2

x1 xnor x200

1100

0101

11同或運算的神經網路包括三層:輸入層、隱藏層、輸出層。首先需要實現以下三個部分:

(1)x1 and x2

與運算的真值表如下:

x1x2

x1 and x200

0100

0101

11使用神經網路來實現的話,其權重矩陣為:[-30,20,20]。示意圖如下:

假設輸入的x1和x2為[1,0],加上偏置項後與權重向量相乘:1*(-30)+1*20+0*20=(-10),而-10經過啟用函式後輸出近似為0。假設輸入的是[1,1],加上偏置項後與權重向量相乘:1*(-30)+1*20+1*20=10,經過啟用函式後輸出近似為1,這樣就實現了與運算。

(2)(not x1) and (not x2)

該運算的真值表如下:

x1x2

(not x1) and (not x2)00

1100

0101

10使用神經網路來實現,其權重矩陣為:[10,-20,-20]。示意圖如下:

假設輸入的x1和x2為[0,0],加上偏置項後與權重向量相乘:1*10+0*(-20)+0*(-20)=10,經啟用函式後輸出近似為1。假設輸入的為[1,0],加上偏置項後與權重向量相乘:1*10+1*(-20)+0*(-20)=-10,經啟用函式後輸出近似為0。

(3)x1 or x2。

或運算的真值表如下:

x1x2

x1 or x200

0101

0111

11使用神經網路來實現,其權重矩陣為:[-10,20,20],示意圖如下:

假設輸入的x1和x2為[0,0],加上偏置項後與權重向量相乘:1*(-10)+0*20+0*20=(-10),經啟用函式後輸出近似為0;假設輸入的是[1,1],加上偏置項後與權重向量相乘:1*(-10)+1*20+1*20=30,經啟用函式後輸出近似為1。 

將上述實現的三個部分組合起來,如下圖所示:

神經網路中的三個引數矩陣分別對應了上面實現的三個神經網路的引數矩陣。其計算過程為:

x1x2

a1a2

h(x)00

0111

0000

0100

0111

01在將乙個單元的輸出作為另乙個單元的輸入時,由於啟用函式的影響,輸出的值並不是準確的0或1,而直接使用python中的int()函式會將數值的小數部分直接捨掉。這時可以用計算機中的四捨五入來將其規範為整數值,即int(x+0.5)。

import numpy as np

# 啟用函式

def sigmoid(x):

return 1 / (1 + np.exp(-x))

class neuron():

def __init__(self, weights1,weights2,weights3):

self.weights1=weights1

self.weights2=weights2

self.weights3=weights3

def xnor(self, inputs):

inputs=np.insert(inputs,0,1)

a1=np.dot(self.weights1,inputs)

a2=np.dot(self.weights2,inputs)

g=[1,int(sigmoid(a1)+0.5),int(sigmoid(a2)+0.5)]

b=np.dot(self.weights3,g)

return sigmoid(b)

weights1 = np.array([-30,20,20])

weights2 = np.array([10,-20,-20])

weights3 = np.array([-10,20,20])

n = neuron(weights1,weights2, weights3)

# inputs

x = np.array([0,0])

print(n.xnor(x))

實現簡單的神經網路

python語言 tensorflow框架實現簡單的神經網路 訓練神經網路的過程一般分為3個步驟 不隨網路結構的變化而變化 1.定義網路結構和前向傳播的輸出結果 2.定義損失函式以及選擇反向傳播優化演算法 3.生成會話,並在訓練資料上反覆執行反向傳播優化演算法 完整 如下 import tensor...

TensorFlow 實現簡單神經網路

該神經網路有x1,x2兩個輸入 隱藏層有3個神經元 所以w1為2 3矩陣 輸出只有乙個y 所以w2為3 1 矩陣 import tensorflow as tf import os os.environ tf cpp min log level 2 import numpy as np batch ...

神經網路 python實現神經網路

神經網路系列目錄 神經網路 神經網路原理介紹 bp演算法 神經網路 sklearn引數介紹及應用 神經網路實戰 主播綜合評分回歸 實戰 最小二乘法 梯度下降法區別及python實現 本篇博文通過python 實現神經網路,採用sklearn自帶的手寫數字集,看分類情況如何 一 匯入資料集並標準化 資...