2013-04-07 53 views
0

我正在編程一個非常簡單的感知器在Python中沒有閾值,我使用sigmoid函數,但我需要一個明確的指導方針,我有一個混淆如何構建輸出。在Python中的簡單感知器

Input = [(1,1,0), (0,1,0),(1,1,1),(0,0,1)] 
weights = [0,0,0] 
output = sigmoid(input) 
sigmoid = 1.0/(1.0 + exp(- Input) 
sigmoid_derative = sigmoid * (1.0 - sigmoid) 

我沒有在python中測試代碼,但它只是一個頭腦風暴,因爲我從講座中學到了。但我不確定何時使用sigmoid_derative? 據我所知,激活功能將有2個部分:

  1. 加法:newInput= w1x1 + w2x2 + w3x3
  2. sigmoid = 1.0/(1.0 + exp(- newInput)

然後,我們將有誤差函數,以便知道如果權重是準確的。

Error = 0.5 * (Target - Output)* (Target- Output) 
if Error == 0 then Break; 
else 
Update weights. 

回答

0
  1. 這不是Python代碼在所有。據我瞭解,它是一種僞代碼。
  2. 你的問題更多的是一個概念問題,與Python或編碼無關。所以爲了給你一個清晰的想法,你需要先按照你所做的方式計算newInput。用作激活功能的S形函數爲您提供最終輸出(實際輸出)。該輸出與目標輸出進行比較以獲取用於更新權重的錯誤值。對於所有輸入曆元,通過歷元重複該迭代,直到誤差值低於合適的標記。終止該算法的另一種可能方式是設置允許的最大時期數。