我最近发现了一篇论文,他们使用带有复杂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的初始化器
那么在有复杂输入时初始化密集内核权重的正确方法是什么?
我知道有可能将复数作为网络中的两个不同层处理。但这不是我想要的。
感谢您的帮助!