AI系列 3 生成神經網路以及初始化詳細過程

2021-08-20 09:54:17 字數 3839 閱讀 7472

本文將會介紹神經網路的生成過程,通過生成乙個[2, 5, 3, 1]的神經網路,詳細講解每一步驟的運算過程。[2, 5, 3, 1] 表示:兩個輸入,第一層 5各神經元,第二層3個神經元,第三層 1個神經元。

#畫乙個圈

train_x, train_y = sklearn.datasets

.make_circles(n_samples=300, noise=.05)

# visualize the data

plt.scatter(train_x[:, 0], train_x[:, 1], c=train_y, s=40, cmap=plt.cm

.spectral);

我們假設輸入是乙個點(x1,y1).共有300個點,這些點隨機分布呈橢圓形。這些點組成乙個矩陣就是所有輸入引數,我們用你x表示。

這裡生成的x是乙個300*2的矩陣。如下:

對x進行轉置,得到乙個2*300的矩陣,如下

w1: 5行 2列

l = 2

w2: 3行 5列

l = 3

w3: 1行3列

"""for l in range(1, l):

parameters['w' + str(l)] = np.zeros((layers_dims[l], layers_dims[l-1]))

parameters['b' + str(l)] = 0

return parameters

#生成網路

x = train_x.t

layers_dims = [x.shape[0], 5, 3, 1] #[2, 5, 3, 1]

parameters = initialize_parameters_zeros(layers_dims)

到這裡我們將每一層的權值都初始化為零了。現在我們來分析一下現在每一層的權值詳細情況。

第一層 w1: 5*2的矩陣

b1 :5*1 列向量

第二層 w2:3*5 矩陣

b2 :3*1

第三層 w3:1*3 矩陣

b3 : 0

前向傳播計算過程

z1 = np.dot(w1, x) + b1 #w1: [5, 2] x[2, 300],矩陣乘法可乘條件:前者 列= 後者行 z1:[5,300]

a1 = relu(z1) #啟用函式

z2 = np.dot(w2, a1) + b2 #w2:[3, 5] a1[5,300] z2:[3,300]

a2 = relu(z2)

z3 = np.dot(w3, a2) + b3 #w3:[1,3] a2:[3,300] z3:[1,300]

a3 = sigmoid(z3)

cache = (z1, a1, w1, b1, z2, a2, w2, b2, z3, a3, w3, b3)

return a3, cache #a3 即是最後的記過y』值,之後根據提前期望的y值,進行誤差反向傳播。

神經網路層數與權值w 的矩陣形式有以下對應形式:

假設神經網路是 [2, 10, 20, 5, 1], 很明顯這是乙個2分類問題。

那麼 w1 就是 10*2 的矩陣 b1 : 10*1

w2: 20*10 b2: 20*1

w3: 5*20 b3: 5*1

w4: 1*5 b4: 1*1

相信規律已經很明白了。這裡w看做與神經元連線的每一條線,b看做每乙個神經元。

模糊神經網路 第41期 AI演算法 模糊神經網路

關注人工智慧教師,拓展人工智慧教育新認知 演算法在人工智慧 ai 領域非常重要,我們需要把實際問題抽象成數學問題,再讓機器對數學問題進行求解。而演算法的選擇直接導致了能否解決問題,以及以多少成本解決問題。第01期 什麼是人工智慧 第3期 圖靈測試 第5期 神經網路 第8期 機器學習 第10期 大資料...

3 線性神經網路

由於單層感知器不能解決線性不可分的問題 在上篇文章對線性可分做了解釋 如異或問題,這時我們引入了新的結構 線性神經網路。線性神經網路與單層感知器的結構相似,只是它們的啟用函式不同,單層感知器的啟用函式只能輸出兩種可能值 1 或 1 而線性神經網路的輸出可以是任何取值,其啟用函式是線性函式 y x。l...

數學 3 生成函式

生成函式是乙個比較複雜且廣泛的數學知識點,應當重點學習 首先給出一些運算公式,方便以後學習使用 texttt begin alpha f z beta g z sum alpha f n beta g n z n z mg z sum ng z n m geq0 fracz sum g z n m ...