问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SiLu激活函数

创作时间:
作者:
@小白创作中心

SiLu激活函数

引用
CSDN
1.
https://blog.csdn.net/weixin_43702920/article/details/145467867

SiLU(Sigmoid Linear Unit)激活函数是近年来在深度学习中广泛应用的一种激活函数。它具有平滑、非单调等特性,能够有效缓解梯度消失问题。本文将通过Python代码展示如何使用PyTorch和Matplotlib库来绘制SiLU函数及其导数的曲线,并对图像进行简要说明。

SiLU 导数的图像

以下是 SiLU 函数及其导数的图像绘制代码(使用 PyTorch 和 Matplotlib):

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np

# 定义 SiLU 激活函数
class SiLU(nn.Module):
    def forward(self, x):
        return x * torch.sigmoid(x)

# 定义 SiLU 的导数
def silu_derivative(x):
    sigmoid_x = torch.sigmoid(x)
    return sigmoid_x + x * sigmoid_x * (1 - sigmoid_x)

# 示例输入数据
x = torch.linspace(-10, 10, 400)
silu = SiLU()
y = silu(x)
y_derivative = silu_derivative(x)

# 绘制 SiLU 函数及其导数的曲线
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.plot(x.numpy(), y.detach().numpy(), label='SiLU', color='blue')
plt.title('SiLU Activation Function')
plt.xlabel('Input')
plt.ylabel('Output')
plt.legend()
plt.grid(True)

plt.subplot(1, 2, 2)
plt.plot(x.numpy(), y_derivative.detach().numpy(), label='SiLU Derivative', color='red')
plt.title('SiLU Derivative')
plt.xlabel('Input')
plt.ylabel('Derivative')
plt.legend()
plt.grid(True)
plt.show()

图像说明

  • SiLU 函数图像:SiLU 函数在输入为正时接近线性,而在输入为负时逐渐趋于 0,具有平滑的过渡[28]。
  • SiLU 导数图像:导数图像在输入为 0 附近达到最大值,随着输入的增加逐渐减小,这表明 SiLU 函数在输入为负时的梯度较大,有助于减轻梯度消失问题[31]。

通过上述代码,你可以直观地看到 SiLU 函数及其导数的形状和特性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号