我想运行一个简单的复数卷积:
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)
因为卷积本质上就是矩阵乘法,所以我认为没有任何理由卷积不会起作用。
谢谢。