精华内容
下载资源
问答
  • 矩阵乘以其矩阵转置

    万次阅读 多人点赞 2018-08-27 20:47:11
    在推导公式和计算中,常常能碰到矩阵乘以其矩阵转置,在此做个总结。 1.假设矩阵A是一个 m∗nm∗nm*n 矩阵,那么 A∗ATA∗ATA*A^T 得到一个 m∗mm∗mm*m 矩阵,AT∗AAT∗AA^T*A 得到一个 n∗nn∗nn*n 的矩阵,这样...

    在推导公式和计算中,常常能碰到矩阵乘以其矩阵转置,在此做个总结。

    1.假设矩阵A是一个 mnm*n 矩阵,那么
    AATA*A^T 得到一个 mmm*m 矩阵,ATAA^T*A 得到一个 nnn*n 的矩阵,这样我们就能得到一个方矩阵。
    看一个例子:

    Xθ=HX \theta =H 求解θ\theta.
    XTXθ=XTHX^TX\theta =X^TH 这个矩阵X我们不能确定是否是方矩阵,所以我们在其左侧同时乘以X矩阵的转置,这样 就在θ\theta 的左侧得到一个方矩阵。
    (XTX)1XTXθ=(XTX)1XTH(X^TX)^{-1}X^TX\theta =(X^TX)^{-1}X^TH 再在等式的两边乘以XTXX^TX的逆,就变成了单位矩阵IIθ\theta相乘,这样我们就得到了θ\theta的解:
    θ=(XTX)1XTH\theta=(X^TX)^{-1}X^TH

    2.对称矩阵
    如果方阵A满足AT=AA^T=A,就称A为对称矩阵。
    假设A=XTXA=X^TX,A的转置AT=(XTX)T=XTX=AA^T=(X^TX)^T=X^TX=A,所以我们可以说(XTX)(X^TX)是一个对称矩阵。对称矩阵的特征向量两两正交。 1

    3.奇异值分解(SVD)
    我们可以用与A相关的特征分解来解释A的奇异值分解。A的左奇异向量是AATAA^T的特征向量,A的右奇异向量是ATAA^TA的特征向量,A的非零奇异值是ATAA^TA特征值的平方根,同时也是AATAA^T特征值的平方根。 2

    Reference:


    1. https://blog.csdn.net/BingeCuiLab/article/details/47209037 ↩︎

    2. Goodfellow I, Bengio Y, Courville A, et al. Deep learning[M]. Cambridge: MIT press, 2016. ↩︎

    展开全文
  • 矩阵乘以它的转置

    万次阅读 2017-11-12 18:48:20
    矩阵乘以它的转置

    矩阵乘以它的转置

    明显不等于啦,1*2的矩阵转置矩阵为2*1,那么1*2的矩阵乘以2*1的转置矩阵得到一个1*1的矩阵,而2*1的转置矩阵乘以1*2的矩阵得到一个2*2的矩阵
    这个得出的矩阵是对称矩阵。
    可以在解二次曲线方程时很有用。
    主要是在矩阵论和线性代数里,有专门的篇幅讲解二次型的定义与应用

    展开全文
  • 二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵。 即: (n * c1) x (m * c1 * c2) x (n * c2) 得 n * m 实现主要参考的是tensorflow的matmul运算对于高维矩阵的乘法支持batch的操作,只要保证高维矩阵最后两维...

    最近看论文时看到了一个让我费解的操作。
    二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵。
    即:

    (n * c1) x (m * c1 * c2) x (n * c2) 得 n * m

    实现主要参考的是tensorflow的matmul运算对于高维矩阵的乘法支持batch的操作,只要保证高维矩阵最后两维之前的维度一样就可以。直接上例子比较直观。

    import tensorflow as tf
    g = tf.Graph()
    with g.as_default():
        x = tf.ones([2, 3, 1], dtype=tf.float32)
        y = tf.ones([2, 1, 4], dtype=tf.float32)
        z = tf.matmul(x, y)
    
    p <span class="token operator">=</span> tf<span class="token punctuation">.</span>ones<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dtype<span class="token operator">=</span>tf<span class="token punctuation">.</span>float32<span class="token punctuation">)</span>
    q <span class="token operator">=</span> tf<span class="token punctuation">.</span>ones<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dtype<span class="token operator">=</span>tf<span class="token punctuation">.</span>float32<span class="token punctuation">)</span>
    r <span class="token operator">=</span> tf<span class="token punctuation">.</span>matmul<span class="token punctuation">(</span>p<span class="token punctuation">,</span> q<span class="token punctuation">)</span>
    

    with tf.compat.v1.Session(graph=g) as sess:
    print(sess.run(z).shape) # (2, 3, 4)
    print(sess.run(r).shape) # (2, 3, 1, 6)

    比较让我震惊的是在tensorflow2.0版本可以按下面计算,当然这样计算比较符合理想化结果,例子中就是300个二维矩阵分别跟一个二维矩阵去乘。
    numpy和torch也是支持这样计算的,但是numpy的结果的维度有所不同。

    import tensorflow as tf
    g = tf.Graph()
    with g.as_default():
        a = tf.ones([2, 3], dtype=tf.float32)
        b = tf.ones([300, 3, 6], dtype=tf.float32)
        d = tf.matmul(a, b)  # (300,2,6),这一步2.0版本能够运行令人费解
    
    d <span class="token operator">=</span> tf<span class="token punctuation">.</span>transpose<span class="token punctuation">(</span>d<span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span>  <span class="token comment"># d:(2,300,6)</span>
    c <span class="token operator">=</span> tf<span class="token punctuation">.</span>ones<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> dtype<span class="token operator">=</span>tf<span class="token punctuation">.</span>float32<span class="token punctuation">)</span>  <span class="token comment"># 原本c应该是(2,6)</span>
    
    e <span class="token operator">=</span> tf<span class="token punctuation">.</span>matmul<span class="token punctuation">(</span>d<span class="token punctuation">,</span> c<span class="token punctuation">)</span>  <span class="token comment"># e:(2,300,1)</span>
    e <span class="token operator">=</span> tf<span class="token punctuation">.</span>reshape<span class="token punctuation">(</span>e<span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">300</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
    

    with tf.compat.v1.Session(graph=g) as sess:
    print(sess.run(e).shape)
    # print(sess.run(d).shape)

    tensorflow1.0版本不可以按上述计算,在第一个matmul的时候必须要将b reshape一下,具体计算可以参考:
    https://blog.csdn.net/weixin_41024483/article/details/88536662

    展开全文
  • 矩阵乘以其矩阵转置求导-数学

    千次阅读 2020-02-29 23:20:51
    20210703 矩阵论 https://zhuanlan.zhihu.com/p/288541909?utm_source=wechat_session 矩阵运算法则 20210529 https://blog.csdn.net/Lisa_Ren_123/article/details/81983785 矩阵转置求导 ...

    20210703

    在这里插入图片描述
    矩阵论

    https://zhuanlan.zhihu.com/p/288541909?utm_source=wechat_session
    矩阵运算法则

    20210529

    https://blog.csdn.net/Lisa_Ren_123/article/details/81983785
    矩阵转置求导

    https://jingyan.baidu.com/article/da1091fb69f0b7027849d612.html

    在这里插入图片描述

    展开全文
  • #include &lt;iostream&gt; using namespace std; int **fun(int init,int rows, int column){ int **A; int **_A; int **result; A = (int**)malloc(rows*sizeof(int*)); for (int i = 0;......
  • 矩阵A乘以B

    千次阅读 2017-11-15 11:41:17
    7-5 矩阵A乘以B 给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的...对于每个矩阵,首先在行中给出其行数R和列C,随后R行,每行给出C整数,以1空格分隔,且行首尾没有多余...
  • 比如先随机创建一个3x3的矩阵: import numpy as np A=np.arange(1,10).reshape(3,3) print(A) 假设要实现每一行分布乘以1,2,3 实现过程如下: a=np.array([1,2,3]) # 先创建数组 F=np.empty(shape=[0,len(a)] #...
  • 平时在学习使用numpy库时,会遇到一种情况,假如说我想计算一个列向量乘以一个行向量的结果,我们的思路大概是这样: 首先创建一个数组,里面包含3个数字,查看一下数据和...本来以为是一个3*3的矩阵,结果是一个数...
  • 矩阵A乘以B - vector+矩阵乘法

    千次阅读 2018-03-10 19:39:40
    题目描述给定两个矩阵A和B,...对于每个矩阵,首先在行中给出其行数R和列C,随后R行,每行给出C整数,以1空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过10...
  • Numpy 二维矩阵 乘以 三维矩阵 (Numpy, 2D matrix multiplies 3D matrix) Learn to apply the broadcast rule in Numpy. ======== goal: element-wise matrix multiplication arguments: A: 2×3×4 B: 2×4 C = A*B...
  • 假设变量为a,使用以下语句进行判断: 参考链接:MATLAB中判断一个矩阵或者数字是否是复数 if ~isreal(a)
  • 问题真的研究了好久,这小技巧,很实用。 用到的函数主要有 tf.transpose(a, perm=None, name=’transpose’) 调换tensor的维度顺序  按照列表perm的维度排列调换tensor顺序,  如为定义,则perm为(n...
  • L1-048. 矩阵A乘以B

    千次阅读 2018-04-03 12:36:46
    L1-048. 矩阵A乘以B 给定两个矩阵A和B,要求你计算它们的乘积矩阵...对于每个矩阵,首先在行中给出其行数R和列C,随后R行,每行给出C整数,以1空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都...
  • 矩阵A乘以B (15 分)

    千次阅读 2019-02-03 21:41:40
    矩阵A乘以B (15 分) 给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模...对于每个矩阵,首先在行中给出其行数R和列C,随后R行,每行给出C整数,以1空格分隔,且行首尾没有多余...
  • 这是从网上看到的PCA算法的步骤: 第步,分别求每列的平均值,然后对于所有的样例,都减去对应的均值。 第二步,求特征协方差矩阵。 第三步,求协方差的特征值…显示全部 关注者 1,218 被浏览 78,113 关注...
  • 原题链接 L1-048 矩阵A乘以B (15 分) 给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。...对于每个矩阵,首先在行中给出其行数R和列C,随后R...
  • L1-048. 矩阵A乘以B(矩阵乘法)

    千次阅读 2018-02-28 20:40:03
    给定两个矩阵A和B,要求你计算...对于每个矩阵,首先在行中给出其行数R和列C,随后R行,每行给出C整数,以1空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超...
  • 以A(T)表示A的转置 因为只有方阵才可能具有特征值,...对于任意矩阵A(甚至是非方阵),A(T)A(这时候就变成方阵了,可以计算特征值了)的特征值就称为A的奇异值。奇异值有特性,就是A(T)A和AA(T)特征值相同。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,550
精华内容 22,620
关键字:

一个矩阵乘以一个数怎么算