交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • pytorch SENet实现案例

    北冥有鱼 教程大全 2020-06-26 ,

    我就废话不多说了,大家还是直接看代码吧~

    from torch import nn
    
    class SELayer(nn.Module):
     def __init__(self, channel, reduction=16):
      super(SELayer, self).__init__()
    
      //返回1X1大小的特征图,通道数不变
      self.avg_pool = nn.AdaptiveAvgPool2d(1)
      self.fc = nn.Sequential(
       nn.Linear(channel, channel // reduction, bias=False),
       nn.ReLU(inplace=True),
       nn.Linear(channel // reduction, channel, bias=False),
       nn.Sigmoid()
      )
    
     def forward(self, x):
      b, c, _, _ = x.size()
    
      //全局平均池化,batch和channel和原来一样保持不变
      y = self.avg_pool(x).view(b, c)
    
      //全连接层+池化
      y = self.fc(y).view(b, c, 1, 1)
    
      //和原特征图相乘
      return x * y.expand_as(x)
    

    补充知识:pytorch 实现 SE Block

    论文模块图

    代码

    import torch.nn as nn
    class SE_Block(nn.Module):
     def __init__(self, ch_in, reduction=16):
      super(SE_Block, self).__init__()
      self.avg_pool = nn.AdaptiveAvgPool2d(1)				# 全局自适应池化
      self.fc = nn.Sequential(
       nn.Linear(ch_in, ch_in // reduction, bias=False),
       nn.ReLU(inplace=True),
       nn.Linear(ch_in // reduction, ch_in, bias=False),
       nn.Sigmoid()
      )
    
     def forward(self, x):
      b, c, _, _ = x.size()
      y = self.avg_pool(x).view(b, c)
      y = self.fc(y).view(b, c, 1, 1)
      return x * y.expand_as(x)
    

    现在还有许多关于SE的变形,但大都大同小异

    以上这篇pytorch SENet实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持北冥有鱼。


    广而告之:
    热门推荐:
    PHP+jquery+ajax实现即时聊天功能实例

    本文实例讲述了PHP+jquery+ajax实现即时聊天功能的方法。分享给大家供大家参考。具体如下: 这是一个简单的利用jquery与php做的一个聊天室的源码,我们这里定时利用ajax读取数据库并进行刷新了,下面直接参上源码,实例代码如下: index.html页面如下: 复制代码 代码如下:<!DOC···

    JS把内容动态插入到DIV的实现方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" />···

    jQuery实现div随意拖动的实例代码(通用代码)

    注意js放的位置,要放的靠近,若被其他覆盖,则无法移动。 比如: <div id="move">可移动的DIV</div> 引入jquery.js, jquery-ui.js, <script scr="http://code.jquery.com/jquery-1.10.2.js"></script> <script scr="http://code.jquery.com/ui/1···

    详解vue-cli与webpack结合如何处理静态资源

    处理静态资源 你也许会注意到vue-cli与webpack结合的项目中,我们通常会有两个静态资源的路径:src/assets和static/,他们两者的区别是什么呢? 打包的资源 为了回答这个问题,我们首先要明白Webpack是如何处理静态资源的。在*.vue组件里,所有的templates和CSS模块都被vue-htm···

    解决javascript:window.close()在chrome,Firefox下失效的问题

           window.close(),一看就知道是用来关闭浏览器窗口的方法。W3CSchool对该方法的解释如下:方法 close() 将关闭有 window 指定的顶层浏览器窗口。某个窗口可以通过调用 self.close() 或只调用 close() 来关闭其自身。只有通过 Jav···

    AngularJS创建自定义指令的方法详解

    本文实例讲述了AngularJS创建自定义指令的方法。分享给大家供大家参考,具体如下: 这是一篇译文,来自angular开发者说明的指令。主要面向已经熟悉angular开发基础的开发者。这篇文档解释了什么情况下需要创建自己的指令,和如何去创建指令。 什么是指令 从一个高的层面来讲,···

    springboot2.x使用Jsoup防XSS攻击的实现

    后端应用经常接收各种信息参数,例如评论,回复等文本内容。除了一些场景下面,可以特定接受的富文本标签和属性之外(如:b,ul,li,h1, h2, h3...),需要过滤掉危险的字符和标签,防止xss攻击。 一、什么是XSS? 看完这个,应该有一个大致的概念。 XSS攻击常识及常见的XSS攻击···

    Vue响应式添加、修改数组和对象的值

    有些时候,不得不想添加、修改数组和对象的值,但是直接添加、修改后又失去了getter、setter。 由于 JavaScript 的限制, Vue 不能检测以下变动的数组: 1. 利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue 2. 修改数组的长度时,例如: vm.items.length =···

    如何解决URL不规划问题?合理应用canonical标签来解决

    网站标准化一直是困扰网站管理员和搜索引擎的问题。据估计,互联网上10%到30%的网址是内容相同但网址不同的非标准化网址。  这导致了几个问题。例如:  对于网站管理员来说,多个URL的存在分散了页面的权重,这不利于排名。  对于搜索引擎,它···