• 文章转自:微信公众号「机器学习炼丹术」
  • 作者:炼丹兄(欢迎交流,共同进步)
  • 联系方式:微信cyx645016617
  • 论文名称:「MLP-Mixer: An all-MLP Architecture for Vision」
  • 论文链接:https://arxiv.org/pdf/2105.01601v1.pdf

「前沿」:最近忙各种各样的事情,更新慢了。抽空写一点。这一篇内容很简单,只需要5min就可以学完。

正文开始

我们提供了MLP-Mixer架构,之后简称Mixer。这是一个有竞争力,但是概念和技术都很简单的结构,并且没有用到卷积和自注意力

类似于transformer,Mixer模型的输入依然是图片的Patch经过线性映射之后的序列,简单的说就是embedding。是一个形状如同“patches x channels” 这样的一个特征。其中,我们把图片embedding之后的序列,叫做token

下图是Mixer的宏观结构图:

Mixer利用了两种MLP层:

  • channel-mixing MLPs:允许不同channels特征之间的交流;
  • token-mixing MLPs:允许不同空间位置之间的交流。
  • 这两个MLP层是交错的。

「图解读」

  • 从图中caption部分可以看到。“Per-patch Fully-connected”我认为就是embedding层,比方说把一个32x32x3的彩色patch图片,全连接映射到128维度的序列。
  • Mixer Layer就是文章提出的主要创新结构。其中,每一个Mixer Layer包含一个token-mixing MLP 和一个channel-mixing MLP,这两个结构都是由两个全连接层和GELU激活函数组成。
  • 我们再来看上图的上面部分,体现了Mixer Layer的细节:首先,假设一个图片被分成了9个patch,然后每一个patch经过embedding,变成了一个128的向量。那么原图经过embedding,最终得到的是9x128这样的一个矩阵。
    1. 这个矩阵先经过LayerNorm,相当于是在128这个维度上进行归一化;
    2. 然后矩阵经过转置,变成128x9的样式;
    3. 经过第一个全联接层,这个MLP应该就是channel-mixing了,因为是对9这个patch维度进行计算;
    4. 然后再转置成9x128,再进行layer norm;
    5. 然后token-mixing channels,在128这个spatial维度上进行计算;
    6. 中间加了两个skip connection。

「这里,我们可以发现,整个结构确实非常简单,回头试试效果去。」

5分钟就能学会的简单结构 | MLP-Mixer: An all-MLP Architecture for Vision | CVPR2021的更多相关文章

  1. 10分钟 教你学会Linux/Unix下的vi文本编辑器

    10分钟 教你学会Linux/Unix下的vi文本编辑器 vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器.看了不少关于vi的资料,终于得到这个总结.不敢独享,和你们共享. 首先,记住v ...

  2. 2分钟就能学会的【Google/百度搜索大法】了解一下?

    之前我在知乎回答了「日常生活中有哪些十分钟就能学会并可以终生受用的技能」,现在也整理分享给公众号的朋友们. 作为一个入坑8年国际贸易的老阿姨,真心推荐[google搜索大法](同样适用于百度). 2分 ...

  3. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  4. 5分钟让你学会用最高效的工具解析所有Json

    如果你是一个Android开发工程师,学会解析Json字符串是你的必修课,本篇文章主要以实例的方式手把手教你怎么做,花五分钟时间阅读本篇文章你就可以学会解析所有的Json字符串啦. 准备: json字 ...

  5. 5分钟教你学会JavaScript正则表达式

    正则表达式在实际开发过程中和技术面试过程中的重要性不言而喻,本文仅仅只是教你如何在几分钟之类学会正则表达式,对于它的原理及运行机制不做介绍. 第一:什么是正则 正则表达式是一种用来描述一定数量文本的模 ...

  6. Docker虚拟化管理:30分钟教你学会用Docker

    关于Docker的官方介绍网上太多了我就不贴了,就实际体验来说Docker可以极大的简化环境搭建及服务部署的操作流程,大大降低部署的时间成本,解放你的双手. 本文不会深入讲解Docker底层架构及运行 ...

  7. 几分钟就能学会的Python虚拟环境教程

    什么是虚拟环境 我们在使用Python的时候,通常用pip来进行包管理.比如我们要安装一个叫requests的库,那么我们就会采用以下命令去安装: pip install requests 那你知道, ...

  8. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

    没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...

  9. 【原创】三分钟教你学会MVC框架——基于java web开发(1)

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法. ...

随机推荐

  1. Dubbo学习笔记(一) 基础知识HelloWorld

    Dubbo是由阿里巴巴研发出的一款基于Java实现的RPC框架,现由Apache进行维护管理,笔记中使用zookeeper作为注册中心,dubbo+zookeeper环境安装教程:https://ww ...

  2. Kernighan《UNIX 传奇:历史与回忆》杂感

    Brian W. Kernighan 是一个伟大的技术作家,我买了他写的几乎所有书.他近些年的书我买的是 Kindle 电子版,不占地方. 以下是我手上保存的纸版书: Kernighan 的书大多与别 ...

  3. Selenium3自动化测试【16】元素定位之Tag

    @ 目录 1. 通过tag name定位Bing案例 2. 通过tag name定位一组元素案例 3.[测试全系列视频课程]请点击我哦..... tag name方法是通过对HTML页面中tag na ...

  4. MetaWeblog访问地址

    MetaWeblog访问地址 https://rpc.cnblogs.com/metaweblog/csnd

  5. UVA11021麻球繁衍

    题意:      有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少? 思路:       涉及到全概率公式,因为麻球的 ...

  6. java之Map和Collection

    java中保存对象的容器可分为两类: 1.Map.Map是以键值对的形式来保存一组对象,可以通过键来查找值. 2.Collection.用来保存独立对象的序列.Collection又可分为三种类型: ...

  7. 第二章 FreeBSD之开机关机命令

    立即关机,但是不关闭电源 # shutdown -h now 立即关机,并且关闭电源 # shutdown -p now 重启命令 # shutdown -r now

  8. Spring MVC工作原理及源码解析(三) HandlerMapping和HandlerAdapter实现原理及源码解析

    1.HandlerMapping实现原理及源码解析 在前面讲解Spring MVC工作流程的时候我们说过,前端控制器收到请求后会调⽤处理器映射器(HandlerMapping),处理器映射器根据请求U ...

  9. .NET Core 基于 Grafana Loki 日志初体验

    介绍 Loki: like Prometheus, but for logs. Loki是一个轻量级的日志系统,受到Prometheus项目的启发,由Grafana团队设计和开发,所以在Grafana ...

  10. Codeforces Round #661 (Div. 3)

    A. Remove Smallest 题意:数组是否满足任意i,j保证|ai-aj|<=1,如果都可以满足,输出YES,否则输出NO 思路:直接排序遍历即可 代码: 1 #include< ...