Keras:接受softmax输出的整数标签

时间:2017-11-10 03:52:41

标签: python keras

我在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已经足够了,但我猜不是。

任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:2)

原来我做得对了!问题是嵌入是三维的(由于无用的input_length维度)。我不得不使用Flatten()电话。在那之后,一切都很好!