我有以下部分代码-
...
model.add(Generic_act_func())
print('layer 1 output')
print(model.layers[1].output) #Here layers[1] is Generic_act_func() layer specified above
model.add(Lambda(lambda x: tf.spectral.irfft2d(x)))
...
运行时分别产生以下输出和错误-
输出-
layer 1 output
Tensor("generic_act_func_1/Complex:0", shape=(?, 28, 28, 9), dtype=complex64)
错误-
ValueError: Tensor conversion requested dtype complex64 for Tensor with dtype float32: 'Tensor("lambda_1/Placeholder:0", shape=(?, 28, 28, 9), dtype=float32)'
在线
model.add(Lambda(lambda x: tf.spectral.irfft2d(x)))
tf.spectral.irfft2d()需要一个complex64输入,先前的层(即Generic_act_func()层)已经在生成(由第1层输出打印),因此我无法弄清楚为什么会出现此错误。 预先感谢您为解决错误提供的帮助。
编辑- 将上一层的输出传递到Lambda层会出错吗?就像我在Lambda函数中使用变量'x'一样,假定先前的图层输出将在此变量中捕获。这是添加Lambda层的正确方法吗? (我是Keras的初学者,非常感谢您的帮助)