1. 程式人生 > >[TensorFlow 學習筆記-06]啟用函式(Activation Function)

[TensorFlow 學習筆記-06]啟用函式(Activation Function)

[版權說明]

TensorFlow 學習筆記參考: 
李嘉璇 著 TensorFlow技術解析與實戰
黃文堅 唐源 著 TensorFlow實戰鄭澤宇 
顧思宇 著 TensorFlow實戰Google深度學習框架
樂毅 王斌 著 深度學習-Caffe之經典模型詳解與實戰
TensorFlow中文社群 http://www.tensorfly.cn/
極客學院 著 TensorFlow官方文件中文版
TensorFlow官方文件英文版
以及各位大大的CSDN部落格和Github等等...希望本系列博文沒有侵犯版權!(若侵權,請聯絡我,郵箱: ) 

歡迎大家轉載分享,會不定期更新。鑑於博主本人水平有限,如有問題。懇請批評指正!

啟用函式(Activation Function)執行時啟用神經網路中某一部分神經元,將啟用資訊向後傳入下一層的神經網路。

神經網路的數學基礎是處處可微的,所以選取啟用函式要保證資料輸入與輸出也是可微的。TensorFlow中提供哪些啟用函式的API。

啟用函式不會改變資料的維度,也就是輸入和輸出的維度是相同的。TensorFlow中有如下啟用函式:

1. sigmoid 函式

這是傳統神經網路中最常用的啟用函式之一,公式和函式影象如下:
{\displaystyle S(x)={\frac {1}{1+e^{-x}}}.}



優點:它輸出對映在(0,1)內,單調連續,非常適合用作輸出層,並且求導比較容易;
缺點:具有軟飽和性,一旦輸入落入飽和區,一階導數就變得接近於0,很容易產生梯度消失。
飽和性:當|x|>c時,其中c為某常數,此時一階導數等於0,通俗的說一階導數就是上圖中的斜率,函式越來越水平。

2. tanh函式

tanh也是傳統神經網路中比較常用的啟用函式,公式和函式影象如下:


tanh函式也具有軟飽和性。因為它的輸出是以0為中心,收斂速度比sigmoid函式要快。但是仍然無法解決梯度消失問題。

3. relu 函式

relu函式是目前用的最多也是最受歡迎的啟用函式。公式和函式影象如下:

由上圖的函式影象可以知道,relu在x<0時是硬飽和。由於當x>0時一階導數為1。所以,relu函式在x>0時可以保持梯度不衰減,從而緩解梯度消失問題,還可以更快的去收斂。但是,隨著訓練的進行,部分輸入會落到硬飽和區,導致對應的權重無法更新。我們稱之為“神經元死亡”。
除了relu本身外,TensorFlow還定義了relu6,也就是定義在min(max(features, 0), 6)的tf.nn.relu6(features, name=None),以及crelu,也就是tf.nn.crelu(features, name=None).

4. softplus 函式

softplus函式可以看作是relu函式的平滑版本,公式和函式影象如下:

5. leakrelu 函式

leakrelu函式是relu啟用函式的改進版本,解決部分輸入會落到硬飽和區,導致對應的權重無法更新的問題。公式和影象如下:

左邊縮小方差,右邊保持方差;方差整體還是縮小的,而均值得不到保障。

6. ELU 函式

leakrelu函式是relu啟用函式的改進版本,解決部分輸入會落到硬飽和區,導致對應的權重無法更新的問題。公式和影象如下:

左邊縮小方差,右邊保持方差;方差整體還是縮小的,而均值得不到保障。
6. SELU函式 最近的自歸一化網路中提出,函式和影象如下:
藍色是:selu,橙色是:elu
左邊縮小方差,右邊放大方差,適當選取引數alpha和lambda,使得整體上保持方差與期望。如果選取: lambda=1.0506,alpha=1.67326,那麼可以驗證如果輸入的x是服從標準正態分佈,那麼SELU(x)的期望為0,方差為1.

相關推薦

[TensorFlow 學習筆記-06]啟用函式(Activation Function)

[版權說明] TensorFlow 學習筆記參考: 李嘉璇 著 TensorFlow技術解析與實戰黃文堅 唐源 著 TensorFlow實戰鄭澤宇 顧思宇 著 TensorFlow實戰Google

學習筆記啟用函式Activation Function

為什麼需要啟用函式Activation Function? 舉個例子,首先我們有這個需求,就是二分類問題,如我要將下面的三角形和圓形點進行正確的分類,如下圖: 利用我們單層的感知機, 用它可以劃出一條線, 把平面分割開: 很容易能夠看出,我給出的樣本點根本不是線性可分的,一個

機器學習入門——常用啟用函式(Activation Function)表格形式總結

圖片摘自高揚,衛崢所著的《白話深度學習與TensorFlow》 啟用函式(activation function)——也有翻譯成激勵函式,變換函式的,是神經元中重要的組成部分,如果不用激勵函式,每一層輸出都是上層輸入的線性函式,無論神經網路有多少層,輸出都是輸入的線性組合,

啟用函式 activation function

