Weitere ähnliche Inhalte Ähnlich wie 卷積神經網路(Python+TensorFlow+Keras) (20) Mehr von Fuzhou University (17) 卷積神經網路(Python+TensorFlow+Keras)7. 卷積神經網路介紹
深度意涵? 原始資料 卷積層1
過濾器 分析結果
直線
橫線
正斜線
反斜線
弧線
曲線
有/無
直線
有/無
橫線
有/無
正斜線
有/無
反斜線
有/無
弧線
有/無
曲線
卷積層2
過濾器 分析結果
直線
橫線
正斜線
反斜線
弧線
曲線
有/無
正方形
有/無
長方形
有/無
三角形
有/無
菱形
有/無
圓形
有/無
橢圓形
卷積層3
過濾器 分析結果
直線
橫線
正斜線
反斜線
弧線
曲線
有/無
立方體
有/無
長方體
有/無
錐體
有/無
菱面體
有/無
球體
有/無
橢球體
神經網路
是否為
拱橋
是否為
湖泊
是否為
彩虹
是否為
中華電
Logo
第1層可找出
線條特徵
第2層可找出
平面特徵
第3層可找出
立體特徵 7
13. 卷積神經網路介紹
卷積神經網路 傳統神經網路
卷 積 神 經 網
路 為 部 分 連
線 , 建 立 空
間 相 鄰 因 子
的 連 線 , 分
析其相依性
傳統神經網路
為全部連線,
故不存在直接
相依的因子,
反而形成干擾,
增加誤差
卷積神經網路和傳統神經網路的
每一條連線之權重值,皆可運用
梯度下降法(Gradient Descent)計
算其最佳值
13
15. 卷積層最佳化原理
梯度下降法應用於卷積層之權重和誤差項
15
卷積神經網路
模型
函式切線斜率(對 偏微分) 函式切線斜率(對 偏微分)
目標函式
iw b
修正方式 修正方式b
ii
i
ii xw
w
F
ww
b
b
F
bb
i
i
ii
x
x
w
y
y
F
w
F
1
ˆ
ˆ
2
2
2
1
ˆ
2
1
,
yybWF
bxwy
i
ii
4
1
ˆ
iw
11
ˆ
ˆ b
y
y
F
b
F
17. 1
1 1
1 1
卷積層最佳化原理
輸入層
過濾器
17
卷積神經網路結構 權重修正
w1
w2
w4
w3
303ˆ yy
3
5.0135.01111 xww
5.0135.01222 xww
1035.01333 xww
1035.01444 xww
5.035.01 bb
第1回合,第1筆資料
18. 輸入層
過濾器
-0.5
-0.5 -0.5
1 1
卷積層最佳化原理
18
卷積神經網路結構 權重修正
w1
w2
w4
w3
5.105.1ˆ yy
1.5
5.005.15.05.0111 xww
5.005.15.05.0222 xww
25.015.15.01333 xww
25.015.15.01444 xww
25.15.15.05.0 bb
第1回合,第2筆資料
19. 輸入層
過濾器
-1.25
-0.5 -0.5
0.25 0.25
卷積層最佳化原理
19
卷積神經網路結構 權重修正
w1
w2
w4
w3
5.215.1ˆ yy
-1.5
75.015.25.05.0111 xww
5.005.25.05.0222 xww
25.005.25.025.0333 xww
5.115.25.025.0444 xww
05.25.025.1 bb
第1回合,第3筆資料
20. 0
0.75 -0.5
0.25 1.5
卷積層最佳化原理
輸入層
過濾器
20
卷積神經網路結構 權重修正
w1
w2
w4
w3
0.25
第2回合,第1筆資料
25.0025.0ˆ yy
625.0125.05.075.0111 xww
625.0125.05.05.0222 xww
25.0025.05.025.0333 xww
5.1025.05.05.1444 xww
125.025.05.00 bb
21. 輸入層
過濾器
-0.125
0.625 -0.625
0.25 1.5
卷積層最佳化原理
21
卷積神經網路結構 權重修正
w1
w2
w4
w3
1.625
第2回合,第2筆資料
625.10625.1ˆ yy
625.00625.15.0625.0111 xww
625.00625.15.0625.0222 xww
5625.01625.15.025.0333 xww
6875.01625.15.05.1444 xww
9375.0625.15.0125.0 bb
22. 輸入層
過濾器
-0.9375
0.625 -0.625
-0.5625 0.6875
卷積層最佳化原理
22
卷積神經網路結構 權重修正
w1
w2
w4
w3
0.375
第2回合,第3筆資料
625.01375.0ˆ yy
9375.01625.05.0625.0111 xww
625.00625.05.0625.0222 xww
5625.00625.05.05625.0333 xww
11625.05.06875.0444 xww
625.0625.05.09375.0 bb
23. 輸入層
過濾器
-0.5
0.75 -0.25
-0.25 0.75
卷積層最佳化原理
23
卷積神經網路結構 權重修正
w1
w2
w4
w3
1
依此類推,經過67回合
第67回合,第3筆資料
011ˆ yy
75.0105.075.0111 xww
25.0005.025.0222 xww
25.0005.025.0333 xww
75.0105.075.0444 xww
5.005.05.0 bb
收斂時,過濾器為斜線特徵
27. 卷積神經網路實作
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 2),
activation = 'linear', input_shape
= (2, 2, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(1,
activation = 'linear'))
27
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 2x2圖片, 線性函式
輸出層: 輸入參數: 1個, 輸出參數: 1個, 線性函式
只有1個過濾器,
過濾器為2x2大小
呼叫Conv2D函式
36. 卷積神經網路其他型態-S型函式
梯度下降法應用於卷積層之權重和誤差項
36
卷積神經網路
模型
函式切線斜率(對 偏微分) 函式切線斜率(對 偏微分)
目標函式
iw b
修正方式 修正方式b
ii
i
ii xzsw
w
F
ww
' 'zsb
b
F
bb
i
i
ii
xzs
xzszs
w
z
z
y
y
F
w
F
'
11
ˆ
ˆ
2
2
2
1
ˆ
2
1
,
yybWF
z
i
ii
e
zsy
bxwz
1
1
ˆ
4
1
iw
'
111
ˆ
ˆ
zs
zszs
b
z
z
y
y
F
b
F
37. 卷積神經網路其他型態-S型函式
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 2),
activation = 'sigmoid',
input_shape = (2, 2, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(1,
activation = 'linear'))
37
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 2x2圖片, S型函式
輸出層: 輸入參數: 1個, 輸出參數: 1個, 線性函式
只有1個過濾器,
過濾器為2x2大小
修改activation為sigmoid
40. 卷積神經網路其他型態-線性整流函式
梯度下降法應用於卷積層之權重和誤差項
40
卷積神經網路
模型
函式切線斜率(對 偏微分) 函式切線斜率(對 偏微分)
目標函式
iw b
修正方式 修正方式b
otherwise,
0if,
i
ii
i
ii
w
zxw
w
F
ww
otherwise,
0if,
b
zb
b
F
bb
otherwise,0
0if,
'1
ˆ
ˆ
zx
xzr
w
z
z
y
y
F
w
F
i
i
ii
2
2
2
1
ˆ
2
1
,
yybWF
otherwise,0
0if,
where,ˆ
4
1
zz
zrzry
bxwz
i
ii
iw
otherwise,0
0if,
1'1
ˆ
ˆ
z
zr
b
z
z
y
y
F
b
F
41. 卷積神經網路其他型態-線性整流函式
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 2),
activation = 'relu', input_shape =
(2, 2, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(1,
activation = 'linear'))
41
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 2x2圖片, 線性整流函式
輸出層: 輸入參數: 1個, 輸出參數: 1個, 線性函式
只有1個過濾器,
過濾器為2x2大小
修改activation為relu
43. 卷積神經網路其他型態-圖片及過濾器組合
輸入層
過濾器
43
卷積神經網路結構 卷積神經網路模型
最佳化目標函式
1,2
4
1
,2
ˆ bhwy
i
ii
2
ˆ
2
1
, yyBWF
此卷積神經網路模型採用下列設定:
核心函式:線性函式
目標函式:最小平方誤差
輸入層:3x3大小矩陣
過濾器:2x2大小矩陣
1,154,143,122,111,11 bxwxwxwxwh
2,164,153,132,121,12 bxwxwxwxwh
3,184,173,152,141,13 bxwxwxwxwh
4,194,183,162,151,14 bxwxwxwxwh
w2,1
yˆw2,2
w2,3
w2,4
w1,1
w1,2
w1,3
w1,4
44. 梯度下降法應用於卷積層之權重和誤差項
44
卷積神經網路模型 函式切線斜率(對 偏微分) 函式切線斜率(對 偏微分)
目標函式
iw ,2 1,2b
修正方式 修正方式
ii
i
ii hw
w
F
ww
,2
,2
,2,2
1,2
1,2
1,21,2 b
b
F
bb
i
i
ii
h
h
w
y
y
F
w
F
1
ˆ
ˆ ,2,2
22
2
1
ˆ
2
1
, yyBWF
11
ˆ
ˆ 1,21,2 b
y
y
F
b
F
1,2
4
1
,2
ˆ bhwy
i
ii
1,154,143,122,111,11 bxwxwxwxwh
2,164,153,132,121,12 bxwxwxwxwh
3,184,173,152,141,13 bxwxwxwxwh
4,194,183,162,151,14 bxwxwxwxwh
1,2biw ,2
卷積神經網路其他型態-圖片及過濾器組合
45. 梯度下降法應用於卷積層之權重和誤差項
45
卷積神經網路模型 函式切線斜率(對 偏微分)
目標函式
1,1w
修正方式
54,243,222,211,21,1
1,1
1,11,1
xwxwxwxww
w
F
ww
54,243,222,211,2
4
1 1,1
,2
1,1
4
1
,2
4
1
,2
1,1
11
ˆ
ˆ
xwxwxwxw
w
h
w
w
hw
hw
y
y
F
w
F
i
i
i
i
ii
i
ii
22
2
1
ˆ
2
1
, yyBWF
1,2
4
1
,2
ˆ bhwy
i
ii
1,154,143,122,111,11 bxwxwxwxwh
2,164,153,132,121,12 bxwxwxwxwh
3,184,173,152,141,13 bxwxwxwxwh
4,194,183,162,151,14 bxwxwxwxwh
1,1w
卷積神經網路其他型態-圖片及過濾器組合
函式切線斜率(對 偏微分)2,1w
修正方式
64,253,232,221,2
4
1 2,1
,2
2,1
4
1
,2
4
1
,2
2,1
11
ˆ
ˆ
xwxwxwxw
w
h
w
w
hw
hw
y
y
F
w
F
i
i
i
i
ii
i
ii
2,1w
64,253,232,221,22,1
2,1
2,12,1
xwxwxwxww
w
F
ww
46. 梯度下降法應用於卷積層之權重和誤差項
46
卷積神經網路模型 函式切線斜率(對 偏微分)
目標函式
3,1w
修正方式
84,273,252,241,23,1
3,1
3,13,1
xwxwxwxww
w
F
ww
84,273,252,241,2
4
1 3,1
,2
3,1
4
1
,2
4
1
,2
3,1
11
ˆ
ˆ
xwxwxwxw
w
h
w
w
hw
hw
y
y
F
w
F
i
i
i
i
ii
i
ii
22
2
1
ˆ
2
1
, yyBWF
1,2
4
1
,2
ˆ bhwy
i
ii
1,154,143,122,111,11 bxwxwxwxwh
2,164,153,132,121,12 bxwxwxwxwh
3,184,173,152,141,13 bxwxwxwxwh
4,194,183,162,151,14 bxwxwxwxwh
3,1w
卷積神經網路其他型態-圖片及過濾器組合
函式切線斜率(對 偏微分)4,1w
修正方式
94,283,262,251,2
4
1 4,1
,2
4,1
4
1
,2
4
1
,2
4,1
11
ˆ
ˆ
xwxwxwxw
w
h
w
w
hw
hw
y
y
F
w
F
i
i
i
i
ii
i
ii
4,1w
94,283,262,251,24,1
4,1
4,14,1
xwxwxwxww
w
F
ww
47. 梯度下降法應用於卷積層之權重和誤差項
47
卷積神經網路模型 函式切線斜率(對 偏微分)
目標函式
1,1b
修正方式
1,21,1
1,1
1,11,1
wb
b
F
bb
1,2
4
1 1,1
,2
1,1
4
1
,2
4
1
,2
1,1
11
ˆ
ˆ
w
b
h
w
b
hw
hw
y
y
F
b
F
i
i
i
i
ii
i
ii
22
2
1
ˆ
2
1
, yyBWF
1,2
4
1
,2
ˆ bhwy
i
ii
1,154,143,122,111,11 bxwxwxwxwh
2,164,153,132,121,12 bxwxwxwxwh
3,184,173,152,141,13 bxwxwxwxwh
4,194,183,162,151,14 bxwxwxwxwh
1,1b
卷積神經網路其他型態-圖片及過濾器組合
函式切線斜率(對 偏微分)2,1b
修正方式
2,2
4
1 2,1
,2
2,1
4
1
,2
4
1
,2
2,1
11
ˆ
ˆ
w
b
h
w
b
hw
hw
y
y
F
b
F
i
i
i
i
ii
i
ii
2,1b
2,22,1
2,1
2,12,1
wb
b
F
bb
48. 梯度下降法應用於卷積層之權重和誤差項
48
卷積神經網路模型 函式切線斜率(對 偏微分)
目標函式
3,1b
修正方式
3,23,1
3,1
3,13,1
wb
b
F
bb
3,2
4
1 3,1
,2
3,1
4
1
,2
4
1
,2
3,1
11
ˆ
ˆ
w
b
h
w
b
hw
hw
y
y
F
b
F
i
i
i
i
ii
i
ii
22
2
1
ˆ
2
1
, yyBWF
1,2
4
1
,2
ˆ bhwy
i
ii
1,154,143,122,111,11 bxwxwxwxwh
2,164,153,132,121,12 bxwxwxwxwh
3,184,173,152,141,13 bxwxwxwxwh
4,194,183,162,151,14 bxwxwxwxwh
3,1b
卷積神經網路其他型態-圖片及過濾器組合
函式切線斜率(對 偏微分)2,1b
修正方式
4,2
4
1 4,1
,2
4,1
4
1
,2
4
1
,2
4,1
11
ˆ
ˆ
w
b
h
w
b
hw
hw
y
y
F
b
F
i
i
i
i
ii
i
ii
2,1b
4,24,1
4,1
4,14,1
wb
b
F
bb
49. #設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 2),
activation = 'linear', input_shape
= (3, 3, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(1,
activation = 'linear'))
49
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 3x3圖片, 線性函式
輸出層: 輸入參數: 1個, 輸出參數: 1個, 線性函式
只有1個過濾器,
過濾器為2x2大小
修改3x3
卷積神經網路其他型態-圖片及過濾器組合
52. 卷積神經網路其他型態-分類最佳化
梯度下降法應用於卷積層之權重和誤差項
52
卷積神經網路模型 函式切線斜率(對 偏微分) 函式切線斜率(對 偏微分)
目標函式
iw b
修正方式 修正方式bˆ
ii
i
ii x
yy
yy
w
w
F
ww
ˆ1ˆ
ˆ
yy
yy
b
b
F
bb
ˆ1ˆ
ˆ
ii
ii
x
yy
yy
x
y
y
y
y
w
y
y
F
w
F
ˆ1ˆ
ˆ
ˆ1
1
ˆ
ˆ
ˆ
bxwy
i
ii
4
1
ˆ
iw
yyyybWF ˆ1ln1ˆln,
yy
yy
y
y
y
y
b
y
y
F
b
F
ˆ1ˆ
ˆ
1
ˆ1
1
ˆ
ˆ
ˆ
53. 卷積神經網路其他型態-分類最佳化
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 2),
activation = 'linear', input_shape
= (2, 2, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(2,
activation = 'softmax'))
53
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 2x2圖片, 線性函式
輸出層: 輸入參數: 2個, 輸出參數: 1個, softmax函式
只有1個過濾器,
過濾器為2x2大小
修改activation為softmax
57. 卷積神經網路其他型態-分類最佳化
梯度下降法應用於卷積層之權重和誤差項
57
卷積神經網路模型 函式切線斜率(對 偏微分) 函式切線斜率(對 偏微分)
目標函式
iw b
修正方式 修正方式bˆ
ii
i
ii xyyw
w
F
ww
ˆ yyb
b
F
bb
ˆ
ii
i
ii
xyyxyy
yy
yy
xyy
y
y
y
y
w
z
z
y
y
F
w
F
ˆˆ1ˆ
ˆ1ˆ
ˆ
ˆ1ˆ
ˆ1
1
ˆ
ˆ
ˆ
iw
yyyybWF ˆ1ln1ˆln,
z
i
ii
e
zsy
bxwz
1
1
ˆ
4
1
yyyy
yy
yy
yy
y
y
y
y
b
z
z
y
y
F
b
F
ˆˆ1ˆ
ˆ1ˆ
ˆ
1ˆ1ˆ
ˆ1
1
ˆ
ˆ
ˆ
58. 卷積神經網路其他型態-分類最佳化
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 2),
activation = 'sigmoid',
input_shape = (2, 2, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(2,
activation = 'softmax'))
58
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 2x2圖片, S型函式
輸出層: 輸入參數: 2個, 輸出參數: 1個, softmax函式
只有1個過濾器,
過濾器為2x2大小
修改activation為softmax
修改activation為sigmoid
62. 卷積神經網路其他型態-動量最佳化
梯度下降法應用於卷積層之權重和誤差項
62
卷積神經網路
模型
函式切線斜率(對 偏微分) 函式切線斜率(對 偏微分)
目標函式
iw b
修正方式 修正方式b
i
tt
w
t
i
t
w
t
i
t
i
t
i
t
w
t
w
xvw
vww
w
F
vv
i
i
ii
1
1
11
1
1
i
i
ii
x
x
w
y
y
F
w
F
1
ˆ
ˆ
2
2
2
1
ˆ
2
1
,
yybWF
bxwy
i
ii
4
1
ˆ
iw
11
ˆ
ˆ b
y
y
F
b
F
tt
b
t
i
t
b
t
i
t
i
t
t
b
t
b
vw
vww
b
F
vv
1
1
11
1
1
第t個時間點之修正方式,主要多參考第t-1時間點之修正值
採用動量Momentum
網路結構不變
核心函式不變
目標函式不變
63. 卷積神經網路其他型態-動量最佳化
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 2),
activation = 'linear', input_shape
= (2, 2, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(1,
activation = 'linear'))
63
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 2x2圖片, 線性函式
輸出層: 輸入參數: 1個, 輸出參數: 1個, 線性函式
只有1個過濾器,
過濾器為2x2大小
66. 卷積神經網路不適用情境
卷積神經網路並非萬靈丹
無法解決XOR (互斥或)計算
66
X1 X2 Y 估計值
0 0 0 0.5
0 1 1 0.5
1 0 1 0.5
1 1 0 0.5
-0.095
-0.095 yˆh
0.3580.900-
-0.145
卷積神經網路結構
機器學習無法學會
XOR,全部猜0.5
此卷積神經網路模型採用下列設定:
核心函式:線性函式
目標函式:最小平方誤差
輸入層:2x1大小矩陣
過濾器:2x1大小矩陣
bxwy
i
ii
2
1
ˆ
卷積神經網路模型
67. 卷積神經網路不適用情境
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (2, 1),
activation = 'linear', input_shape
= (2, 1, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(1,
activation = 'linear'))
67
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 2x1圖片, 線性函式
輸出層: 輸入參數: 1個, 輸出參數: 1個, 線性函式
只有1個過濾器,
過濾器為2x1大小
69. 手寫影像辨識範例
手寫影像辨識資料集(MNIST)
◦ 影像大小:28 x 28 (即輸入共784個參數)
◦ 類別數量:10 (即0~9,輸出共10個類別)
◦ 取得方式:mnist <- dataset_mnist()
訓練資料
◦ 共60000萬筆
◦ 輸入參數:mnist$train$x
◦ 輸出參數:mnist$train$y
測試資料
◦ 共10000萬筆
◦ 輸入參數:mnist$test$x
◦ 輸出參數:mnist$test$y
69
訓練資料第1筆x資料
該筆資料的y資料為5
73. 手寫影像辨識範例
#讀取訓練資料
(X_train, y_train), (X_test, y_test)
= keras.datasets.mnist.load_data()
#正規化
X = X / 255
#轉換為2x2矩陣大小
X =
X_train.reshape(X_train.shape[0],
img_rows, img_cols, 1)
Y =
keras.utils.to_categorical(y_train,
num_classes)
73
此卷積神經網路模型採用下列設定:
核心函式:線性整流函式(ReLU)
目標函式:交叉熵(Cross-Entropy)
輸入層:28x28大小矩陣
過濾器:3x3大小矩陣
74. 手寫影像辨識範例
#設定亂數種子
numpy.random.seed(0)
#設定神經網路結構
model =
keras.models.Sequential()
model.add(keras.layers.Conv2D(
filters = 1, kernel_size = (3, 3),
activation = 'relu', input_shape =
(img_rows, img_cols, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(2,
activation = 'softmax'))
74
設定固定的亂數種子,
讓權重初始值可以一致
卷積層: 輸入參數: 28x28圖片, 線性整流函式
輸出層: 輸入參數: 2個, 輸出參數: 1個, softmax函式
只有1個過濾器,
過濾器為3x3大小
此卷積神經網路模型採用下列設定:
核心函式:線性整流函式(ReLU)
目標函式:交叉熵(Cross-Entropy)
輸入層:28x28大小矩陣
過濾器:3x3大小矩陣
修改activation為softmax