【问题标题】:Keras: accept integer labels for softmax outputKeras:接受用于 softmax 输出的整数标签
【发布时间】:2017-11-10 14:37:51
【问题描述】:

我在 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 就足够了,但我想不是。

有人知道该怎么做吗?

【问题讨论】:

    标签: python keras


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-19
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多