1. 程式人生 > >Sigmoid函式的特性及硬體實現方法--含matlab程式碼及講解

Sigmoid函式的特性及硬體實現方法--含matlab程式碼及講解

sigmoid函式的特性及硬體實現方法--含matlab程式碼實現及講解

1. 簡介

sigmoid是神經網路中常用的一種啟用函式,在機械學習和很多降噪濾波演算法中也常常會用到這個函式。sigmoid函式的表示式如下:
y

= s i g m o i d ( x
) = 1 1 + e x p
( x )
y=sigmoid(x)=\frac {1} {1+exp(-x)}
本文主要會介紹一些sigmoid函式常用的特性。並且基於sigmoid函式特有的性質,我會給出一種硬體實現sigmoid函式的方法(不是多項式擬合法),為了方便讀者理解,我還用matlab模擬了sigmoid函式的實現。有興趣的小夥伴可以直接到我下面的連結中下載程式碼。
https://download.csdn.net/download/qq_35721810/10885213

2. sigmoid函式的特性介紹

2.1 sigmoid(x)與sigmoid(-x)的關係

sigmoid(x)與sigmoid(-x)的具有下面的關係:
s i g m o i d ( x ) = 1 s i g m o i d ( x ) sigmoid(-x) = 1 - sigmoid(x)
推導過程如下:
1 s i g m o i d ( x ) = 1 1 1 + e x p ( x ) = e x p ( x ) 1 + e x p ( x ) = 1 1 + e x p ( x ) = s i g m o i d ( x ) 1-sigmoid(x) = 1-\frac {1} {1+exp(-x)}=\frac {exp(-x)} {1+exp(-x)}=\frac {1} {1+exp(x)}= sigmoid(-x)

2.2 sigmoid函式與tanh函式的關係

tanh(x)為雙曲餘弦函式,其表示式如下
t a n h ( x ) = e x p ( x ) e x p ( x ) e x p ( x ) + e x p ( x ) tanh(x)=\frac {exp(x)-exp(-x)} {exp(x)+exp(-x)}
sigmoid(x)與tanh(x)函式的關係如下:
s i g m o i d ( x ) = t a n h ( x 2 ) + 1 2 sigmoid(x) =\frac {tanh(\frac {x} {2})+1} {2}
推導過程如下:
t a n h ( x 2 ) + 1 2 = e x p ( x / 2 ) e x p ( x / 2 ) e x p ( x / 2 ) + e x p ( x / 2 ) + 1 2 = e x p ( x / 2 ) ( e x p ( x / 2 ) + e x p ( x / 2 ) ) = 1 1 + e x p ( x ) = s i g m o i d ( x ) \frac {tanh(\frac {x} {2})+1} {2}=\frac{\frac {exp(x/2)-exp(-x/2)} {exp(x/2)+exp(-x/2)}+1}{2}=\frac {exp(x/2)} {(exp(x/2)+exp(-x/2))}=\frac {1} {1+exp(-x)}=sigmoid(x)

2.3 sigmoid函式的n階導數

sigmoid函式求導有一個非常好的特殊性質,即導數的結果是可以完全表達成y的函式,與x無關。 假設 y = s i g m o i d ( x ) = 1 1 + e x p ( x ) y=sigmoid(x)=\frac {1} {1+exp(-x)}
d y d x = e x p ( x ) [ 1 + e x p ( x ) ] 2 = ( 1 1 1 + e x p ( x ) ) 1 1 + e x p ( x ) = y ( 1 y ) \frac{dy}{dx}=\frac {exp(-x)} {[1+exp(-x)]^2}=\left( 1-\frac {1} {1+exp(-x)}\right)\frac {1} {1+exp(-x)}=y(1-y)
d y d x \frac{dy}{dx} 只是y的函式。如果要求二階導數可以直接對 d y d x \frac{dy}{dx} 再次求導
d 2 y d x 2 = d d x ( d y d x ) = ( 1 2 y ) d y d x = y ( 1 y ) ( 1 2 y ) \frac{d^2y}{dx^2}=\frac{d}{dx}\left(\frac{dy}{dx}\right)=(1-2y)\frac{dy}{dx}=y(1-y)(1-2y)

相關推薦

Sigmoid函式特性硬體實現方法--matlab程式碼講解

sigmoid函式的特性及硬體實現方法--含matlab程式碼實現及講解 1. 簡介 2. sigmoid函式的特性介紹 2.1 sigmoid(x)與sigmoid(-x)的關係 2.2 sigmoid函式與tanh函式的關係 2

壓縮感知的實現matlab程式碼

目錄 原理簡介 演算法實現 測試結果 -------------------------------------------------------------------------------------------------------------------

資料結構-迴圈佇列的基本操作函式實現全部程式碼

    主要包含以下函式:    InitQueue(SqQueue &Q)              引數:迴圈佇列Q 功能:初始化迴圈佇列Q 時間複雜度:O(1)     QueueEmpty(SqQueue Q)              引數:迴圈佇列Q

資料結構-鏈隊的基本操作函式實現全部程式碼

主要包含以下函式:        InitQueue(LinkQueue &Q) 引數:鏈隊Q 功能:初始化  時間複雜度O(1)     EnQueue(LinkQueue &Q,QElemType e) 引數:鏈隊Q,元素e 功能:將e入隊 時間複雜度

Adobe PhotoShop CC 2017 Mac中英版破解方法(安裝包破解工具)

Adobe PhotoShop CC 2017 Mac中英文版破解方法(含安裝包及破解工具) ①:下載dmg及破解工具: 連結: https://pan.baidu.com/s/1bR94VrkcZ

