如何将Mish函数用到深度学习算法中

简介: 如何将Mish函数用到深度学习算法中

目录


摘要


如何在Pytorch使用Mish函数


如何在Keras中使用Mish激活函数。


摘要

Diganta Misra的一篇题为“Mish: A Self Regularized Non-Monotonic Neural Activation Function”的新论文介绍了一个新的深度学习激活函数,该函数在最终准确度上比Swish(+.494%)和ReLU(+ 1.671%)都有提高


公式如下:

image.jpeg

  • 何在Pytorch使用Mish函数

定义Mish函数。

class Mish(torch.nn.Module):
    def __init__(self):
        super().__init__()
    def forward(self, x):
        x = x * (torch.tanh(torch.nn.functional.softplus(x)))
        return x

调用函数:

class Path1_64(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = ConvBN(32, 64, 3)
        self.conv2 = ConvBN(64, 64, [1, 9])
        self.conv3 = ConvBN(64, 64, [9, 1])
        self.conv4 = ConvBN(64, 64, 1)
        self.resBlock = ResBlock(ch=64, nblocks=2)
        self.conv5 = ConvBN(64, 64, [1, 7])
        self.conv6 = ConvBN(64, 64, [7, 1])
        self.conv7 = ConvBN(64, 64, 1)
        self.relu = Mish()
    def forward(self, input):
        x1 = self.conv1(input)
        x2 = self.conv2(x1)
        x3 = self.conv3(x2)
        x4 = self.conv4(x3)
        r1 = self.resBlock(x4)
        x5 = self.conv5(r1)
        x6 = self.conv6(x5)
        x7 = self.conv7(x6)
        x7 = self.relu(x7 + x4)
        return x7

调用Mish激活函数和调用其他的激活函数一样,直接调用即可。

  • 如何在Keras中使用Mish激活函数。

定义Mish激活函数

import tensorflow as tf
from tensorflow.python.keras.layers import *
from tensorflow.keras.layers import Activation
from tensorflow.keras.utils import get_custom_objects
class Mish(Activation):
    def __init__(self, activation, **kwargs):
        super(Mish, self).__init__(activation, **kwargs)
        self.__name__ = 'Mish'
def mish(inputs):
    return inputs * tf.math.tanh(tf.math.softplus(inputs))
get_custom_objects().update({'Mish': Mish(mish)})

调用激活函数:

def bn_prelu(x):

 

   x = BatchNormalization(epsilon=1e-5)(x)

 

   x = Activation('Mish')(x)

 

   return x

 

def build_model(out_dims, input_shape=(100, 100, 3)):

 

   inputs_dim = Input(input_shape)

 

   x = Conv2D(32, (3, 3), strides=(2, 2), padding='same')(inputs_dim)

 

   x = bn_prelu(x)

 

   x = Conv2D(32, (3, 3), strides=(1, 1), padding='same')(x)

 

   x = bn_prelu(x)

 

   x = MaxPooling2D(pool_size=(2, 2))(x)

 

   x = Conv2D(64, (3, 3), strides=(1, 1), padding='same')(x)

 

   x = bn_prelu(x)

 

   x = Conv2D(64, (3, 3), strides=(1, 1), padding='same')(x)

 

   x = bn_prelu(x)

 

   x = MaxPooling2D(pool_size=(2, 2))(x)

 

   x = Conv2D(128, (3, 3), strides=(1, 1), padding='same')(x)

 

   x = bn_prelu(x)

 

   x = Conv2D(128, (3, 3), strides=(1, 1), padding='same')(x)

 

   x = bn_prelu(x)

 

   x = MaxPooling2D(pool_size=(2, 2))(x)

 

   x = Conv2D(256, (3, 3), strides=(1, 1), padding='same')(x)

 

   x = bn_prelu(x)

 

   x = Conv2D(256, (3, 3), strides=(1, 1), padding='same')(x)

 

   x = bn_prelu(x)

 

   x = GlobalAveragePooling2D()(x)

 

   dp_1 = Dropout(0.5)(x)

 

   fc2 = Dense(out_dims)(dp_1)

 

   fc2 = Activation('softmax')(fc2)  # 此处注意,为sigmoid函数

 

   model = Model(inputs=inputs_dim, outputs=fc2)

 

   return model

 

 

 

model = build_model(2)  # 生成模型

 

optimizer = Adam(lr=1e-3)  # 加入优化器,设置优化器的学习率。

 

model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy', metrics=['accuracy'])

目录
相关文章
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应学习算法研究与应用
在深度学习领域,传统的静态模型在处理动态环境和非平稳数据时面临挑战。本文探讨了自适应学习算法在深度学习中的重要性及其应用。通过分析自适应学习算法在模型参数、损失函数和数据分布上的应用,展示了其在提升模型鲁棒性和泛化能力方面的潜力。具体讨论了几种代表性的自适应学习方法,并探索了它们在现实世界中的应用案例,从而展示了其在处理复杂问题和动态数据中的效果。
15 0
|
1天前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
24 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
1天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
30 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
2天前
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
20 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
**摘要:** 了解AI、ML和DL的旅程。AI是模拟人类智能的科学,ML是其分支,让机器从数据中学习。DL是ML的深化,利用多层神经网络处理复杂数据。AI应用广泛,包括医疗诊断、金融服务、自动驾驶等。ML助力个性化推荐和疾病预测。DL推动计算机视觉和自然语言处理的进步。从基础到实践,这些技术正改变我们的生活。想要深入学习,可参考《人工智能:一种现代的方法》和《深度学习》。一起探索智能的乐趣!
33 1
算法金 | 一文看懂人工智能、机器学习、深度学习是什么、有什么区别!
|
5天前
|
算法 Java C语言
Java中的算法与C语言中的函数
Java中的算法与C语言中的函数
9 2
|
4天前
|
机器学习/深度学习 算法 C语言
【深度学习】优化算法:从梯度下降到Adam
【深度学习】优化算法:从梯度下降到Adam
9 1
|
5天前
|
机器学习/深度学习 人工智能 Serverless
【深度学习】神经网络中的激活函数:释放非线性的力量
【深度学习】神经网络中的激活函数:释放非线性的力量
15 1
|
7天前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
16 3
|
6天前
|
算法 调度 C++
【调度算法】共享函数vs拥挤距离
【调度算法】共享函数vs拥挤距离
15 1