TF Grahp在将图层的输出递归馈入其输入时断开连接

问题描述

我正在建立一个模型,在其中进行类似下面的虚拟模型中的操作。也就是说,我想将层的输出递归地输入到其输入中。在下面的虚拟模型中可以正常工作。但是,当我在真实模型中执行此操作时,我断开了 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 (将#修改为@)