C語言函式返回值的實現方法和誤區

例項:你們認為這三個函式能正常返回嗎?  int func1(int a , int b) { int c = 0; c = a + b; return c; } char * func2() { char *strTmp = "abs"; return str

C語言中返回字串函式的四種實現方法

其實就是要返回一個有效的指標,尾部變數退出後就無效了。 使用分配的記憶體,地址是有效 char   *fun() {         char*   s   =   (char*)calloc(100,   sizeof(char*)   );         if   (s)                

C++返回字串函式的幾種實現方法

C++返回字串函式有四種方式: 1。使用堆空間,返回申請的堆地址,注意釋放 2。函式引數傳遞指標,返回該指標 3。返回函式內定義的靜態變數(共享) 4。返回全域性變數 1.使用堆空間,返

基於vue2.0實現音樂/視訊播放進度條元件的思路具體實現方法+程式碼解釋

基於vue2.0實現音樂/視訊播放進度條元件的方法及程式碼解釋 需求分析: ①:進度條隨著歌曲的播放延長,歌曲播放完時長度等於黑色總進度條長度;時間實時更新。 ②:當滑動按鈕時,實時更新播放時間,橙色進度條長度也會隨著按鈕的滑動而改變,當滑動結束時,橙色區域停留在滑動結束的

C語言實現農夫過河程式碼解析

問題描述 一個農夫在河邊帶了一隻狼、一隻羊和一顆白菜,他需要把這三樣東西用船帶到河的對岸。然而,這艘船隻能容下農夫本人和另外一樣東西。如果農夫不在場的話,狼會吃掉羊,羊也會吃掉白菜。請程式設計為農夫解決這個過河問題。 問題分析 根據問題描述可知,該問題涉及的物件較多,而且運算步驟也較為複雜,因此,在使用

資料結構-順序棧的基本操作的實現全部程式碼

主要操作函式如下:     InitStack(SqStack &s) 引數:順序棧s 功能:初始化  時間複雜度O(1)     Push(SqStack &s,SElemType e) 引數:順序棧s,元素e 功能:將e入棧 時間複雜度:O(1)  

《機器學習實戰》第2章閱讀筆記2 K近鄰演算法實現(附詳細程式碼註釋)

虛擬碼如下: 對未知類別屬性的資料集中的每個點一次執行以下操作: (1)計算已知類別資料集中的點與當前點之間的距離; (2)按照距離遞增次序排序; (3)選取與當前點距離最小的k個點; (4)確定前k個點所在類別出現的頻率 (5)返回前k個點出現頻率最高的類

C語言實現求親密數程式碼解析

問題描述 如果整數A的全部因子(包括1,不包括A本身)之和等於B;且整數B的全部因子(包括1,不包括B本身)之和等於A,則將整數A和B稱為親密數。求3000以內的全部親密數。 問題分析 根據問題描述,該問題可以轉化為:給定整數A,判斷A是否有親密數。 為解決該問題,首先定義變數a,併為其賦初值為某個整

asp.net中將資料庫繫結到DataList控制元件的實現方法與例項程式碼

解決方法1: datalist databind() 解決方法2: 檢視MSDN上的詳細說明資料 解決方法3: 在DataList的模板中用table表格,如: 複製程式碼 程式碼如下: <asp:DataList ID="dlDetailedInfo"

Android平臺Camera實時濾鏡實現方法探討(十)--程式碼地址以及簡介(20160118更新)

簡單做了個相機和圖片編輯模組,時間原因很多功能還沒有做,尚有BUG,見諒,將在以後抽時間修改 程式碼地址 PS:請點個Star^-^ ---------------------------------------------------------------------

分類器設計之線性分類器和線性SVM(Matlab程式碼)

對於高維空間的兩類問題,最直接的方法是找到一個最佳的分類超平面,使得並且,對於所有的正負訓練樣本和. 因此,以上問題可以表達為: 問題P0可以轉化為 兩邊除以\epsilon,並且做變數替換,最終得到下面的線性規化(linear programming

PCA的人臉識別(matlab程式碼

在讀完Baback Moghaddam大神的論文之後,我們來講下具體的程式碼實現。我們以人臉的識別為例子,講述下具體的實現。 (1)首先我們需要有人臉的資料集,在這裡對應每個人只有一個照片在資料集中

基於單神經元的自適應PID演算法實現步驟與MATLAB程式碼

        近期研究了下單神經元的自適應PID,發現挺有意思,這裡我分享下自己的理解,文中的程式碼都是來自《先進PID控制MATLAB模擬》第四版 劉金琨編著。        自適應PID的好處在於它的靈活性,而神經網路PID正是因為它的可學習性決定了他的強大性,該文章使

機器學習入門:線性迴歸梯度下降(附matlab程式碼

 本文會講到: (1)線性迴歸的定義 (2)單變數線性迴歸 (3)cost function:評價線性迴歸是否擬合訓練集的方法 (4)梯度下降:解決線性迴歸的方法之一 (5)feature scaling:加快梯度下降執行速度的方法 (6)多變數線性迴歸 Linea

白話壓縮感知(Matlab程式碼

壓縮感知介紹壓縮感知(Compressive Sensing,CS),有時也叫成Compressive Sampling。相對於傳統的奈奎斯特取樣定理——要求取樣頻率必須是訊號最高頻率的兩倍或兩倍以上(這就要求訊號是帶限訊號,通常在取樣前使用低通濾波器使訊號帶限),壓縮感知則利用資料的冗餘特性,只採集少量的樣