Tan_pytorch_segmentation/pytorch_segmentation/Activation_Function/Sigmoid.py

31 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)范围内的概率值,可用于将预测概率作为输出的模型,比如用于表示二分类的类别或者用于表示置信度。
2、Sigmoid 函数的输出范围是 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
"""