啟用函式 activation function 啟用函式的角色是引入非線性(non-linearity),否則不管網路有多深,整個網路都可以直接替換為一個相應的仿射變換(affine transformation),即線性變換(linear transformation),比如旋轉、伸

Python入門學習筆記————06函式,列)

變數的作用域 變數由作用範圍限制 分類:按作用域分類 全域性(global):在函式外部定義 區域性(local):在函式內部定義 變數的作用範圍: 全域性變數:在整個全域性範圍都有效 全域性變數在區域性可以使用

神經網路の啟用函式(Activation Function)

日常 coding 中,我們會很自然的使用一些啟用函式,比如:sigmoid、ReLU等等。不過好像忘了問自己一(nn)件事: 為什麼需要啟用函式? 啟用函式都有哪些?都長什麼樣?有哪些優缺點? 怎麼選用啟用函式? 本文正是基於這些問題展開的,歡迎批評指正! (

深度學習筆記2-啟用函式

深度學習筆記2-啟用函式 目前啟用函式有sigmoid、Tanh、ReLU、LeakyReLU、ELU。 Sigmoid函式 Sigmoid函式表示式 f

吳恩達機器學習筆記2-代價函式(cost function)

  我們選擇的引數決定了我們得到的直線相對於我們的訓練集的準確程度,模型所預測的值與訓練集中實際值之間的差距(下圖中藍線所指)就是建模誤差(modeling error)。   我們的目標便是選擇出可以使得建模誤差的平方和能夠最小的模型引數。 即使得代價函式  最小。   代價函式也被稱作平方

神經網路之啟用函式(Activation Function)

日常 coding 中,我們會很自然的使用一些啟用函式,比如:sigmoid、ReLU等等。不過好像忘了問自己一(n)件事: 為什麼需要啟用函式?啟用函式都有哪些?都長什麼樣?有哪些優缺點?怎麼選用啟用函式?本文正是基於這些問題展開的,歡迎批評指正! (此圖並沒有什麼

TensorFlow學習筆記之——常用函式(概覽)

本文章內容比較繁雜,主要是一些比較常用的函式的用法,結合了網上的資料和原始碼,還有我自己寫的示例程式碼。建議照著目錄來看。1.矩陣操作1.1矩陣生成這部分主要將如何生成矩陣,包括全0矩陣,全1矩陣,隨機數矩陣,常數矩陣等tf.ones | tf.zeros tf.ones(

神經網路之啟用函式(Activation Function)(附maxout)

啟用函式參考的原文地址http://blog.csdn.net/cyh_24/article/details/50593400 maxout部分參考的原文地址http://www.cnblogs.com/tornadomeet/p/3428843.html Why us

Tensorflow學習筆記(六)幾種常見的啟用函式介紹及用matplotlib畫圖

歷史上,sigmoid函式曾非常常用,然而現在它已經不太受歡迎,實際很少使用了,因為它主要有兩個缺點: 1. 函式飽和使梯度消失:sigmoid 神經元在值為 0 或 1的時候接近飽和,這些區域,梯度幾乎為 0。因此在反向傳播時,這個區域性梯度會與整個代價函式關於該單元輸出的梯度相乘,結果也會接近為

tensorflow學習筆記(四):啟用函式

tesorflow中的啟用函式 所有啟用函式 輸入 和 輸出 的維度是一樣的 tf.nn.relu() tf.nn.sigmoid() tf.nn.tanh() tf.nn.elu() tf

GreenPlum學習筆記:create or replace function建立函式

  原始表資料如下:   需求:現要求按分號“;”將rate_item列進行分割後插入到新的資料表中。 CREATE OR REPLACE FUNCTION fun_gp_test_xxx_20181026(v_month int) RETURNS INT AS $BODY$ declare

tensorflow學習筆記各個函式解析

弄清以下問題的含義: 1. tf.train.global_step 獲取全域性訓練步數, 由 各種損失函式優化器中的minimize()方法負責自動加1 sess.run( fetches, feed_dict=None, o

TensorFlow筆記啟用函式

tf.nn.sigmid()函式 函式表示式 f(x)=11+e−x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+e−x1​ 函式影象 函式性質 對其求導可得到 f′(x)=

Tensorflow 激勵函式 Activation Function

  執行時啟用神經網路中某一部分神經元,將啟用資訊向後傳入下一層的神經系統。激勵函式的實質是非線性方程。 Tensorflow 的神經網路 裡面處理較為複雜的問題時都會需要運用激勵函式 activation function.   如下圖      

tensorflow學習筆記一之tensorflow實現卷積部分常用函式

1. Z1=tf.nn.conv2d(X,W1, strides = [1,1,1,1], padding = 'SAME')tf.nn.conv2d(input,filter,strides, padding, use_cudnn_on_gpu=None, name=Non

TensorFlow學習筆記》tf.concat函式用法

tf版本:1.5.0 concat官方定義 Args: values: A list of Tensor objects or a single Tensor. 單個張量或是一個關於張量的

tensorflow 學習筆記13 RNN LSTM結構預測正弦(sin)函式

import tensorflow as tf import numpy as np import matplotlib.pyplot as plt BATCH_START = 0 TIME_STEPS = 20 BATCH_SIZE = 50 INPUT_SIZE =