大家好,我是前端西瓜哥。 前段时间对自己的图形编辑器项目做了一次改造。 改用 transform 表达图形的变形,并废弃掉了原来的 rotation、x、y 属性。...这里我简单说说这么做的原因。...虽说貌似可以补上一个 skewX 和 skewY 属性,但和 rotation 有一些冲突,后面会说为什么。 下面是 Figma 缩放多个图形的效果。...所以这里我把图形的 x 和 y 属性也丢掉了,默认为 (0, 0),放到 tx 和 ty 上了。 rotation 值如果对应旋转矩阵,可根据特性求。...计算 rotation,我们可以选择对一个基准方向的向量(比如 (1, 0)),应用 transform 得到新向量,作为这个图形的方向向量,计算出对应的 rotation。
前言 今天的角度比较清奇,我们来讲讲矩阵的乘法。当然了,我告诉你的肯定不是大学教科书上那些填鸭式的云里雾里的计算规则,你可能将规则背下来了,但完全不理解为什么会这样。...下面还是继续拿矩阵 和 举例。 列向量视角 先将矩阵 和 的每一列看成一个向量,例如: 这样就可以把矩阵 和 写成如下的形式: 现在如果我将矩阵 和向量 相乘会得到什么?...到这里你应该能领悟为什么矩阵 的行数与矩阵 的行数相同了,也就是矩阵 的列向量与矩阵 的列向量大小相同。 怎么样,是不是有一种茅塞顿开的感觉?别急,下面我们再换一种理解角度。...现在你应该能领悟为什么矩阵 的列数与矩阵 的列数相同了,也就是矩阵 的行向量与矩阵 的行向量大小相同。 故事到这里就结束了吗?远远没有,下面我们再换一种理解角度。...关于数学,很多人认为数学就是加减乘除、分数、几何代数之类的东西,但实际上数学和模式密切相关,每切换一次视角,你就会得到一种全新的模式。我所说的模式是指影响我们观察的关系、结构以及规律。
另外别忘了加上节点A自身的信息,具体来说,可以通通过加上单位矩阵I的方式实现: 图片 同理,我们可以得到所有节点的邻居信息N: 图片 记 图片 现在,就可以写出隐藏层的更新方程了,与之前的思路类似...具体为什么这么做、为什么要进行归一化我们放在后面讲:关于归一化的一些问题。 具体什么是度这里就不赘述了,给出度矩阵: 图片 其中, 图片 分别是 图片 的度矩阵。...至此为止,我们可以得到完整的隐藏层的更新方程: 图片 其中l为循环层数,σ为激活函数,W为隐藏层的权重矩阵, 图片 是 图片 的度矩阵。...对称归一化 那么为什么不直接使用简单的平均化方法呢?第一个缺点就是 图片 不再是对称矩阵了,这不是我们想要看到的。...举个例子,节点A是我,节点C是老板,老板管着一票人,我只是一个苦命的打工人,不可能说把老板的工资完全加到我身上,然后我拿着一半我的工资,一半老板的工资,美滋滋。
4、接着3来讲这个矩阵的乘法 我做了这个习题,但是遇到了一个问题。就是我矩阵A乘以矩阵B,得到矩阵C,我用不同的方法初始化了矩阵C,运行结果却一个正确一个错误。...result初值结果和下面这句是一样的 # 可是最终的计算结果为什么不一样?...result的初始化方法不同,得到的结果截然不同,。...# 可是最终的计算结果为什么不一样?...result初值结果和下面这句是一样的 # 可是最终的计算结果为什么不一样?
(暂且先别管为什么输入是同一个矩阵),这里暂且定为长度为L的句子,每个token的特征维度是768,那么输入就是(L, 768),每一行就是一个字,像这样: 乘以上面三种操作就得到了Q/K/V,(L,...,(L, 768)*(L, 768)的转置=(L,L),看图: 首先用Q的第一行,即“我”字的768特征和K中“我”字的768为特征点乘求和,得到输出(0,0)位置的数值,这个数值就代表了“我想吃酸菜鱼...(https://zhuanlan.zhihu.com/p/157490738) ③ 然后就是刚才的注意力权重和V矩阵乘了,如图: 注意力权重 x VALUE矩阵 = 最终结果 首先是“我”这个字对“我想吃酸菜鱼...V中“我想吃酸菜鱼”里面每个字的第二维特征进行相乘再求和,依次类推~最终也就得到了(L,768)的结果矩阵,和输入保持一致~ 整个过程在草稿纸上画一画简单的矩阵乘就出来了,一目了然~最后上代码: class...简单来说,Q来自于句A,K、V来自于句B即可~ 注意,K/V中,如果同时替换任意两个字的位置,对最终的结果是不会有影响的,至于为什么,可以自己在草稿纸上画一画矩阵乘;也就是说注意力机制是没有位置信息的,
多年之后,我才明白,当老师犯傻似地用中括号把一堆傻了吧叽的数括起来,并且不紧不慢地说:“这个东西叫做矩阵”的时候,我的数学生涯掀开了何等悲壮辛酸、惨绝人寰的一幕!...长期以来,我在阅读中一见矩阵,就如同阿Q见到了假洋鬼子,揉揉额角就绕道走。 事实上,我并不是特例。一般工科学生初学线性代数,通常都会感到困难。这种情形在国内外皆然。...而且,行列式的计算规则,看上去跟矩阵的任何计算规则都没有直观的联系,为什么又在很多方面决定了矩阵的性质?难道这一切仅是巧合? 矩阵为什么可以分块计算?...两个看上去完全没有什么关系的运算,为什么有着类似的性质?这仅仅是巧合吗? 为什么说\(P^{-1}AP\)得到的矩阵与A矩阵“相似”?这里的“相似”是什么意思? 特征值和特征向量的本质是什么?...比如,如果你通过一般的证明方法论证了矩阵分块运算确实可行,那么这并不能够让提问者的疑惑得到解决。他们真正的困惑是:矩阵分块运算为什么竟然是可行的?
1 问题 我们知道,在学习深度学习的过程中,搭建网络是我们必须要掌握的,在搭建网络的过程中,我们也遇到了很很多的问题,为什么要使用卷积层,卷积层的参数我们应该怎么去定义,以及为什么要去用池化,池化的参数又该怎么去定义...比如我们输入6x6的输入矩阵和3x3的卷积核进行计算后,我们得到的就是一个4x4的矩阵,这样就很明显我们得到的矩阵的特征信息减少了,如果我们需要去维持6x6的矩阵维度,我们就需要去在矩阵的最外层用0进行填充...,经过填充过后的矩阵后我们得到的就是一个和原矩阵维度相同的矩阵。...全连接层 全连接层基本上用来作为模型的最后一层,是将每个神经元与所用前后的神经元进行连接,得到图像的特征信息输出。...pytorch中全连接模版: nn.Linear(in_features,out_features) in_features: 输入维度 out_features: 输出维度 3 结语 在本次的博客中,我总结了在上述三层在
上图对应一个 3×23×2 矩阵 M。右侧我画了三个绿点,分别对应矩阵 M 的三行,两个粉点分别对应矩阵 M 的两列。如果对应矩阵 M 中的值非零,就在绿点和粉点间画一条线连接。 ?...对称矩阵对应对称图。 如果一个矩阵等于它的转置,即为对称矩阵。这种对称性常通过矩阵对角线映射得到。但现在可以从图中观察到对称性。...尤其对于任何矩阵 M 来说,下图直观地解释了,为什么 MM^⊤和 M^⊤M 始终对称! ? 若矩阵所有项都非零,则对应完全二分图。 如果一个矩阵的所有元素都不为零,那么它对应的图就没有缺失的连线。...N 分块矩阵对应独立的 N 个图。 具体来说,由直和得到的分块矩阵对应断开的图。将两个矩阵做直和运算得到更大的数组(与向量直和运算类似),即一个带有全零块的大型分块矩阵。...为什么会这么好?因为一个矩阵 M:X×Y→Z_2 相当于一个「关系」。「关系」是笛卡尔积 X×Y 的子集 R 的名称。
实际上通过卷积运算就可以得到输出信号。 2. 图像处理 输入一幅图像f(x,y),经过特定设计的卷积核g(x,y)进行卷积处理以后,输出图像将会得到模糊,边缘强化等各种效果。...有些文章只强调滑动叠加求和,而没有说函数的翻转,我觉得是不全面的;有的文章对“卷”的理解其实是“积”,我觉得是张冠李戴。 对卷积的意义的理解: 1....那为什么要进行“卷”?直接相乘不好吗?我的理解,进行“卷”(翻转)的目的其实是施加一种约束,它指定了在“积”的时候以什么为参照。...这也是为什么要将矩阵g进行翻转的原因。以上矩阵下标之所以那么写,并且进行了翻转,是为了让大家更清楚地看到跟卷积的关系。这样做的好处是便于推广,也便于理解其物理意义。...再深入思考一下,在算图像卷积的时候,我们是直接在原始图像矩阵中取了(u,v)处的矩阵,为什么要取这个位置的矩阵,本质上其实是为了满足以上的约束。
所以当我第一次研究这个问题时,我不明白为什么我们不单独建立所有非对角线的模型,例如使用样本成对相关的滚动窗口呢?你想有一个有效的相关矩阵,这意味着对称(很容易施加)和正负无限。...首先,为什么非负定属性很重要,其次,为什么它不容易施加。把非负定属性看作是多变量的,相当于单变量情况下对波动率的正向施加。你不会想让你的模型生成负的波动率吧?...我们(应该)仍然得到非负定矩阵 。 你用哪个向量 并不重要,因为它是 "平方 "的。...由于二次形式 ,并且因为 是相关矩阵,我们肯定会得到一个有效的协方差矩阵,即使我们使用恒定的相关矩阵,它也是时间变化的。...我认为,这是该模型被接受和流行的主要原因。 现在我们进行估计。 使用R进行估算 让我们得到一些数据。我们提取三个ETF的过去几年的数据。
,网易当时为什么会在国内这么多的音乐软件里面脱颖而出,其实就是加进来的社交属性。...消元法将方程组中的一方程的未知数用含有另一未知数的代数式表示,并将其代入到另一方程中,这就消去了一未知数,得到一解;或将方程组中的一方程倍乘某个常数加到另外一方程中去,也可达到消去一未知数的目的。...对于满秩矩阵A来说,通过左乘一个消元矩阵,可以得到一个上三角矩阵U。L实际上就是消元矩阵的逆,容易知道二阶矩阵的逆。...(2)分解按步进行,前边分解得到的信息为后边所用。 (3)[A]矩阵的存储空间可利用,节省存储。 所谓的节省空间是:L和U中的三角零元素都不必存储,这样只用一个n阶方阵就可以把L和U存储起来。...至于为什么这么贵,里面说是有这些屌屌的技术 也有眼动技术的存在 这个我觉得很有趣,如何配眼镜的过程 不过我的度数都涨了50,妈的,成年人都这样了。。。
除此之外,可能还会有对称的矩阵变形; BLAS 3级,主要是矩阵和矩阵的计算,最典型的是A矩阵*B矩阵,得到一个C矩阵。由矩阵的宽、高,得到一个m*n的C矩阵。...为什么BLAS是一个非常重要的库或者接口,是因为它是很多科学计算的核心之一。每年做超级计算机的排行榜,都要做LINPACK测试,该测试很多部分就是做BLAS 3级矩阵和矩阵的计算。...我把他的内容基本上是抠出来了,一步步带着大家过一下,如果我们从最简单的矩阵乘法实现,到一个高性能的矩阵乘法实现,大概是几步,怎么来的?或者是为什么优化,每一步能获得多少性能收益。...我想只要学过《线性代数》之类的,这种矩阵乘法,是一个非常简单的问题,如果转换成C代码来做的话,就是一个三重循环,我在这张图里列出了一个【i j k】的三重循环,这里面矩阵乘法的代码就已经是,它实现的功能就是矩阵...随着规模变大,矩阵的性能在下降是为什么呢?因为在实现的过程中,没有考虑到cache的原因,当矩阵比较小的时候,速度还能快一些,当矩阵大了的时候,一定会跌下去,所以图里就有一个下滑的过程。
我接下来分别解释一下 Batch Normalization 是怎样选择的,以及为什么这样选择。 ? 基于之前的想法,Batch Normalization 的具体的实现如下所述。...我想特别说明一下为什么把 Batch Normalization 放在线性单元的后面而不是放在线性单元的前面,这其实有违于其对数据进行白化操作的动机。...受启发于重参数方法以及正交变换是可微的这个结论,我们的方法是设计一个代理参数矩阵,对其进行正交变换得到正交化的权重矩阵,且优化是基于代理参数矩阵。 ?...为了保证稳定性,期望使得变换后的矩阵正交权重矩阵和代理参数矩阵差异最小。对上图问题进行求解可以得到下图结果。 ?...我的这篇论文说明了两件事,一是在前向神经网络里面可以确切的学习到正交过滤器,二是这种学习到的正交过滤器可以提升深度神经网络的效果。我觉得将这种方法使用到 GAN 训练等其他方面也可能得到好的效果。
从 到 ,虽然同样是张成二维空间,但是它们各自对空间的描述方式的不同的,对此我想给出一种理解方阵的思路: 方阵的每一列都代表了单位矩阵中对应列的向量在单位矩阵张成的空间中重新指向的位置。...对于这种增加了可描述分量但不增加张成空间维数的空间变换,我称之为“名义上的升维"。...还有一个问题:为什么矩阵是矩阵,向量组是向量组? 其实,两者是本质是相似的。但我通常更喜欢这么看:向量组表示多个向量张成的空间,而矩阵表示将原空间的基向量变换至新的位置得到新的基向量。...那我们可以试着换一个思路,既然矩阵每一列都是新的基向量的指向,那为什么我们不把它拆分开,再运用我们上一节学到的矩阵向量乘法,得到它在新空间中的位置,那样我们不就得到了两次变换后基向量的最终位置了吗?...也就是说,当两个矩阵相乘为0,则两个矩阵的总降维数大于等于向量/空间的维度。 为什么矩阵乘法不满足消去率? 这个问题可看作是上一个问题的推广,翻译成符号形式就是如果 ,为什么没有 ?
领取专属 10元无门槛券
手把手带您无忧上云