zoukankan      html  css  js  c++  java
  • Mish的两种实现方式

    class Mish(nn.Module):
      @staticmethod
      def forward(x):
        return x * F.softplus(x).tanh()

    class MemoryEfficientMish(nn.Module):
      class F(torch.autograd.Function):
        @staticmethod
        def forward(ctx, x):
          ctx.save_for_backward(x)
          return x.mul(torch.tanh(F.softplus(x))) # x * tanh(ln(1 + exp(x)))

        @staticmethod
        def backward(ctx, grad_output):
          x = ctx.saved_tensors[0]
          sx = torch.sigmoid(x)
          fx = F.softplus(x).tanh()
          return grad_output * (fx + x * sx * (1 - fx * fx))

        def forward(self, x):
          return self.F.apply(x)

    第一种方式比较占显存,我是用的yolov4+第一种没有跑起来。第二种,是网上扒的,据说还可以,各位可以试试。。

  • 相关阅读:
    删除链表中的一个节点
    链表系列面试题1
    线程的5种状态
    红黑树 实现
    Java的SPI机制浅析与简单示例
    socket原理
    rabbitmq简单介绍
    MongoTemplate操作mongodb
    RJava配置
    浅析前后台分离
  • 原文地址:https://www.cnblogs.com/zonechen/p/14003461.html
Copyright © 2011-2022 走看看