我最近发现了一篇论文,他们使用带有复杂2D特征图的CNN作为输入 . 但是,网络也输出复杂的输出向量 . 他们使用了具有张量流后端的Keras .

这是链接:https://arxiv.org/pdf/1802.04479.pdf

我问自己是否有可能构建复杂的深度神经网络,如具有张量流的CNN . 据我所知,这是不可能的 . 我错过了什么吗?

还有其他相关问题解决了相同的问题,没有答案:Complex convolution in tensorflow

当 Build 一个真实数字的真实无意义模型并输出所有正确的工作:

import tensorflow as tf
from numpy import random, empty

n = 10 
feature_vec_real = random.rand(1,n)
X_real = tf.placeholder(tf.float64,feature_vec_real.shape)

def model(x):    
    out = tf.layers.dense(
            inputs=x,
            units=2
            )    
    return out

model_output = model(X_real)

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

output = sess.run(model_output,feed_dict={X_real:feature_vec_real})

但在使用复杂输入时:

import tensorflow as tf
from numpy import random, empty

n = 10 
feature_vec_complex = empty(shape=(1,n),dtype=complex)
feature_vec_complex.real = random.rand(1,n)
feature_vec_complex.imag = random.rand(1,n)

X_complex = tf.placeholder(tf.complex128,feature_vec_complex.shape)

def complex_model(x):

    out = tf.layers.dense(
            inputs=x,
            units=2
            )    
    return out

model_output = complex_model(X_complex)

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

output = sess.run(model_output,feed_dict={X_complex:feature_vec_complex})

我收到以下错误:ValueError:需要变量dense_7 / kernel的初始化程序

那么,当有复杂的输入时,初始化密集内核权重的正确方法是什么?

我知道有可能将复数作为网络中的两个不同层处理 . 但这不是我想要的 .

谢谢你的帮助!