忘了 忘了,以前学的矩阵知识全交给老师了,敲黑板了,矩阵乘法实例讲解
在这个地方整蒙了,W1和W2这俩是矩阵的标记,但是后面只有个Tr-1和Cr-1,我????
实际上,1 x Tr-1这种表示,即可以是向量也可以是矩阵呀,没有问题,往下理解是向量,往上理解就是矩阵,
其次,W1与 做运算是将W1当作Tr-1 × 1的矩阵进行运算,而W3和
运算是将其当成1 × Cr-1进行运算,我们可以看到W1和W3是都是用的R^(?)的形式表示的矩阵,但是运算时候却不一样,敲黑板了!这就是我整蒙圈的地方,你想R^(?)是个欧几里得空间,1×Cr-1和Cr-1 × 1都是R^Cr-1的欧几里得空间,因此R^(?)这个东西我们是根据运算可以实时调整它是1 x c还是c x 1的!
接下来就是R^(N x Cr-1 x Tr-1),这个???这咋个运算哦?
敲黑板!这种高维的,我们以低维的眼光去分解他,看成N个Cr-1 x Tr-1的矩阵,那么W3与分别与N个相乘,那么自然就得到了N个1 x Tr-1的矩阵,再写成R就是R^(N x Tr-1)了。再转置一下,右边W3的计算结果就是一个R^(Tr-1 x N)的值
好!那么代码里面怎么搞得呢?先上代码:
# defer the shape of paramsself.W_1.shape = (num_of_timesteps, ) #对标初始化的时间长度self.W_2.shape = (num_of_features, num_of_timesteps) #特征数目 x 时间长度self.W_3.shape = (num_of_features, )self.b_s.shape = (1, num_of_vertices, num_of_vertices)self.V_s.shape = (num_of_vertices, num_of_vertices)for param in [self.W_1, self.W_2, self.W_3, self.b_s, self.V_s]:param._finish_deferred_init() #完成模块的初始化# compute spatial attention scores# shape of lhs is (batch_size, V, T)lhs = nd.dot(nd.dot(x, self.W_1.data()), self.W_2.data()) #lhs式子左部# shape of rhs is (batch_size, T, V)#之所以x是四维的是因为批处理的问题,batch_size=10意思是10个样本同时进行计算。x的维度是10 x V x features x Trhs = nd.dot(self.W_3.data(), x.transpose((2, 0, 3, 1)))product = nd.batch_dot(lhs, rhs)S = nd.dot(self.V_s.data(),nd.sigmoid(product + self.b_s.data()).transpose((1, 2, 0))).transpose((2, 0, 1))
诶?这里面咋有多了一维?啥情况,原因是我们训练是一个batch一个batch训练的
那么这里面咋没有 .T的转置操作呢?讲解
一开始batch_size x N x C x T,那么你当然可以直接算,然后再来个转置,最终能够满足Tr-1 x N的结果,但如果你先对这个高维的矩阵进行一下transpose的变化,变换成C x batch x T x N这个形式再和W3运算,就可以直接得到T x N就不用做转置了。类似于上面三维的情况,C x batch x T x N做运算的时候看成C x 1的矩阵,里面的1是batch x T x N,然后就成了batch x T x N,因为batch是训练用的,其实就是Tr-1 x N了
参考资料:Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting 2020.AAAI
https://github.com/wanhuaiyu/ASTGCN
忘了 忘了,以前学的矩阵知识全交给老师了,敲黑板了,矩阵乘法实例讲解相关推荐
- 低秩矩阵补全算法matlab实现,推荐系统中的矩阵补全算法
最基本的问题,以用户电影评分为例,也就是这个用户-电影矩阵. 表中是用户多电影的评分,但评分有缺失,因为用户不可能对所有电影作出评价. 那么推荐问题就是给用户合理推荐一个没看过的电影,合理是指,预测用 ...
- 想爱,爱不了,想恨,恨不下,想忘,忘不了
总有那么个人,.想爱,爱不了 总有那么个人,想恨,恨不下 总有那么个人,想留,却留不住 总有那么个人,想放,却放不下 有的.有的.有的... 有的人,爱过了,就分开了 有的话,说过了,就后悔了 有道伤 ...
- 矩阵转置算法 oracle,请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函...
请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中.计算结果在main函 更多相关问题 假定砌块对孔砌筑,孔内不灌实混凝土,柱头全截面设一预制刚性垫块,且梁端有效 ...
- ker矩阵是什么意思_重做第一次作业(矩阵)
doc 函数名 输进命令行窗口 可以查看官方帮助,但是是英文的--得搭配翻译软件 Clc clear每次写程序前 一个是擦黑板(清空命令行窗口)一个是清除所有变量 clf 画图前,用于清除所有图片 什 ...
- python将list转为矩阵_python list转矩阵的实例讲解
python list转矩阵的实例讲解 如下所示: #list转矩阵,矩阵列合并 x = [[1.2,2.2,1.4],[1.3,2.4,2.1],[1,1,0]] #表示有三个点,第一个点为(1,2 ...
- java 学到什么实习_我如何获得外展实习机会以及到目前为止所学到的知识
java 学到什么实习 by Nguedia Adele 由Nguedia Adele 我如何获得外展实习机会以及到目前为止所学到的知识 (How I got my Outreachy interns ...
- 服务器部署基础知识_我在生产部署期间学到的知识
服务器部署基础知识 by Shruti Tanwar 通过Shruti Tanwar 我在生产部署期间学到的知识 (What I learned during production deploymen ...
- R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)
R语言使用caret包的confusionMatrix函数计算混淆矩阵.使用编写的自定义函数可视化混淆矩阵(confusion matrix) 目录
- DeepMind发69页长文掀开AlphaZero的黑盒:神经网络学到的知识和人类基本相似!
来源:新智元 本文约2400字,建议阅读10+分钟 AlphaZero下棋和人类下棋究竟有什么区别?是否掌握了一些人类未曾了解过的知识? [ 导读 ] AlphaZero下棋和人类下棋究竟有什么区别? ...
- matlab 定义矩阵_MATLAB与Python,Mathematica由高维转化一维矩阵的方式的不同
在进行数据处理的时候,我比较喜欢的数据存储方式是所有的数据都保存成MATLAB的".mat"文件,这种格式Python,Mathematica,MATLAB都会支持.不过在转化的时 ...
最新文章
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 BasicMessageChannel 通信 )
- 钉钉宜搭邀您体验全新升级的数据管理页
- Win7运行QQ2010提示“应用程序无法启动”,因为应用程序的并行配置不正确
- python办公代码_[Python] 自动化办公 docx操作Word基础代码
- python写自动化工具_微软最强 Python 自动化工具开源了!不用写一行代码!
- leetcode934.ShortestBridge
- pycharm shortcuts
- python控制svn_jenkins+svn+python的使用
- 适配器模式/adapter模式/结构型模式
- 计算机画布模式,商业模式画布基础知识
- 大学python教材电子版下载_Python数据分析基础(全国高等院校应用型创新规划教材·计算机系列)...
- 用 Python 自动定时发微博
- 一位射频技术支持工程师的工作感悟
- 计算机图形学的边表教学ppt,计算机图形学(多边形的扫描转换).ppt
- SM2证书的鉴定方法
- Unity5.3官方VR教程重磅登场-系列4 VR中的用户界面
- 适配器模式实战场景和本质
- hadoop上运行java版本_Hadoop--3.JDK1.7安装配置
- python在两行中分别输入一个字符串s和整数n,定义一个函数将字符串s循环向右移动n位
- 隐藏计划任务反弹shell