胡言乱语和点积的数字矢量组合

时间:2019-10-23 07:58:40

标签: python numpy numpy-broadcasting

问题:

我有两组数据,分别为形状为 kxnxm kxmxp 的A和B,分别为 k m < / strong>和 p 可能很大,因此,我真的想对它们上的所有进程进行矢量化处理。

我想在这两个数据集之间形成点积,以使A中的每个 kth 元素与B中的每个 kth 元素相加(以形成< strong> kxnxp 矩阵,在第m轴上点)。乍一看,在我看来,它就像是hadamard产品和点产品的组合(因此有标题),但我想不出一种方法来获得理想的结果。

作为参考,由于无法使向量化正常工作,因此我目前正在这样运行它:

        for b, w in zip(biasList, weightsList):
            z = np.asarray([np.dot(weightMatrix,activation) for weightMatrix, activation in zip(w,activation)])

显然没有进行向量化,因此性能也很差。

使用numpy点或numpy einsum(如此处显示:vectorized/broadcasted Dot product of numpy arrays with different dimensions)并不能达到预期的效果,因为它们似乎只能带来形状为 kxnxm 的矩阵kxmxp ,通过对一对索引求和,得出大小为 kxnxkxp 的矩阵,或者对两个索引求和,得出 nxp

是否有一种有效的矢量化方法?

0 个答案:

没有答案