神經網絡常見激活函數 14-Mish函數

文章目錄

    • Mish
      • 函數+導函數
      • 函數和導函數圖像
      • 優缺點
      • PyTorch 中的 Mish 函數
      • TensorFlow 中的 Mish 函數

Mish

  • 論文

    https://arxiv.org/pdf/1908.08681

函數+導函數

  • Mish函數
    Mish(x)=x?tanh??(softplus(x))=x?tanh??(ln??(1+ex))\begin{aligned} \text{Mish}(x) &= x \cdot \tanh\!\bigl(\text{softplus}(x)\bigr) \\ &= x \cdot \tanh\!\Bigl(\ln\!\bigl(1+e^{x}\bigr)\Bigr) \end{aligned} Mish(x)?=x?tanh(softplus(x))=x?tanh(ln(1+ex))?

  • Mish函數導數

    已知:
    $$
    \frac{d}{dx}\tanh(x) =1- \rm tanh ^2(x) \[2mm]

    \frac{d}{dx}\operatorname{Softplus}(x)=\sigma(x)=\frac{1}{1+e^{-x}}
    $$
    參考:

    神經網絡常見激活函數 2-tanh函數(雙曲正切)

    則:
    $$
    \begin{aligned}
    \frac{\mathrm{d}}{\mathrm{d}x}\text{Mish}(x)
    &= x \cdot \tanh!\Bigl(\ln!\bigl(1+e^{x}\bigr)\Bigr)\

    &=\frac{\mathrm{d}}{\mathrm{d}x}x\cdot\tanh\bigl(\ln(1+e^{x})\bigr) + x \cdot \frac{\mathrm{d}}{\mathrm{d}x}\tanh\bigl(\ln(1+e^{x})\bigr) \[2mm]

    &=\tanh\bigl(\ln(1+e^{x})\bigr) + x \cdot\bigl(1-\tanh2(\ln(1+e{x})\bigr)\cdot\frac{1}{1+e^{-x}}\
    &=\tanh\bigl(\ln(1+e^{x})\bigr) + x \cdot\bigl(1-\tanh2(\ln(1+e{x})\bigr)\cdot\sigma(x)
    \end{aligned}
    $$


函數和導函數圖像

  • 畫圖

    import numpy as np
    from matplotlib import pyplot as pltdef mish(x):"""Mish(x) = x * tanh(softplus(x))"""sp = np.log(1 + np.exp(x))          # softplus(x)return x * np.tanh(sp)def mish_derivative(x):"""Mish'(x) = tanh(softplus(x)) + x * (1 - tanh2(softplus(x))) * sigmoid(x)"""sp = np.log(1 + np.exp(x))          # softplus(x)t  = np.tanh(sp)                    # tanh(softplus(x))s  = 1 / (1 + np.exp(-x))           # sigmoid(x)return t + x  * (1 - t ** 2) * sx = np.linspace(-4, 4, 1000)
    y = mish(x)
    y1 = mish_derivative(x)plt.figure(figsize=(12, 8))
    ax = plt.gca()
    plt.plot(x, y, label='Mish')
    plt.plot(x, y1, label='Derivative', linestyle='--')
    plt.title('Mish Activation Function and its Derivative')ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data', 0))
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data', 0))plt.legend(loc='upper left')
    plt.savefig('./mish.jpg',dpi=300)
    plt.show()
    

    mish


優缺點

  • Mish 的優點

    1. 平滑無斷點:Mish 函數在整個實數域內連續可導,有助于穩定的梯度流,緩解梯度消失問題。
    2. 非單調性:負半軸有一段“下凹再回升”的曲線,有助于梯度流動,提升網絡的表達能力。
    3. 無上界正值:正值部分無飽和區,避免梯度消失,適合深層網絡,有有下界(≈ ?0.31)。
    4. 實驗性能:在 ImageNet、COCO 等多個基準上,Mish 常優于 ReLU、Swish 等激活函數。(并非絕對)
  • Mish 的缺點

    1. 計算開銷大:相比 ReLU,需要額外計算 softplus、tanh 與乘法,推理延遲略高。
    2. 顯存占用:反向傳播需緩存中間結果,顯存開銷高于 ReLU。
    3. 并非萬能:在某些輕量級或實時任務中,性能提升可能無法抵消額外計算成本,需要實驗驗證。

PyTorch 中的 Mish 函數

  • 代碼

    import torch
    import torch.nn.functional as F# 固定隨機種子
    torch.manual_seed(1024)      # CPU
    if torch.cuda.is_available():torch.cuda.manual_seed_all(42)   # GPU,如果有x = torch.randn(2,dtype=torch.float32)
    mish_x = mish(x)print(f"x:\n{x}")
    print(f"mish_x:\n{mish_x}")
    """輸出示例"""
    x:
    tensor([-1.4837,  0.2671])
    mish_x:
    [-0.29912564  0.18258688]
    

TensorFlow 中的 Mish 函數

  • 環境

    python: 3.10.9
    tensorflow: 2.19.0

  • 代碼

    import tensorflow as tfdef mish(x):return x * tf.math.tanh(tf.math.softplus(x))# 生成隨機張量
    x = tf.constant([-1.4837, 0.2671], dtype=tf.float32)
    mish_x = mish(x)print(f"x:\n{x.numpy()}")
    print(f"mish_x:\n{mish_x.numpy()}")"""輸出示例"""
    x:
    [-1.4837  0.2671]
    mish_x:
    [-0.29912373  0.18255362]
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914881.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914881.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914881.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LAMP遷移LNMP Nginx多站點配置全流程

文章目錄前言備份與停止服務nginx安裝與配置nginx 編譯安裝配置服務php-fpm多站點配置phf-fpm介紹多站點配置nginx 多站點配置nginx ssl 配置參考前言 之前服務器使用的是 LAMP環境,想充分利用服務器資源,再運行另外一個站點 在LAMP環境下應該是也可以…

Nginx屏蔽國外IP訪問

下載IP列表 # 下載到文件 wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest # 直接輸出到終端 curl -sSL https://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest得到一份國內IP配置 # 原始IP列表格式:apnic|CN|ipv4|218.78.0.0|1310…

stl-string模擬

1.介紹主要進行cpp中string的模擬,方便我們更好的對stl進行使用,string沒有模板,我們將頭文件和函數寫在兩個不同的文件2.頭文件3.cpp文件如有問題,歡迎糾正!

基于MATLAB的極限學習機ELM的數據回歸預測方法應用

說明:這是一個機器學習實戰項目(附帶數據代碼文檔),如需數據代碼文檔可以直接到文章最后關注獲取 或者私信獲取。 1.項目背景 在當今的數據驅動時代,準確且高效的預測模型對于解決復雜問題至關重要。極限學習機&#…

芯谷科技--雙四通道模擬/數字多路復用器74HC4052

在電子系統中,信號的多路復用與解復用是常見的需求,特別是在需要對多個信號源進行選擇和切換的場景中。芯谷科技推出的 74HC4052 雙四通道模擬/數字多路復用器/解復用器,以其高效、靈活的設計,為工程師提供了可靠的解決方案。產品…

基于MATLAB的極限學習機ELM的數據分類預測方法應用

說明:這是一個機器學習實戰項目(附帶數據代碼文檔),如需數據代碼文檔可以直接到文章最后關注獲取 或者私信獲取。 1.項目背景 在現代數據挖掘與機器學習領域,面對日益復雜的數據結構和快速增長的數據量,開…

復合機器人在生物制藥實驗室上下料搬運案例

在醫療行業的物料搬運環節,傳統的人工操作模式逐漸暴露出諸多弊端,成為制約企業發展的瓶頸。富唯智能通過引入先進的復合機器人技術,為醫療企業提供了高效、智能的上下料搬運解決方案,助力醫療行業實現自動化與智能化升級。?客戶…

嵌入式學習-PyTorch(7)-day23

損失函數的調用import torch from torch import nn from torch.nn import L1Lossinputs torch.tensor([1.0,2.0,3.0]) target torch.tensor([1.0,2.0,5.0])inputs torch.reshape(inputs, (1, 1, 1, 3)) target torch.reshape(target, (1, 1, 1, 3)) #損失函數 loss L1Loss…

用 Ray 跨節點調用 GPU 部署 DeepSeek 大模型,實現分布式高效推理

在大模型時代,單節點 GPU 資源往往難以滿足大模型(如 7B/13B 參數模型)的部署需求。借助 Ray 分布式框架,我們可以輕松實現跨節點 GPU 資源調度,讓大模型在多節點間高效運行。本文將以 DeepSeek-llm-7B-Chat 模型為例&…

快速了解 HTTPS

1. 引入 在 HTTP 協議 章節的 reference 段,曾提到過 HTTPS。這里對HTTPS進行詳細介紹。 HTTPS 是在 HTTP 的基礎上,引入了一個加密層 (SSL)。HTTP 是明文傳輸的 (不安全)。當下所見到的大部分網站都是 HTTPS 的。 起初是拜運營商劫持所賜(…

mysql備份與視圖

要求:1.將mydb9_stusys數據庫下的student、sc 和course表,備份到本地主機保存為st_msg_bak.sql文件,然后將數據表恢復到自建的db_test數據庫中;2.在db_test數據庫創建一視圖 stu_info,查詢全體學生的姓名,性別,課程名&…

【數據結構】 鏈表 + 手動實現單鏈表和雙鏈表的接口(圖文并茂附完整源碼)

文章目錄 一、 鏈表的概念及結構 二、鏈表的分類 ?編輯 三、手動實現單鏈表 1、定義單鏈表的一個節點 2、打印單鏈表 3、創建新節點 4、單鏈表的尾插 5、單鏈表的頭插 6、單鏈表的尾刪 7、單鏈表的頭刪 8、單鏈表的查找 9、在指定位置之前插入一個新節點 10、在指…

Go語言時間控制:定時器技術詳細指南

1. 定時器基礎:從 time.Sleep 到 time.Timer 的進化為什么 time.Sleep 不夠好?在 Go 編程中,很多人初學時會用 time.Sleep 來實現時間控制。比如,想讓程序暫停 2 秒,代碼可能是這樣:package mainimport (&q…

C# 轉換(顯式轉換和強制轉換)

顯式轉換和強制轉換 如果要把短類型轉換為長類型,讓長類型保存短類型的所有位很簡單。然而,在其他情況下, 目標類型也許無法在不損失數據的情況下容納源值。 例如,假設我們希望把ushort值轉化為byte。 ushort可以保存任何0~65535的…

淺談自動化設計最常用的三款軟件catia,eplan,autocad

筆者從上半年開始接觸這三款軟件,掌握了基礎用法,但是過了一段時間不用,發現再次用,遇到的問題短時間解決不了,忘記的有點多,這里記錄一下,防止下次忘記Elpan:問題1QF01是柜安裝板上的一個部件&…

網絡編程7.17

練習&#xff1a;服務器&#xff1a;#include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include &…

c++ 模板元編程

聽說模板元編程能在編譯時計算出常量&#xff0c;簡單測試下看看&#xff1a;template<int N> struct Summation {static constexpr int value N Summation<N - 1>::value; // 計算 1 2 ... N 的值 };template<> struct Summation<1> { // 遞歸終…

【深度學習】神經網絡過擬合與欠擬合-part5

八、過擬合與欠擬合訓練深層神經網絡時&#xff0c;由于模型參數較多&#xff0c;數據不足的時候容易過擬合&#xff0c;正則化技術就是防止過擬合&#xff0c;提升模型的泛化能力和魯棒性 &#xff08;對新數據表現良好 對異常數據表現良好&#xff09;1、概念1.1過擬合在訓練…

JavaScript的“硬件窺探術”:瀏覽器如何讀取你的設備信息?

JavaScript的“硬件窺探術”&#xff1a;瀏覽器如何讀取你的設備信息&#xff1f; 在Web開發的世界里&#xff0c;JavaScript一直扮演著“幕后魔術師”的角色。從簡單的頁面跳轉到復雜的實時數據處理&#xff0c;它似乎總能用最輕巧的方式解決最棘手的問題。但你是否想過&#…

論安全架構設計(層次)

安全架構設計&#xff08;層次&#xff09; 摘要 2021年4月&#xff0c;我有幸參與了某保險公司的“優車險”項目的建設開發工作&#xff0c;該系統以車險報價、車險投保和報案理賠為核心功能&#xff0c;同時實現了年檢代辦、道路救援、一鍵挪車等增值服務功能。在本項目中&a…