異或門可以通過其他閘電路進行表示,我們可以通過組合與門、與非門、或門實現異或門的邏輯功能(在大學的《數字電子技術基礎》這門課中,這個是非常基礎的知識哦)。在已知與門、與非門、或門的邏輯功能(真值表)的情況下,如何使用這些邏輯門組合出異或門的邏輯功能呢?
我們在這裡給大家提供一種思路,按照下面組合的方式將與門、與非門、或門填入不同的方框中,從而實現異或門的邏輯功能?
與門、與非門、或門分別使用下圖的符號表示。
下面我們公布答案,就是這個樣子。
以下的內容涉及到數位電路基礎,可以跳過
我們還提供另外一種思路,利用了數位電路的基礎知識。我們可以從異或門真值表入手,列出其邏輯表示式,然後按照邏輯運算的方式將邏輯表示式變形為上圖的組合方式。
首先,根據真值表列出邏輯表示式。按照下面的規則:
或者您可以找數位電路基礎的資料來看一下。
這樣,我們就得到了輸入為x1 x2,通過與非門、或門和與門組合而實現異或功能的電路了。
從這裡繼續正文
下面我們來確認一下上面的組合是否實現了異或門的邏輯功能,我們將第一級兩個邏輯門的輸出結果也標記出來,分別記為s1和s2。結果如下表所示:
可以看到,與異或門真值表完全一致,下面我們考慮如何用**實現這種組合方式。
我們使用之前定義的與門and函式、與非門nand函式、或門or函式,具體實現如下:
哈哈,看起來很簡單吧,**易讀性非常強,我們按照之前的套路,遍歷輸入所有情況,結果驗證:def
xor(x1, x2)
:# 定義異或函式xor
s1 = nand(x1, x2)
s2 = or(x1, x2)
y = and2(s1, s2)
return y
輸出:('xor(0, 0) 輸出為 '
+str
(xor(0,
0)))
('xor(0, 1) 輸出為 '
+str
(xor(0,
1)))
('xor(1, 0) 輸出為 '
+str
(xor(1,
0)))
('xor(1, 1) 輸出為 '
+str
(xor(1,
1)))
和預期一致。這樣,異或門的實現就完成了。下面我們試著用感知機的表示方法(明確地顯示神經元)來表示這個異或門,結果如下圖所示。xor(0,
0) 輸出為 0
xor(0,
1) 輸出為 1
xor(1,
0) 輸出為 1
xor(1,
1) 輸出為 0
通過上圖所示,異或門是一種多層結構的神經網路。這裡,將最左邊的一列稱為第0層,中間的一列稱為第1層,最右邊的一列稱為第2層。
異或門的感知機與前面介紹的與門、或門的感知機形狀不同。實際上,與門、或門是單層感知機,而異或門是2層感知機。疊加了多層的感知機也稱為多層感知機(multi-layered perceptron)。 異或門感知機總共由3層構成,但是因為擁有權重的層實質上只有2層(第0層和第1層之間,第1層和第2層之間),所以稱為「2層感知機」。不過,有的文獻認為異或門的感知機是由3層構成的,因而將其稱為「3層感知機」。 我們這裡統一稱為2層感知機。
多層感知機的訊號是如何傳遞的呢?先在第0層和第1層的神經元之間進行訊號的傳送和接收,然後在第1層和第2層之間進行訊號的傳送和接收,具體如下所示。
1.第0層的兩個神經元接收輸入訊號,並將訊號傳送至第1層的神經元。這種2層感知機的執行過程可以比作流水線的組裝作業。第1段(第1層)的工人對傳送過來的零件進行加工,完成後再傳送給第2段(第2層)的工人。第2層的工人對第1層的工人傳過來的零件進行加工,完成這個零件後出貨(輸出)。2.第1層的神經元將訊號傳送至第2層的神經元,第2層的神經元輸出 y。
像這樣,在異或門的感知機中,工人之間不斷進行零件的傳送。通過這樣的結構(2層結構),感知機得以實現異或門。這可以解釋為「單層感知機無法表示的東西,通過增加一層就可以解決」。也就是說,通過疊加層(加深層),感知機能進行更加靈活的表示。
《動手學深度學習》多層感知機
多層感知機含有乙個隱藏層,以下是一種含單隱藏層的多層感知機的設計,其輸出o r n q boldsymbol in mathbb o rn q 的公式為 h x wh b h,o hwo bo begin boldsymbol boldsymbol boldsymbol h boldsymbol h...
深度學習入門 感知機
感知機是乙個比較古老的演算法 那麼我們為什麼要學它呢,主要是因為感知機也是神經網路 深度學習 的起源的演算法,接下來我們將簡單介紹感知機,並用感知機解決一些簡單的問題。感知機就相當於乙個神經元,接受乙個或多個訊號時,輸出乙個訊號,0 1。輸入的每個訊號乘以固定的權重,當他們的總和超過某個界限時,才會...
《動手學深度學習》之多層感知機
先看看多層感知機的定義 多層感知機 和softmax回歸唯一的不同在於 我們多加了乙個全連線層作為隱藏層。它的隱藏單元個數為256,並使用relu函式作為啟用函式。import torch from torch import nn from torch.nn import init import n...