如何在keras中产生one-hot输出?

Sid*_*sai 5 python keras

通常,不需要在神经网络中产生一个热向量输出;然而,我正在尝试训练 GAN,因此一个网络的输出需要与另一个网络的输入相匹配。目前,生成器中的最后一层是密集的 softmax,因此我在输出上具有概率分布,但我需要将该向量转换为单热向量,以便它与判别器期望的输入相匹配。似乎没有任何内置层可以使用 keras 执行此操作。我正在尝试编写 lambda 表达式,但似乎无法让它工作。

这是现在的代码:

    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()
Run Code Online (Sandbox Code Playgroud)