问题描述
我正在建立一个模型,在其中进行类似下面的虚拟模型中的操作。也就是说,我想将层的输出递归地输入到其输入中。在下面的虚拟模型中可以正常工作。但是,当我在真实模型中执行此操作时,我断开了 Graph的连接:无法在层“ fancy_layer” 错误处获得张量z的值。我试图在我的真实模型中剥离 fancy_layer 来尝试找出问题所在,但错误仍然存在。我更加困惑,因为以下示例中的Feeding_output = False
在我的真实模型中可以很好地工作。因此,如果在不反馈 fancy_layer 的输出时一切都很好,为什么在反馈它们时却抱怨该图已断开?任何帮助将不胜感激。
import tensorflow as tf
from tensorflow.keras import Model
from tensorflow.keras.layers import Dense,Concatenate,Input,Layer
class fancy_layer(Layer):
def build(self,input_shape):
self.dense = Dense(1)
super().build(input_shape)
def call(self,inputs,**kwargs):
h = Concatenate()(inputs)
return self.dense(h)
i1 = Input(shape=(2,1))
i2 = Input(shape=(2,1))
i3 = Input(shape=(2,1))
s = fancy_layer()
output = []
h = s([i1,i2])
output.append(h)
Feeding_output = True
if Feeding_output:
# This works in this dummy model,but not in my real model
z = Concatenate(axis=1)([i1[:,:1],h[:,:1]])
else:
# This works here and in my model
z = Concatenate(axis=1)([i1[:,i3[:,:1]])
h = s([z,i2])
output.append(h)
output = Concatenate(axis=1)(output)
m = Model(inputs=[i1,i2,i3],outputs=output)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)