前面介紹的線性回歸和softmax回歸都是單層神經網路. 然而在深度學習中, 大多數是多層模型. 以下以多層感知機為例, 介紹多層神經網路.多層感知機在單層神經網路的基礎上引入了1~n個隱藏層(hidden layer).隱藏層位於輸入層和輸出層之間.
上圖中含有乙個隱藏層,該層中有5個隱藏單元;
輸入層不參與計算,所以上圖中的多層感知機的層數為2;
上圖中的多層感知機隱藏層和輸出層都是全連線層;
設輸入樣本為x, 隱藏層輸出為h,隱藏層的有權重w1和偏差b1, 輸出層輸出為o.輸出層的權重和偏差引數為w2和偏差2.
h = x*w1+b1
o = h*w2+b2
==> o = (x*w1+b1)*w2+b2 = xw1w2+ b1*w2 + b2;
從最後式子的整理可以看出,即使新增再多的隱藏層,以上設計依然只能與僅含輸出層的單層神經網路等價(可將w1w2當做權重,偏差為b1w2 + b2).
上述問題的根源在與只對資料做了放射變換,而多個仿射變換的疊加仍然是乙個仿射變換.於是,引入了非線性變換,例如對隱藏變數使用按照元素運算的非線性函式變換,然後再作為下乙個全連線層的輸入.這個非線性函式被稱為
啟用函式
.
relu函式就是只保留正數元素的同乙個非線性變換
, 該函式定義為:
## 定義乙個繪圖函式xyplot
%matplotlib inline
import tensorflow as tf
from matplotlib import pyplot as plt
import numpy as np
import random
defuse_svg_display()
:# 用向量圖顯示
%config inlinebackend.figure_format =
'svg'
defset_figsize
(figsize=
(3.5
,2.5))
: use_svg_display(
)# 設定圖的尺寸
plt.rcparams[
'figure.figsize'
]= figsize
defxyplot
(x_vals, y_vals, name)
: set_figsize(figsize=(5
,2.5))
plt.plot(x_vals.numpy(
), y_vals.numpy())
plt.xlabel(
'x')
plt.ylabel(name +
'(x)'
)
// tf.nn 提供relu函式
x = tf.
variable
(tf.
range(-
8,8,
0.1)
, dtype=tf.float32)
y = tf.nn.
relu
(x)xyplot
(x, y,
'relu'
)// relu導數
with tf.
gradienttape
() as t:
t.watch
(x) y=y = tf.nn.
relu
(x)dy_dx = t.
gradient
(y, x)
xyplot
(x, dy_dx,
'grad of relu'
)
sigmoid函式可以將元素的值變換到0-1之間:
## tf.nn 提供sigmoid函式
y = tf.nn.sigmoid(x)
xyplot(x, y,
'sigmoid'
)## sigmoid函式的導數, 當輸入為0, sigmoid函式的導數達到最大值0.25
with tf.gradienttape(
)as t:
t.watch(x)
y=y = tf.nn.sigmoid(x)
dy_dx = t.gradient(y, x)
xyplot(x, dy_dx,
'grad of sigmoid'
)
tanh函式可以將元素的值變換到-1~1之間:
## tf.nn 提供tanh函式
y = tf.nn.tanh(x)
xyplot(x, y,
'tanh'
)## tanh函式的導數, 當輸入為0, tanh函式的導數達到最大值1;
with tf.gradienttape(
)as t:
t.watch(x)
y=y = tf.nn.tanh(x)
dy_dx = t.gradient(y, x)
xyplot(x, dy_dx,
'grad of tanh'
)
多層感知機就是含有至少乙個隱藏層的由全連線層組成的神經網路,且每個隱藏層的輸出通過啟用函式進行變換;
多層感知機的層數和各隱藏層中隱藏單元個數都是超引數
(超引數: 使用者初始設定值,需要優化,不是通過訓練得到的(有些方法也開始對超引數進行訓練))。
新增啟用函式:
易語言學習第六課
知識點 1.輔助工具的使用 2.api函式 講了兩個,findwindow 查詢視窗控制代碼 和 getwindowrect 取視窗矩形 3.findwindow 兩個引數,第乙個為視窗的 類名,第二個表示視窗標籤,為0表示接受任何型別和標籤 3.getwindowrect 第乙個引數為視窗矩形,第...
機器學習第六課 聚類
聚類簡介 今天我們說聚類。說 機器學習 不說的 聚類 那還算是 機器學習 嗎?首先,我們回到混合高斯模型的那副圖 在n 3的高斯模型的擬合下,而三個不同模型會各自代表三個不同資料簇 cluster 將資料點劃分若干個簇的過程叫聚類。在這裡,我們可以挖掘出幾個隱藏資訊 1.聚類的目的其實是為了劃分資料...
OpenGL nehe教程第六課學習筆記
nehe的第六課的內容是給六面的盒子貼上材質texture,流程主要分兩步,一,利用glaux庫的函式auxdibimageload將從硬碟讀到記憶體,再利用opengl的函式檢測,給它打上 可用的標籤 二,學習將texture的座標與盒子的一面對齊,就像是小時候的貼紙,你要貼齊而且要方向正確。先來...