【发布时间】:2020-10-25 19:11:46
【问题描述】:
我正在构建一个 lstm 模型。我使用 softmax 和 sigmoid 激活函数测试了我的模型。在文档中,sigmoid 用于二进制分类,softmax 用于多类分类。但就我而言,两者都给出了相同的结果。为什么会这样?
这是我的代码:
embedding_vecor_length = 128
max_length = 700
model = Sequential()
model.add(Embedding(len(tokenizer.word_index)+1, embedding_vecor_length, input_length=max_length))
model.add(Conv1D(filters=32, kernel_size=5, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Conv1D(filters=16, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Bidirectional(LSTM(64)))
model.add(Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
以下是预测结果:
[[2.72062905e-02 1.47979835e-03 4.44446778e-04 1.60833297e-05
4.15672457e-06 3.20438482e-02 9.38653767e-01 1.41544719e-04
5.55426550e-06 4.47654566e-06]
[2.31099591e-01 1.71699154e-03 1.32052042e-02 4.70457249e-04
8.86382014e-02 2.65704724e-03 6.54215395e-01 7.50611164e-03
4.89178114e-04 1.89376965e-06]
[1.24909900e-01 8.73659015e-01 9.71468398e-06 1.66079029e-04
1.05203628e-06 4.14116839e-05 3.97000113e-05 6.98190925e-05
1.10231712e-03 9.84829512e-07]
【问题讨论】:
-
我猜,你只有 2 个类。在这种情况下,softmax 函数简化为 sigmoid 函数
-
但是我的密集层需要 10 个类来预测。
-
也许这是一个实现细节。检查您正在使用的 ML 框架。或在此处发布您的代码
-
@pythonic833 我已经用代码 sn-p 更新了我的问题。我希望它会有所帮助。感谢您的回复。
标签: python deep-learning lstm softmax sigmoid