Вызывание модели Keras AttributeError: у объекта 'NoneType' нет атрибута '_inbound_nodes' - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь создать сеть 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'. При поиске решения я обнаружил, что эта ошибка возникает главным образом, когда модель содержит операции, не связанные с кераслоями. Вместо этого предлагается использовать лямбда-слои keras для переноса операций. Поэтому я попытался заменить строки в моем коде, которые могут вызвать проблемы middle_old = tf.random.normal(batch_shape) и back_old = tf.random.normal(batch_shape), с их аналогами keras lambda. Теперь есть еще одна проблема ValueError: Layer outer_1 was called with an input that isn't a symbolic tensor., предполагающая, что моя предыдущая попытка не использовать лямбда-слои была правильной, что имеет смысл, поскольку все ..._ старые значения используются в качестве тензорных выходов слоев в моей модели. Так что теперь я понятия не имею, почему AttributeError выбрасывается в первую очередь; кроме этих двух строк, в моей модели нет операций не-keras.

...