tensorflow CNN具有复杂的功能和标签?

时间:2018-02-23 11:18:37

标签: tensorflow complex-numbers

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

以下是链接:https://arxiv.org/pdf/1802.04479.pdf

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

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

当构建具有实数的真实无意义模型并输出所有正确的作品时:

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的初始化器

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

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

感谢您的帮助!

0 个答案:

没有答案