通常,不需要在神经网络中产生一个热矢量输出;但是,我正在尝试训练一个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()