Tan_pytorch_segmentation/pytorch_segmentation/Activation_Function/Sigmoid.py

31 lines
1.9 KiB
Python
Raw Permalink Normal View History

2025-05-19 20:48:24 +08:00
import torch
import torch.nn as nn
# Sigmoid函数
print('*' * 25 + "Sigmoid函数" + "*" * 25)
m = nn.Sigmoid()
input = torch.randn(2)
print("原:", input)
print("结果:", m(input))
print('*' * 50)
"""
Sigmoid优点
1其值域为[0,1]非常适合作为模型的输出函数用于输出一个(0,1)范围内的概率值可用于将预测概率作为输出的模型比如用于表示二分类的类别或者用于表示置信度
2Sigmoid 函数的输出范围是 0 1由于输出值限定在0到1因此它对每个神经元的输出进行了归一化
3该函数是连续可导的即可微可以提供非常平滑的梯度值防止模型训练过程中出现突变的梯度即避免跳跃的输出值
Sigmoid不足
1从其导数的函数图像上可以看到其导数的最大值只有0.25而且当x在[-5,5]的范围外时其导数值就已经几乎接近于0了这种情况会导致训练过程中神经元处于一种饱和状态反向传播时其权重几乎得不到更新从而使得模型变得难以训练这种现象被称为梯度消失问题
2其输出不是以0为中心而是都大于0的这会降低权重更新的效率这样下一层的神经元会得到上一层输出的全正信号作为输入所以Sigmoid激活函数不适合放在神经网络的前面层而一般是放在最后的输出层中使用
3需要进行指数运算计算机运行得较慢计算量大及计算复杂度高训练耗时指数的越大其倒数就越小容易产生梯度消失
版权声明本文为CSDN博主小wu学cv的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明
原文链接https://blog.csdn.net/caip12999203000/article/details/127067360
"""