Обычно в нейронной сети нет необходимости генерировать один горячий векторный вывод; однако я пытаюсь обучить GAN, поэтому выходные данные одной сети должны совпадать с входными данными другой. В настоящее время последний слой в моем генераторе является плотным софтмаксом, так что у меня есть распределение вероятностей по выходам, но мне нужно преобразовать этот вектор в один горячий, чтобы он соответствовал входу, который ожидает дискриминатор. Кажется, нет никакого встроенного слоя, чтобы сделать это с керасом. Я пытаюсь написать лямбда-выражение, но не могу заставить его работать.
Вот код прямо сейчас:
s1 = Input(shape=(self.sentence_length,))
embed = Embedding(output_dim=self.embedding_vector_length,
input_dim=self.vocabulary_size,
input_length=self.sentence_length)(s1)
x = concatenate([embed,embed],axis=1)
x = LSTM(self.latent_dimension,return_sequences=True)(x)
x = LSTM(self.embedding_vector_length,return_sequences=True)(x)
x = Lambda(lambda s: s[:,15:,:])(x)
x = Dense(self.vocabulary_size,activation='softmax')(x)
# x = Lambda(???)
model = Model(s1,x)
model.summary()