我正在使用神经网络对文本进行分类,训练数据的标签为0或1(即二进制分类)。它在训练和评估过程中效果很好,但是预测输出是浮点值,而不是整数0或1。我怎么总是能得到整数结果?我需要手动转换它们还是更改网络参数?
model = Sequential()
e = Embedding(vocab_size, embedding_dim, weights=[embedding_matrix],
input_length=max_length, trainable=False)
model.add(e)
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
# compile
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc'])
print(model.summary())
# fit
model.fit(padded_docs, labels, epochs=5, verbose=2)
# eval
loss, accuracy = model.evaluate(padded_docs, labels, verbose=0)
print('Accuracy: %f' % (accuracy*100))
# predict
result = model.predict(padded_docs_test, verbose=2)
答案 0 :(得分:1)
您需要通过设置阈值来手动转换它们,例如:
threshold = 0.5
result = model.predict(padded_docs_test, verbose=2)
result = result > threshold
这将给出二进制预测。计算二进制精度时,Keras的阈值为0.5。