Это проблема с кодом Keras, использующим Tensorflow.
У меня есть простая сеть, где мне нужно сделать поэлементное умножение сразу после ввода.Эта часть кода показана ниже.Я всегда получаю сообщение об ошибке:
*** AttributeError: у объекта 'NoneType' нет атрибута '_inbound_nodes'
Мой код:
input_img = Input(shape=(256, 256, 2, 1, 2))
masked = Lambda(lambda x: tf.multiply(x[0], x[1]))([input_img[:,:,:,:,:,0], input_img[:,:,:,:,:,1]])
conv1 = Conv3D(1, (5, 5, 2), padding='same', activation=activation, kernel_regularizer=regularizers.l2(1e-9))(masked)
net_head = Model(inputs=input_img, outputs=conv1)
Я уже использовал лямбда-слойЯ так запутался, что вызвало эту проблему.Размерность входных данных хорошо соответствует модели, так что это не должно быть проблемой.
Кто-нибудь имеет подсказку?
Это поэлементное умножение фактически маскирует некоторые пиксели в нули.В приведенном выше коде маска объединяется в дополнительном последнем измерении с входной переменной.В качестве альтернативы я также попытался использовать переменную, исключающую маску, например, input_mask, вместо включения ее в качестве дополнительного последнего измерения в input_image, чтобы выполнить умножение, которое не работало ни с той же информацией об ошибке.
Причина, по которой я должен выполнить процесс маскирования входных данных после входного слоя сети, а не перед входным, состоит в том, что мне нужны полные данные (включая маскировку) входного изображения при расчете потерьв случайном порядке