Keras:接受整数标签以获得softmax输出



我在Keras中有一个非常简单的FFNN。

model = Sequential()
shared_embedding = Embedding(vocab_size, word_emb_dim, input_length=1, name='embedding')
model.add(shared_embedding)
model.add(Dropout(emb_dropout))
model.add(Dense(hidden_size, name='hidden', 
kernel_constraint=max_norm(max_norm_size), activation='relu'))
model.add(shared_embedding)
model.add(Dense(vocab_size, name='output',            
kernel_constraint=max_norm(max_norm_size), activation='softmax'))
model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy')

这是一个非常非常简单的单词模型,仅预测双字母。因此,给定数据中的一个单词,模型应该预测下一个单词。

我的词汇量是50,000,我有大约1100万双字母。因此,不用说,我无法将所有目标存储在完整的热编码矩阵中。

我想做的是能够将目标的整数直接用于 keras,并强制 keras 处理它。我本以为将损失指定为sparse_categorical_crossentropy就足够了,但我想不是。

有人知道该怎么做吗?

事实证明我做对了!问题是嵌入是三维的(由于无用的input_length维度(。我不得不使用Flatten()电话。之后,一切都好!

最新更新