Я бы хотел обучить автоэнкодер, используя только указанные c ЧАСТИ слоя (слой с именем FEATURES в примере с автоэнкодером внизу этого вопроса).
В моем случае изображения NOK для новинки очень редки, но необходимы для обучения. Цель состоит в том, чтобы генерировать изображения NOK из изображений OK (все примеры, которые я нашел, делали наоборот). Идея состоит в том, чтобы заставить изучение структуры OK-изображения в элементах [0: nx] и изучение структуры NOK-изображения (возможно, из похожего продукта) в элементах [nx: n], чтобы использовать функции NOK в качестве параметров для генерации NOK. -картины из ОК-картинок.
Мне пришло в голову две идеи использования неслучайного отсева
(1)
keras.layers.Dropout(rate, noise_shape=None, seed=None)
имеет аргумент noise_shape, но я не уверен, поможет ли он мне, поскольку он описывает только форму , Было бы идеально иметь возможность предоставить маску, состоящую из {0,1}, для применения на слое, чтобы включить / выключить указанные c узлы
(2)
, создающие пользовательский слой (с именем MaskLayer (ниже), который выполняет маскирование указанных c узлов слоя, например, как кортеж {0,1}.
Я прочитал this , но я не думаю, что это применимо ( создать слой, объединяя слои, которые могут быть заморожены отдельно).
def autoEncGenerate0( imgSizeX=28, imgSizeY=28, imgDepth=1): ####:
''' keras blog autoencoder'''
input_img = Input(shape=(imgSizeX, imgSizeY, imgDepth))
x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((4, 4), padding='same')(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
encoded0 = MaxPooling2D((8, 8), padding='same', name="FEATURES")(x)
encoded1 = MaskLayer(mask)(encoded0) # TO BE DONE (B2) masking layer parts
x = Conv2D(32, (3, 3), activation='relu', padding='same')(encoded1)
x = UpSampling2D((8, 8))(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((4, 4))(x)
decoded = Conv2D( imgDepth, (3, 3), activation='sigmoid', padding='same')(x)
autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
return( autoencoder)
Спасибо за подсказки.