张量流中的复杂卷积

2024-05-18

我正在尝试运行一个简单的卷积,但包含复数:

r = np.random.random([1,10,10,10])
i = np.random.random([1,10,10,10])
x = tf.complex(r,i)

conv_layer = tf.layers.conv2d(
            inputs=x,
            filters=10,
            kernel_size=[3,3],
            kernel_initializer=utils.truncated_normal_complex(),
            activation=tf.nn.sigmoid)

但是我收到这个错误:

TypeError: Value passed to parameter 'input' has DataType complex128 not in list of allowed values: float16, float32

有谁知道如何在Tensorflow中实现这样的卷积?

我需要实现自定义操作,还是有更好的选择?

令人沮丧的是,复杂的矩阵乘法是可能的,例如以下运行良好:

def r():
    return np.random.random([10,10])
A = tf.complex(r(),r())
B = tf.complex(r(),r())
C = tf.multiply(A,B)
sess.run(C)

因此,我认为,没有真正的理由卷积不应该起作用(因为卷积本质上只是矩阵乘法)。

Thanks


可能为时已晚,但对于任何仍然感兴趣的人来说:将卷积应用于复杂的值数据并不像常用的数据类型(例如 float32)那么简单。有研究为此目的调查了不同的网络结构(例如,请参阅此link https://openreview.net/forum?id=SkeRTsAcYm对于“深度复杂的 U-Net”)。这些结构的实现在pytorch https://github.com/litcoderr/ComplexCNN and 张量流 https://github.com/JesperDramsch/keras-complex.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

张量流中的复杂卷积 的相关文章

随机推荐