使用einsum-> ValueError在傅立叶域中实现conv2d:爱因斯坦总和下标字符串包含太多操作数0下标

时间:2019-03-31 19:22:43

标签: python numpy tensorflow

根据卷积定理,在傅立叶域中,卷积运算变为点乘- 这里我有'fft_x'的形状(批量大小,高度,宽度,in_channels),它是输入数据的英尺 以及类似的“ fft_kernel”形状(高度,宽度,in_channels,out_channels),在填充到图像大小后为内核的fft。为了有效地逐点乘法,我以以下方式使用einsum-

require_once("../../../../wp-load.php");

$operatorOne = $_POST['operatorOne'];
print_r($operatorOne);



 $title = 'New Build';
 $to = 'receivers email here';
 $subject = 'New Quote'; 
 $message  = $operatorOne;

  $mail = wp_mail( $to, $subject, $message, $headers );

它给出以下输出-

...
    print(fft_x)
    print(fft_kernel)
    output = 0
    n=int(self.no_of_kernels/2)+1      # n = out_channels here
    for i in range(n):
        output += np.einsum('ijkl,jkl->ijk', fft_x, fft_kernel[i])
    return output 
...

任何人都可以解释为什么会出现此错误吗?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我用tf.einsum代替了np.einsum,并且有效。