专栏链接:
https://blog.csdn.net/qq_39707285/article/details/124005405
本专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。
本章介绍多种激活函数
2.2.激活函数
任何神经网络的主要目标都是使用层次性层次结构将非线性可分的输入数据转换为更线性可分的抽象特征,这些层是线性函数和非线性函数的组合,最流行和最常见的非线性层是激活函数(AFs),如sigmoid、Tanh、ReLU、ELU、Swish和Mish。
使用不同激活函数在CIFAR10上准确率对比:
使用不同激活函数在CIFAR100上准确率对比:
使用不同激活函数在CIFAR100上训练耗时统计:
综合实验分析发现:
- Softplus、ELU和CELU激活函数更适合MobileNet;
- ReLU、Mish和PDELU在VGG16、 GoogleNet和DenseNet上表现都很好;
- ReLU、LReLU、ELU、GELU、CELU、ABReLU和PDELU更适合含有残差连接的算法,例如ResNet50,SENet18和DenseNet121等;
- 训练过程中,PDELU非常低效,另外SRS和Elliott也耗时很久。 ReLU, ELU, CELU和Softplus能在准确率和耗时中有一个很好的权衡。
2.2.1. 激活函数汇总
- Logistic Sigmoid
x = np.linspace(-15, 15, 1000)
y = 1 / (1 + np.exp(-x)) # sigmoid
- Tanh
x = np.linspace(-15, 15, 1000)
y = np.tanh(x) # tanh
- ReLU系列
- ReLU
- LReLU
- ELU
- SELU
- GELU
- CELU
import matplotlib.pyplot as plt
import numpy as np
import torch
import torch.nn.functional as F
fig = plt.figure(figsize=(12, 6)