首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    NumPy中einsum的基本介绍

    对于两个二维数组A和B,矩阵乘法操作可以用np.einsum(‘ij,jk->ik’, A, B)完成。 这个字符串是什么意思?想象’ij,jk->ik’在箭头->处分成两部分。...下图显示了如果我们不对j轴进行求和,而是通过写np.einsum(‘ij,jk->ijk’, A, B)将其包含在输出中,我们会得到什么。右边代表j轴已经求和: ?...注意,由于np.einsum(‘ij,jk->ik’, A, B)函数不构造3维数组然后求和,它只是将总和累加到2维数组中。 一些简单的操作 这就是我们开始使用einsum时需要知道的全部内容。...这提供了一种变量的方式标记我们不大感兴趣的轴,例如np.einsum(‘…ij,ji->…’, a, b),仅将a的最后两个轴与2维数组b相乘。 注意事项 本节说一些使用该函数时要注意的东西。...文档重点强调了np.einsum(‘ji’, M)是一种转换2维数组的方法。

    13K30

    高效处理多维数组:einsum()函数从入门到精通

    在NumPy中(后文将讨论其他框架如PyTorch、TensorFlow等),np.einsum()AI写代码1函数允许直接应用这种表示法进行数组操作。...如果我们想将相同的函数应用于单头注意力或单个批次,可以使用省略号运算符: S=np.einsum("...di,...dj->...ij", Q, K)AI写代码1这种表示方式不关心头和批次的具体数量,...以下示例说明这一点: a=np.empty((10,20)) # 因为索引顺序为ba,形状从(10,20)变为(20,10) np.einsum("ba",a).shape # (20,...10)AI写代码12345虽然在简单情况下这种表示方式较为直观,但在处理多输入操作时可能导致混淆: b=np.empty((20,30)) # 矩阵乘法:np.einsum("bc,cd",a,b)....np.einsum("bc,ca",a,b).shape # (30, 10)AI写代码123456789除混淆风险外,隐式语法在功能上也存在局限。

    69620
    领券