我需要计算两个矩阵的点积。 tensordot可能会胜任,但是我正在努力寻找确切的解决方案。
简单的选择
res = np.dot(x, fullkernel[:, :-1].transpose())
工作正常,其中x的形状为(9999,),全内核的形状为(980,10000),res的形状为(1,980)。
现在我需要在2维上做类似的事情。因此,我的x现在具有形状(9999,2),全内核(2,980,10000)。
从字面上看,我希望我的结果“ res”为2维,其中每一个是x的一列和全维的一维的点积。
答案 0 :(得分:0)
您可以这样做:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setExtendedState(JFrame.MAXIMIZED_BOTH);
f.addComponentListener(new ComponentAdapter()
{
@Override
public void componentResized(ComponentEvent e)
{
System.out.println(e.getComponent().getSize());
}
});
f.setVisible(true);
如果要在中间添加其他单例尺寸,请执行以下操作:
res = np.einsum('ki,ijk->ij', x, fullkernel[:, :, :-1])
print(res.shape)
# (2, 980)
使用res = np.expand_dims(res, 1)
/ @
的等效解决方案是:
np.matmul