为什么torch.nn.Linear的表达形式为y=xA^T+b而不是常见的y=Ax+b?

今天看代码,对比了常见的公式表达与代码的表达,发觉torch.nn.Linear的数学表达与我想象的有点不同,于是思索了一番。

众多周知,torch.nn.Linear作为全连接层,将下一层的每个结点与上一层的每一节点相连,用来将前边提取的特征综合起来。具体如下:

则显然可以得到:Y=AX+b,其中

Y=\begin{pmatrix} y1\\ y2\\ \cdot\\ ym\\ \end{pmatrix}, X=\begin{bmatrix} x1\\ x2\\ \cdot\\ xn \end{bmatrix},A=\begin{pmatrix} w11 & w12 & ... &w1n \\ w21&w22 &... & w2n\\ ..& .. & .. &.. \\ wm1 & wm2 & ...& wmn \end{pmatrix},b=\begin{pmatrix} b1\\ b2\\ \cdot\\ bm \end{pmatrix}

上面的公式进行转置后,得到,Y^T=X^TA^T+b^T

也就是将输入和输出向量都变成了行向量了。

在pytorch中,

实际上这里的x就是行向量,y也是行向量,A的行数与y(输出)相关,列数与x(输入)相关, b是一个行向量,与输出维度有关。

这里可以看到,m作为一个全连接层,输入为20维,输出为30维,则可见A的规模为30x20(输出规模x输入规模),

input作为一个输入矩阵,规模为128x20,这里可见一般在一个tensor中,feature都是行优先,

这样的话,使用m作用到input上,规模为128x20x(20x30)---->128x30.  即为示例中结果。

注意下图A和b的维度。

以上的分析照应了torch.nn.functional.linear的表达。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode47: Palindrome Linked List

