第二講--神經網路優化_神經網路複雜度
阿新 • • 發佈:2020-12-23
1、補充幾個函式
①tf.where() --- 條件語句真返回A,條件語句假返回B
tf.where(條件語句,A,B)
示例:
import tensorflow as tf a = tf.constant([1,2,3,1,1]) b = tf.constant([0,1,3,4,5]) c = tf.where(tf.greater(a,b),a,b) #若 a > b,返回a對應位置的元素,否則返回b對應位置的元素 print("c:",c) 執行結果: c: tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)
②np.random.RandomState.rand(維度) --- 返回一個【0,1)之間的隨機數。維度為空,返回標量
示例:
import numpy as np rdm = np.random.RandomState(seed = 1) # seed = 常數保證每次生成隨機數相同 a = rdm.rand() # 返回一個隨機標量 b = rdm.rand(2,3) # 返回維度為2行3列隨機數矩陣 print("a:",a) print("b:",b) 執行結果: a: 0.417022004702574 b: [[7.20324493e-01 1.14374817e-04 3.02332573e-01] [1.46755891e-01 9.23385948e-02 1.86260211e-01]]
③np.vstack(陣列1,陣列2) --- 將兩個陣列按垂直方向疊加
示例:
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,7])
c = np.vstack((a,b))
print("c:\n",c)
執行結果:
c:
[[1 2 3]
[4 5 7]]
④np.mgrid[ ] .ravel() np.c_[ ]---- 3個常一起使用,可生成網格座標點
np.mgrid[ 起始值:結束值:步長,起始值:結束值:步長,。。。]
-- 返回若干組維度相同的等差陣列;
-- 每組有起始值,結束值,步長;
-- 多組起始值,結束值,步長中間用逗號隔開
-- 【起始值,結束值)前閉後開區間
x .ravel() -- 將x變為一維陣列,相當於“把.前的變數x拉直”
np.c_[陣列1,陣列2,。。。] -- 把陣列點配對後返回
示例:
import numpy as np
x1 = np.mgrid[1:3:1]
y1 = np.mgrid[2:4:0.5]
print("x1:",x1)
print("y1:",y1)
x, y = np.mgrid[1:3:1, 2:4:0.5] # 1:3:1 對應x的取值,2:4:0.5 對應y的取值範圍,為保證兩個陣列維度相同,均取了2行4列
grid = np.c_[x.ravel(), y.ravel()]
print("x:\n", x)
print("y:\n", y)
print("x_ravel:",x.ravel()) # 將x變為一維陣列,相當於“把 .前的變數x拉直”
print("y_ravel:",y.ravel())
print("grid:\n",grid) # 將 x.ravel(), y.ravel()配對
x1: [1 2]
y1: [2. 2.5 3. 3.5]
x:
[[1. 1. 1. 1.]
[2. 2. 2. 2.]]
y:
[[2. 2.5 3. 3.5]
[2. 2.5 3. 3.5]]
x_ravel: [1. 1. 1. 1. 2. 2. 2. 2.]
y_ravel: [2. 2.5 3. 3.5 2. 2.5 3. 3.5]
grid:
[[1. 2. ]
[1. 2.5]
[1. 3. ]
[1. 3.5]
[2. 2. ]
[2. 2.5]
[2. 3. ]
[2. 3.5]]
2、神經網路(NN)複雜度
- 神經網路(NN)複雜度:多用NN層數和NN引數的個數表示。
空間複雜度:
- 層數= 隱含層的層數+ 1個輸出層
下圖為2層NN
- 總引數= 總W + 總b
下圖總引數3x4+4 + 4x2+2 =26
第1層第2層
因輸入層僅輸入資料,未涉及運算,故在統計神經網路層數時,不算輸入層。
時間複雜度:
- 乘加運算次數
下圖3x4 + 4x2 =20
第1層第2層