實現乙個最簡單的神經網路

2021-07-25 10:44:52 字數 1832 閱讀 3506

這次實現乙個最簡單的神經網路,這個神經網路能判斷輸入的是奇數還是偶數
通常咱們寫程式

就要寫成這樣了

if(inputnumber % 2)

else

但是神經網路不是這樣的

首先來想一下,嬰兒時怎麼學習的。

嬰兒要學習乙個東西,比如漢語

嬰兒在剛出生的時候是不會任何和漢語相關的知識的

是嬰兒在後來逐漸的學習和訓練的過程中,才學會了漢語

同樣的,假如咱們用寫程式來模仿這個過程,那麼咱們程式也能想嬰兒一樣

實現複雜的功能,比如學會漢語。

下面給出神經網路的結構

這就是最簡單的神經網路了

現在有m個輸入,m個權值

每乙個輸入x相應的權值,最後把所有值求和,在加上偏執

這就得到了輸入

再下面就是乙個「啟用函式」

最簡單的啟用函式是「閾值函式」

這裡咱們實現乙個最簡單的神經網路就是利用的這個啟用函式

實現需要幾個部分

1. 定義權值

2. 定義輸入

3. 定義正確的輸出

4. 定義計算的輸出

5. 初始化權值

6. 訓練

7. 驗證

程式如下

/**

*最簡單的神經網路,判斷奇偶數

* write by sxt

*///權值

int m[10];

//輸入

int x[10] = ;

//理想輸出 0 表示奇數, 1表示偶數,用於訓練和計算輸出的相比較

//代表陣列下標是奇數還是偶數

int y[10] = ;

//實際計算輸出

int o[10];

//偏置,這個值,這裡是任意取值的

int bk = 0;

//初始化權值

void initm () }

/* 躍遷型啟用函式 */

int active (int m, int x)

else /* 計算輸出向量 */

void calcy () }

/** 根據實際輸出向量和理想輸出向量調整權向量,

返回 實際輸出和理想輸出不匹配的數目 **/

int adjustm ()

else

} } return err;/* 列印權向量 */

void printm () }

void test (int input)

else

} int main ()

printf ("錯誤數 %d\n", err);

} printf ("訓練正確,訓練次數%d\n", n);

printm ();

printf ("偏置 %d 訓練次數 %d\n", bk, n);

while (1)

test (a);

} return 0;

動手實現乙個簡單神經網路

import numpy as np 定義乙個啟用函式 defsigmoid x,deriv false if deriv true return x 1 x return 1 1 np.exp x 構造樣本 x np.array 1,0,1,0,1,1 1,1,1,0,1,1 1,0,1,0,0,...

乙個簡單完整的神經網路的實現

coding utf 8 filename 乙個簡單完整的神經網路的實現 software pycharm author li xu time 2020 01 16 import numpy as np defsigmoid x 定義乙個啟用函式 param x 引數 return 計算後的值 fu...

乙個簡單的神經網路例子

來自神經網路之家 日期 2015 07 1611 18 37.0 用於訓練的輸入資料 對應的輸出資料 我們這裡設定 1 節點個數設定 輸入層 隱層 輸出層的節點個數分別為 2 3,1 2 傳遞函式設定 隱層 tansig函式 輸出層 purelin函式 3 訓練方式 trainlm。即得到下圖的模型...