gpt4 book ai didi

python - 如何将张量乘以矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:01 25 4
gpt4 key购买 nike

所以我有形状为 [32,60,60] 的数组 A 和形状为 [32,60] 的数组 B ]。第一维是batch size,所以第一维是独立的。我想要做的是一个简单的向量乘法矩阵。因此,对于 A 中的每个样本,我想将形状为 [60,60] 的矩阵与形状为 [60] 的向量相乘。对 A*B 批处理进行乘法应该得到一个形状为 [32,60] 的数组。

这应该很简单,但我做错了什么:

>>> v = np.matmul(A,B)
ValueError: shapes (32,60,60) and (32,60) not aligned: 60 (dim 2) != 32 (dim 0)

这是针对 tensorflow 的,但如果我可以转换符号,一个 numpy 的答案可能就足够了。

最佳答案

看来你正在尝试 sum-reduce来自两个输入数组的最后一个轴 matrix-multiplication .所以,用np.einsum , 这将是 -

np.einsum('ijk,ik->ij',A,B)

对于 tensorflow , 我们可以使用 tf.einsum .


np.matmul , 我们需要扩展 B3D通过在最后一个轴上引入一个新轴。因此,使用 np.matmul将获得 B's 的第二个轴加长版sum-reduced针对 A 的第三个.结果将是 3D .因此,通过切片或 np.squeeze 将最后一个单例轴挤出。 .因此,实现将是 -

np.matmul(A,B[...,None])[...,0]

我们已经有了一个现有的 tf.matmul 在那里发挥作用。

关于python - 如何将张量乘以矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226037/

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