首页 > 解决方案 > 如何将 sigmoid 设置在 0 和 1 之间?

问题描述

我在keras中做了一个模型来预测垃圾邮件,最后一次激活是sigmoid,但是输出不完全在0到1之间

# define the model
model = Sequential()
model.add(Embedding(vocab_size, 30, input_length=max_length))
model.add(Flatten())
model.add(Dense(500, activation='relu'))
model.add(Dense(200, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(100, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# compile the model
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])

预测示例:

sms = ["Hello whats your name"]
sms_proc = tokenizer.texts_to_sequences(sms)
sms_proc = pad_sequences(sms_proc, maxlen=10, padding='post')
pred = (model.predict(sms_proc)).item()
print(pred)

输出:

1.9402589257477842e-10

测试:

print(pred > 0)
print(pred < 1)

输出:

True
True

我知道这个数字“1.9402589257477842e-10”介于 0 和 1 之间,但是否可以在没有符号的情况下显示它?例如:0.0000001

标签: pythonmachine-learningkerassigmoid

解决方案


推荐阅读