Given a singly linked list, determine if it is a palindrome. 推断一个链表是不是回文的,一个比較简单的办法是把链表每一个结点的值存在vector里。然后首尾比較。时间复杂度O(n)。空间复杂度O(n)。 /*** Definition for singly-linked list.* struct ListNode {…

内存颗粒位宽和容量_SDRAM的逻辑Bank与芯片容量表示方法

1、逻辑Bank与芯片位宽讲完SDRAM的外在形式,就该深入了解SDRAM的内部结构了。这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部是一个存储阵列。因为如果是管道式存储(就如排队买票),就很难做到随机访问了。阵列就如同表格一样,…

[Unity菜鸟] Time

1. Time.deltaTime 增量时间 以秒计算,完成最后一帧的时间(秒)(只读) 帧数所用的时间不是你能控制的。每一帧都不一样,游戏一般都是每秒60帧,也就是updata方法调用60次(假如你按60帧来算 而真实情况是不到60帧 那么物体就不会运动…

【转】七个例子帮你更好地理解 CPU 缓存

我的大多数读者都知道缓存是一种快速、小型、存储最近已访问的内存的地方。这个描述相当准确,但是深入处理器缓存如何工作的“枯燥”细节,会对尝试理解程序性能有很大帮助。在这篇博文中,我将通过示例代码来说明缓存是如何工作的,…

Pytorch——对应点相乘和矩阵相乘

1. 点乘,对应元素相乘,不求和 import torcha torch.Tensor([[1,2], [3,4], [5,6]]) b1 a.mul(a)// b2a*a b1 Out[79]: tensor([[ 1., 4.],[ 9., 16.],[25., 36.]]) b2 Out[80]: tensor([[ 1., 4.],[ 9., 16.],[25., 36.]]) 以上两种方法都可以表…

mysql初始化错误【一】Can't find error-message file '/usr/local/mysql/errmsg.sys'

环境:CentOS 7.2MySQL 5.7.18从mysql官方网站下载rpm包到服务器本地,依次安装下面的RPM包:mysql-community-common-5.7.18-1.el7.x86_64.rpmmysql-community-server-5.7.18-1.el7.x86_64.rpmmysql-community-client-5.7.18-1.el7.x86_64.rpmm…

双极型adc与stm32_关于STM32 双ADC同步规则转换两路数据的问题?

因系统要求需升级ADC的采样方式(以前方式:扫描方式,TIMER2触发ADC软启动,2通道规则序列,DMA传完中断),为了进一步实现两路信号的同步性能,采样STM32 双ADC同步规则转换。(timer2触发ADC软启动,2…

面试金典--11.5

题目描述:给定排序后的字符串数组,中间有一些空串,要求找到给定字符串的位置 思路: (1)遍历,最慢的 (2)二分查找,当mid处为空串,就找到最近的非空…

win10 平台VS2019最简安装实现C++/C开发

这两天一直在安装vs2015,总是卡在visual studio 2015 出现安装包丢失或损坏的现象,尽管按照网上很多方法尝试解决,但是一直不行。算了。还是使用最新版的VS 2019安装,没想到很顺利。 下面总结一下在win10平台上最简安装VS2019,实…

Hook的两个小插曲

看完了前面三篇文章后,这里我们来一个小插曲~~~~ 第一个小插曲。是前面文章一个CM精灵的分析。我们这里使用hook代码来搞定。 第二个小插曲,是如今一些游戏,都有了支付上限,比如每天仅仅能花20块钱来购买。好了。以下我们分开叙述…

### C++总结-[类成员函数]

C类中的常见函数。 #author: gr #date: 2015-07-23 #email: forgeruigmail.com 一、constructor, copy constructor, copy assignment, destructor 1. copy constructor必须传引用,传值编译器会报错 2. operator 返回值为引用,为了…

微信小程序和vue双向绑定哪里不一样_个人理解Vue和React区别

本文转载自掘金,作者:binbinsilk,监听数据变化的实现原理不同Vue 通过 getter/setter 以及一些函数的劫持,能精确知道数据变化,不需要特别的优化就能达到很好的性能React 默认是通过比较引用的方式进行的,如…

JS 省,市,区

1 // 纯JS省市区三级联动2 // 2011-11-30 by http://www.cnblogs.com/zjfree3 var addressInit function (_cmbProvince, _cmbCity, _cmbArea, defaultProvince, defaultCity, defaultArea) {4 var cmbProvince document.getElementById(_cmbProvince);5 var cmbCity…

使用极链/AutoDL云服务器复盘caffe安装

继上一次倒腾caffe安装以后,因为博士毕业等原因,旧的服务器已经不能再使用,最近因论文等原因,不得不继续来安装一下我的caffe。这次运气比较好,经历了一晚上和一早上的痛苦之后,最终安装成功了,…

ibatis中使用List作为传入参数的使用方法及 CDATA使用

ibatis中list做回参很简单,resultClass设为list中元素类型,dao层调用: (List)getSqlMapClientTemplate().queryForList("sqlName", paraName); 并经类型转换即可,做入参还需要稍微调整下,本文主要讲list做入参碰到的几…

Samba服务

####################samba####################1.samba作用提供cifs协议实现共享文件2.安装yum install samba samba-common samba-client -ysystemctl start smb nmbsystemctl enable smb nmb3.添加smb用户smb用户必须是本机用户[rootlocalhost ~]# smbpasswd -a student New…

wpf 窗口的返回值_WPF Tips: Window.ShowDialog() 返回 true

Window.ShowDialog() 返回值为bool?。希望在窗口点击OK时返回True。解决方法:ShowDialog()的注释为:// Returns:// A System.Nullable value of type System.Boolean that specifies whether// the activity was accepted (true) or canceled (false). …

CodeForces 543D 树形DP Road Improvement

题意: 有一颗树,每条边是好边或者是坏边,对于一个节点为x,如果任意一个点到x的路径上的坏边不超过1条,那么这样的方案是合法的,求所有合法的方案数。 对于n个所有可能的x,输出n个答案。 分析&am…

理解Javascritp中的引用

Author: bugall Wechat: bugallF Email: 769088641qq.com Github: https://github.com/bugall一: 函数中的引用传递 我们看下下面的代码的正确输出是什么 function changeStuff(a, b, c) {a a * 10;b.item "changed";c {item: "changed"}; …

通过扩展改善ASP.NET MVC的验证机制[实现篇]

通过扩展改善ASP.NET MVC的验证机制[实现篇] 原文:通过扩展改善ASP.NET MVC的验证机制[实现篇]在《使用篇》中我们谈到扩展的验证编程方式,并且演示了本解决方案的三大特性:消息提供机制的分离、多语言的支持和多验证规则的支持,我们现在来看…