類腦科學實驗(二) 感知器模型實現及分類實驗

2021-09-23 14:27:50 字數 3524 閱讀 4476

感知器,也可翻譯為感知機,是frank rosenblatt在2023年就職於cornell航空實驗室(cornell aeronautical laboratory)時所發明的一種人工神經網路。

它可以被視為一種最簡單形式的前饋式人工神經網路,是一種二元線性分類器。

感知器是生物神經細胞的簡單抽象,神經細胞結構大致可分為:樹突、突觸、細胞體及軸突。

單個神經細胞可被視為一種只有兩種狀態的機器——激動時為『是』,而未激動時為『否』。

神經細胞的狀態取決於從其它的神經細胞收到的輸入訊號量,及突觸的強度(抑制或加強)。

當訊號量總和超過了某個閾值時,細胞體就會激動,產生電脈衝。電脈衝沿著軸突並通過突觸傳遞到其它神經元。

為了模擬神經細胞行為,與之對應的感知機基礎概念被提出,如權量(突觸)、偏置(閾值)及啟用函式(細胞體)。

將權重初始化為 0 或乙個很小的隨機數

unit_step = lambda x: 0 if x < 0 else 1

w=np.random.rand(len(input_data[0]))#隨機生成[0,1)之間,作為初始化w

bias=0.0#偏置

對於每個訓練樣本 x(i) 執行下列步驟:

計算輸出值 y^.

更新權重

for i in range(iteration):

samples= zip(input_data,y)

for (input_i,label) in samples:#對每一組樣本

#計算f(w*xi+b),此時x有兩個

result=input_i*w+bias

#print(result)

result=float(sum(result))

print(result)

y_pred=float(unit_step(result))#計算輸出值 y^

w=w+rate*(label-y_pred)*np.array(input_i)#更新權重

bias=rate*(label-y_pred)#更新bias

return w,bias

設定初始資料

def load_data():

input_data=[[1,1], [0,0], [1,0], [0,1]]

labels=[1,0,0,0]

return input_data,labels

設定輸出函式

'''1.將權重初始化為 0 或乙個很小的隨機數

2.對於每個訓練樣本 x(i) 執行下列步驟:

計算輸出值 y^.

更新權重

'''def

load_data()

: input_data=[[

1,1]

,[0,

0],[

1,0]

,[0,

1]] labels=[1

,0,0

,0]return input_data,labels

deftrain_pre

(input_data,y,iteration,rate)

:#*************************==

''' 引數:

input_data:輸入資料

y:標籤列表

iteration:訓練輪數

rate:學習率

'''#*************************===

unit_step =

lambda x:

0if x <

0else

1 w=np.random.rand(

len(input_data[0]

))#隨機生成[0,1)之間,作為初始化w

bias=

0.0#偏置

for i in

range

(iteration)

: samples=

zip(input_data,y)

for(input_i,label)

in samples:

#對每一組樣本

#計算f(w*xi+b),此時x有兩個

result=input_i*w+bias

result=

float

(sum

(result)

) y_pred=

float

(unit_step(result)

)#計算輸出值 y^

w=w+rate*

(label-y_pred)

*np.array(input_i)

#更新權重

bias=rate*

(label-y_pred)

#更新bias

return w,bias

defpredict

(input_i,w,b)

: unit_step =

lambda x:

0if x <

0else

1#定義啟用函式

result=result=result=input_i*w+b

result=

sum(result)

y_pred=

float

(unit_step(result)

)print

(y_pred)

if __name__==

'__main__'

: input_data,y=load_data(

) w,b=train_pre(input_data,y,20,

0.01

) predict([1

,1],w,b)

效能測試更像一次科學實驗

工具入手,儲存,資料庫,網路,中介軟體等 效能測試可以讓我們在未來的職場中更有優勢 以某一具體專案為例,如何開展一次全面的效能測試,具體的流程都有哪些?測試人員對效能場景規劃,設計,執行及結果分析應該如何恰當的落實到每個具體環節中?熟悉效能測試需求,編寫效能測試計畫,工具選型,開發效能測試指令碼,搭...

腦科學導論 第二堂筆記

1 ted演講 訊號收集裝置上百萬 應用智慧型家居的控制 虛擬實境人物表情的控制 2 想法 1 利用體脂的原理,檢測人體成分,達到生物識別的效果 用於智慧型家居和其他的門禁 3 課件想法 1 突觸的形成是神經網路構建和神經細胞發育的核心問題 神經網路系統演算法,cpu現在是二維構架,以後一定是3維構...

製作泡泡龍 一堂有關於泡泡龍科學實驗的精彩課堂

師 親愛的小朋友們,你們好,歡迎來到摩爾星球實驗課堂,你們能聽見我的聲音嗎。生 能 師 那現在我們所有的寶貝已經進入實驗課堂了,為了能保證我們實驗課的順利進行,老師想再次確認一下 各位寶貝,你們能聽見我的聲音嗎。生 能 師 好,寶貝們表現的都非常棒,那在課程開始之前,我要先向小朋友們做個自我介紹,我...