Keras模型抛出AttributeError:'NoneType'对象没有属性'_inbound_nodes'

时间:2020-03-25 13:34:15

标签: python tensorflow keras attributeerror

我正在尝试基于部分连接的层创建一个keras网络。我使用的是我编写的两个自定义图层,即Outer()和Inner()。

def pcsm(depth=5,batch_shape=(5,128,128)):
    inputs = Input(batch_shape=batch_shape, dtype='float', name='inputs')

    front_L = Outer()
    middle_L = Inner()
    back_L = Outer()
    front_old = inputs
    # middle_old = Lambda(lambda: tf.random.normal(batch_shape)
    # back_old = Lambda(lambda: tf.random.normal(batch_shape)
    middle_old = tf.random.normal(batch_shape)
    back_old = tf.random.normal(batch_shape)

    for _ in range(0,depth):
        front = front_L([front_old,middle_old])
        middle = middle_L([front_old,middle_old,back_old])
        back = back_L([middle_old,back_old])
        front_old=front
        middle_old = middle
        back_old = back


    pcsm = Model(input=inputs,output=back)
    pcsm.compile(optimizer=Adam(lr=1e-4), loss='binary_crossentropy')

    return pcsm

尝试创建模型时,它将引发AttributeError: 'NoneType' object has no attribute '_inbound_nodes'。在寻找解决方案时,我发现此错误主要是在模型包含非keraslayer操作时发生的。建议改用keras lambda层包装操作。因此,我尝试用其对应的keras lambda替换掉代码中可能导致问题middle_old = tf.random.normal(batch_shape)back_old = tf.random.normal(batch_shape)的行。现在又有一个问题ValueError: Layer outer_1 was called with an input that isn't a symbolic tensor.,这表明我以前不使用lambda图层的尝试是正确的,这是有道理的,因为所有..._ old值都用作模型中图层的张量输出。 所以现在我不知道为什么首先抛出AttributeError了。除了这两行以外,我的模型中没有其他非keras操作。

0 个答案:

没有答案