您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關激活函數activation怎么用呢,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
下面我們介紹激活函數。
激活函數在深度學習中扮演著非常重要的角色,它給網絡賦予了非線性,從而使得神經網絡能夠擬合任意復雜的函數。
如果沒有激活函數,無論多復雜的網絡,都等價于單一的線性變換,無法對非線性函數進行擬合。
目前,深度學習中最流行的激活函數為 relu, 但也有些新推出的激活函數,例如 swish、GELU,據稱效果優于relu激活函數。
激活函數的綜述介紹可以參考下面兩篇文章。
《一文概覽深度學習中的激活函數》
https://zhuanlan.zhihu.com/p/98472075
《從ReLU到GELU,一文概覽神經網絡中的激活函數》
https://zhuanlan.zhihu.com/p/98863801
激活函數在深度學習中扮演著非常重要的角色,它給網絡賦予了非線性,從而使得神經網絡能夠擬合任意復雜的函數。
1,tf.nn.sigmoid:將實數壓縮到0到1之間,一般只在二分類的最后輸出層使用。主要缺陷為存在梯度消失問題,計算復雜度高,輸出不以0為中心。
2,tf.nn.softmax:sigmoid的多分類擴展,一般只在多分類問題的最后輸出層使用。
3,tf.nn.tanh:將實數壓縮到-1到1之間,輸出期望為0。主要缺陷為存在梯度消失問題,計算復雜度高。
4,tf.nn.relu:修正線性單元,最流行的激活函數。一般隱藏層使用。主要缺陷是:輸出不以0為中心,輸入小于0時存在梯度消失問題(死亡relu)。
5,tf.nn.leaky_relu:對修正線性單元的改進,解決了死亡relu問題。
6,tf.nn.elu:指數線性單元。對relu的改進,能夠緩解死亡relu問題。
7,tf.nn.selu:擴展型指數線性單元。在權重用tf.keras.initializers.lecun_normal初始化前提下能夠對神經網絡進行自歸一化。不可能出現梯度爆炸或者梯度消失問題。需要和Dropout的變種AlphaDropout一起使用。
8,tf.nn.swish:自門控激活函數。谷歌出品,相關研究指出用swish替代relu將獲得輕微效果提升。
9,gelu:高斯誤差線性單元激活函數。在Transformer中表現最好。tf.nn模塊尚沒有實現該函數。
在keras模型中使用激活函數一般有兩種方式,一種是作為某些層的activation參數指定,另一種是顯式添加layers.Activation激活層。
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.keras import layers,models
tf.keras.backend.clear_session()
model = models.Sequential()
model.add(layers.Dense(32,input_shape = (None,16),activation = tf.nn.relu)) #通過activation參數指定
model.add(layers.Dense(10))
model.add(layers.Activation(tf.nn.softmax)) # 顯式添加layers.Activation激活層
model.summary()
看完上述內容,你們對激活函數activation怎么用呢有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。