Shared MLP的作用是什么

Shared MLP的作用是什么MLP是多层感知机的简写,在三维点云处理网络中经常能看到一层SharedMLP.MLP的结构可以简单看成:Output=Input×Weights+biases其中:Input:N×C1Weights:C1×C2biases:C2×1Output:N×C2Input一共N行,每行C1个Feature,MLP能够实现将C1维转换为C2维。这C2维中每一维都整合了原来全部C1维的信…

大家好,又见面了,我是你们的朋友全栈君。

MLP是多层感知机的缩写,在三维点云处理网络中经常能看到一层Shared MLP,下面是我关于其作用的分析。
先从感知机的一层说起,其结构如下。
Output=f(Input×Weights+biases)
其中:
Input:N×C1
Weights:C1×C2
biases:N×1×C2
Output:N×C2
f(·):激活函数,逐元素映射
在这里插入图片描述

注:

  • 有些地方Input维度是C1×N,这个问题不大,Input和Weights乘的时候调换一下位置,后面的矩阵各自转置就好。
  • N指的是样本数量,感知器模型与N值无关,因为从输入到输出每一个样本的处理过程是完全一样的。
  • 激活函数的作用是在输出与输入之间引入非线性因素。

在这里插入图片描述
Input 的每行有C1个Feature,感知机的一层能够实现将C1维转换为C2维(对应输入层和第1层的C1、C2个神经元)。这C2维中每一维都整合了原来全部C1维的信息,但这C2维中不同维度利用这些信息的侧重点不同。换一个形象的说法,相当于把原来整行的信息揉成一团,再揉了C2次,得到C2个不同形状的团,成为C2个新的特征。也就是说,MLP可以实现特征转换,信息重组。再者,由于激活函数会放大一些值,抑制一些值,因此MLP可以实现特征提取

以上说的是MLP的功能,而所谓shared mlp,只是在点云处理网络中的一个说法。强调对点云中的每一个点都采取相同的特征转换。
我们对PointNet中的shared mlp和mlp进行对比。
在这里插入图片描述
由于点云中的每一个点不是独立的,因此不应看作独立的样本。在shared mlp中,输入为包含多点的点云,我们对每一个点乘以相同的权重,这就叫做shared weights。而在mlp中,输入为单个向量,因此不需要共享权重。

我查看了PointNet的网络源码,参考了这位博主的解析:点云处理网络中的Shared MLP


下面对其源码中shared mlp 的实现进行解析。证明其与前面介绍的MLP本质上相同。
在这里插入图片描述
PointNet使用二维卷积网络来实现Shared MLP。左上图为PointNet中第一个Shared MLP模块示意图。

网络首先将点云看成一幅Nx3的单通道图片输入,然后通过1x3x1的卷积核将这幅点云的宽度变为1。通过定义卷积核的数量,可以任意定义该层输出的通道数。对应到右侧的神经元结构图,就是将3个输入神经元的信息整合后传到下层神经元的过程,64个神经元对应64个卷积核。

再往后,只需要使用 1x1xOutputChannel 的卷积核,就可以对点云特征进行任意维度的转换。所需的参数数量,都是InputChannel×OutputChannel,其作用都是特征提取。

结论

Shared MLP 是点云处理网络中的一种说法,强调对点云中的每一个点都采取相同的操作。其本质上与普通MLP没什么不同,其在网络中的作用即为MLP的作用:特征转换、特征提取。
——————————————————

以上为2021/03/27更新

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151707.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【用户画像】从0到1掌握用户画像知识体系

    【用户画像】从0到1掌握用户画像知识体系一、初始用户画像1.1用户画像随着用户的一切行为数据可以被企业追踪到,企业的关注点日益聚焦在如何利用大数据为经营分析和精准营销服务,而要做精细化运营,首先要建立本企业的用户画像。提到用户画像的概念,我们区分下用户角色(Persona)和用户画像(Profile):1.1.1用户角色用户角色本质是一个用以沟通的工具,当我们讨论产品、需求、场景、用户体验的时候,为了避免在目标用户理解上的分歧,用户角色应运而生。用户角色建立在对真实用户深刻理解,及高精准相关数据的概括之上,虚构的包含典型用

    2022年5月25日
    97
  • hackbar 使用教程_HackMan:打造Chrome下的HackBar !「建议收藏」

    hackbar 使用教程_HackMan:打造Chrome下的HackBar !「建议收藏」本Chrome插件基于PostMan插件二次开发,感谢作者。请不要说闲的JJ疼,都有了HackBar为毛还要在造轮子……我比较喜欢Chrome的API,就写了由于Chrome自身限制,无法做成想Hackbar一样。由于二次开发,面向的用户不一样,就改名为HackMan版权当然还是作者的,勿怪!功能说明左边栏为历史记录和收藏请求顶栏分别为普通模式请求和BasicAuth,DigestAuth,…

    2022年5月31日
    350
  • JAVA如何遍历arraylist数组,Java 程序使用Lambda表达式遍历ArrayList

    JAVA如何遍历arraylist数组,Java 程序使用Lambda表达式遍历ArrayListJava程序使用Lambda表达式遍历ArrayList在此示例中,我们将学习在Java中使用lambda表达式遍历数组列表的每个元素。要理解此示例,您应该了解以下Java编程主题:示例:将ArrayList作为函数参数传递示例importjava.util.ArrayList;classMain{publicstaticvoidmain(String[]args){//创建Ar…

    2022年7月22日
    5
  • Linux怎么卸载jdk_下载jdk的步骤

    Linux怎么卸载jdk_下载jdk的步骤一、手动安装jdk卸载1、先输入java-version查看是否安装了jdkjava-version2、如果安装了,检查下安装的路径whichjava(查看JDK的安装路径)whichjava3、卸载rm-rfJDK地址(卸载JDK)rm-rf/usr/java/jdk/jdk1.8.0_172/4、vim命令编辑文件profilevim/etc/profile将配置文件注解或删除#setjavaevironment#exportJAVA_HOME

    2022年9月1日
    2
  • php开源在线客服系统_源码屋

    php开源在线客服系统_源码屋另外,客#服源码也不太适用于小规模的企业通讯场景,用客#服源码往企业通讯场景上套就有点“杀鸡用牛刀”,因为企业通讯更强调功能丰富而非极限性能,与客#服源码的目标不符,所以二者的上层设计也不同。另外,在产品对比章节下,我们也提到了客#服源码项目的缺点供您参考。1、(业务功能完善性)客#服源码支持几乎所有商用即时通讯产品所支持的即时通讯相关功能(甚至还有更多的业务功能),且无业务功能限制,同时也支持一些诸如敏感词过滤(基于双数组Trie的AC自动机算法实现)、消息冷热分离存储等高级IM功能。……….

    2022年9月21日
    0
  • Futex系统调用,Futex机制,及具体案例分析[通俗易懂]

    Futex系统调用,Futex机制,及具体案例分析[通俗易懂]Futex1、背景1.1自己实现锁1.1.1自旋锁1.1.2sleep+自旋1.1.3小结1.2futex1.2.1什么是Futex1.2.2futex诞生之前1.2.3futex诞生之后2、Futex系统调用3、Futex机制4、具体案例分析4.1在Bionic中的实现4.2C语言实现5、参考及扩展阅读首先要区分一下futex系统调用和futex机制。futex系统调用是操作系统提供给上层的系统调用接口。而futex机制是使用futex接口实现的一种锁。1、背景线程同步可以说

    2022年9月21日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号