gpt4 book ai didi

python - 如何广播和向量和张量?

转载 作者:行者123 更新时间:2023-12-04 09:15:50 24 4
gpt4 key购买 nike

假设我们有:

  • 行向量 V形状(F,1) , 和
  • 4 维张量 T形状(N, F, X, Y) .

  • 作为一个具体的例子,让 N, F, X, Y = 2, 3, 2, 2 .让 V = [v0, v1,v2] .
    然后,我想按元素添加 v0到内部 2x2 矩阵 T[0,0] , v1T[0,1] , 和 v2T[0,2] .同样,我想添加 v0T[1,0] , v1T[1,1] , 和 v2T[1,2] .
    因此,在“最内层”级别,2x2 矩阵和标量之间的相加,例如 T[0,0] + v0 , 使用广播来逐元素添加 v0 .然后我要做的是将它更普遍地应用于每个内部 2x2。
    我试过使用 np.einsum()np.tensordot() ,但我无法弄清楚每个函数在更基本的层面上实际上在做什么,所以我想要求一个关于如何完成这个计算的更一步一步的解释。
    谢谢

    最佳答案

    乘法 :您可以简单地将您的文本翻译成索引名称 eisnum它将负责广播:

    TV = np.einsum('ijkl,j->ijkl',T,V)
    添加 :只需将尺寸添加到您的 V使用 None匹配 T 的最后两个维度广播将负责其余的工作:
    TV = T + V[:,None,None]
    示例输入/输出显示您的输出所需的添加行为:
    :
    [[[[7 4]
    [5 9]]

    [[0 3]
    [2 6]]

    [[7 6]
    [1 1]]]


    [[[8 0]
    [8 7]]

    [[2 6]
    [9 2]]

    [[8 6]
    [4 9]]]]
    五:
    [0 1 2]
    电视:
    [[[[ 7  4]
    [ 5 9]]

    [[ 1 4]
    [ 3 7]]

    [[ 9 8]
    [ 3 3]]]


    [[[ 8 0]
    [ 8 7]]

    [[ 3 7]
    [10 3]]

    [[10 8]
    [ 6 11]]]]

    关于python - 如何广播和向量和张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63222872/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com