eigen(二) 神經網路前向

2021-07-23 02:32:17 字數 2405 閱讀 8144

void

array2matrix()

; matrixxf mat1 = map

(array1,2,

3); cout << mat1 << endl;

//預設是colmajor,output:

//1 3 5

//2 4 6

//假設array原始的矩陣是以下形式(rowmajor)

//1 2 3

//4 5 6

float array2=

; matrix<

float

, dynamic, dynamic, rowmajor> mat2;

mat2 = map

float,2

,3, rowmajor>

>

(array2)

; cout << mat2 << endl;

//matrix的rowmajor/colmajor,需要跟原始矩陣儲存為raw-array對應上,output:

//1 2 3

//4 5 6

}void

changeelement()

; map

map1

(array1,2,

3);printf

("array1 start address=%x, map1 data start address=%x\n"

, array1, map1.

data()

);//位址相同,所以map和raw-array共享記憶體位址

map1(0

,0)=

11;for(

int i =

0; i <6;

++i)

//修改map的值,raw-array受影響,output:

//11

//2//3

//4//5

//6 array1[5]

=11; cout << map1 << endl;

//修改raw-array的值,map受影響,output:

//11 3 5

//2 4 11

float array2=

; matrixxf mat2 = map

(array2,2,

3);printf

("array2 start address=%x, mat2 data start address=%x\n"

, array2, mat2.

data()

);//位址不同,matrix複製構造了map,此時位址並不一致

mat2(0

,0)=

11;for(

int i =

0; i <6;

++i)

//修改matrix的值,raw-array並不會受影響,output:

//1//2

//3//4

//5//6

array2[5]

=11; cout << mat2 << endl;

//修改raw-array的值,matrix並不受影響,output:

//11 3 5

//2 4 6

}

三種實現形式以及時間對比

float

sigmoidfunc

(float x)

vectorxf sigmoid

(const vectorxf& v)

void

sigmoid

(vectorxf& src, vectorxf& dst)

}void

sigmoidtest()

//1. 使用unaryexpr,6ms

dst = src.

unaryexpr

(&sigmoidfunc)

;//cout << dst << endl;

//2. 使用array,10ms

dst =

sigmoid

(src)

;//cout << dst << endl;

//3. 自己實現,4ms

sigmoid

(src, dst)

;}

矩陣*矩陣,mkl會多執行緒加速;矩陣*向量,mkl沒有多執行緒

面試 前向神經網路

z很大或者很小時,梯度都會趨於0 優點 反向傳播 乙個是回歸,乙個是分類 平方誤差基於梯度的學習速度非常緩慢,交叉熵導數是線性的。不能,因為神經網路同層同構,擁有相同的輸入,如果引數也完全相同則無論前向還是後向結果都是一樣的,學習過程永遠無法打破這種對稱性,最終學習過的引數仍然相同。dropout作...

前向神經網路小試身手

三層全連線神經網路 輸入層 2個節點 隱藏層 3個節點 輸出層 1個節點 x為輸入,w1第一層節點的引數,w2第二層節點的引數,y為輸出 import tensorflow as tf w1 tf.variable tf.random normal 2,3 stddev 1,seed 1 w2 tf...

神經網路 前向,反向傳播過程

x,資料集矩陣。每一行的元素代表了乙個樣例的特徵值x1,x2,x3.共有n行,說明資料集一共n個樣例 theta,引數矩陣 行數 要生成的神經元個數 列數 上一層的輸入個數 每一行的元素代表了對樣例各個特徵值的權重 以資料集為x 5 3 使用上圖的網路結構為例 輸入層 x 5 3 說明資料集有5個樣...