在吳恩達的機器學習教程中,講解了同或邏輯運算的神經網路實現原理,我將其用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自帶的手寫數字集,看分類情況如何 一 匯入資料集並標準化 資...