【发布时间】:2019-11-10 00:34:15
【问题描述】:
我从 keras 中举了一个例子。
https://github.com/keras-team/keras/blob/master/examples/pretrained_word_embeddings.py
sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')
embedded_sequences = embedding_layer(sequence_input)
x = Conv1D(128, 5, activation='relu')(embedded_sequences)
x = MaxPooling1D(5)(x)
x = Conv1D(128, 5, activation='relu')(x)
x = MaxPooling1D(5)(x)
x = Conv1D(128, 5, activation='relu')(x)
x = GlobalMaxPooling1D()(x)
x = Dense(128, activation='relu')(x)
preds = Dense(len(labels_index), activation='softmax')(x)
model = Model(sequence_input, preds)
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['acc'])
该模型预测的类概率小于 0。我知道 softmax 会将其总和为 1。使用np.argmax(pre) 在概率中我可以看到的唯一一个输出
我希望其他类的概率至少是可读的。
Prediction output:
[2.8300792e-06 4.5637703e-03 7.2316222e-02 6.7710824e-02 5.2243233e-01
3.7763064e-04 1.2326813e-02 2.9277834e-01 4.1662962e-03 1.0876421e-05
2.3830748e-06 1.3590348e-04 2.3074823e-02 3.3520879e-05 4.0551484e-05
1.9896568e-06 1.0994432e-05 4.7518920e-06 2.3408763e-06 6.7659844e-06]
所有这些都产生小于 0 的概率。当我使用 np.argmax 时,我得到了 4 。 如何获得高于 0 的概率结果?相反,我应该使用 softmax 哪个激活来获得更多的正概率?
【问题讨论】:
-
我不明白你的问题。您所有预测的类概率都大于
0。5.2243233e-01 = 0.52243233和6.7710824e-02 = 0.067710824. -
这些数字是科学计数法,例如2.83e-6 = 2.83 x 10^(-6),这些数字都不是负数。
-
我明白了。我缺乏格式化这个 numpy 结果。谢谢指点.. 6.7710824e-02 = 0.067710824 你是怎么得到的>?
-
@giser_yugang 你是怎么转换的>?
-
@GiriAnnamalaiM 你可以参考stackoverflow.com/a/46635273
标签: python keras prediction