Как извлечь вложения из дискриминатора InfoGAN для поиска сходства?
Я пытаюсь принять Керас InfoGAN
Реализация, чтобы по существу извлечь значения передачи (или вложения) для изображения, которое я подаю дискриминатору При этом я хочу выполнить поиск сходства с результирующими векторами, чтобы найти n наиболее похожих изображений на изображение, представленное в наборе данных.
Я хочу использовать Keras, поэтому я рассматриваю эту реализацию в качестве ссылки:
Я нашел это TensorFlow 0.11
реализация, где они предоставляют функциональность для достижения цели сходства, но у меня возникают проблемы при попытке сделать что-то подобное в Keras.
Я думаю, проще говоря, я хочу понять, из какого слоя лучше всего брать значения переноса в дискриминаторе, и как я могу это сделать в Keras с обученной моделью. Дискриминаторные слои:
x = Convolution2D(64, (4, 4), strides=(2,2))(self.d_input)
x = LeakyReLU(0.1)(x)
x = Convolution2D(128, (4, 4), strides=(2,2))(x)
x = LeakyReLU(0.1)(x)
x = BatchNormalization()(x)
x = Flatten()(x)
x = Dense(1024)(x)
x = LeakyReLU(0.1)(x)
self.d_hidden = BatchNormalization()(x) # Store this to set up Q
self.d_output = Dense(1, activation='sigmoid', name='d_output')(self.d_hidden)
self.discriminator = Model(inputs=[self.d_input], outputs=[self.d_output], name='dis_model')
self.opt_discriminator = Adam(lr=2e-4)
self.discriminator.compile(loss='binary_crossentropy',
optimizer=self.opt_discriminator)