【问题标题】:Should I convert classification output to integer and how?我应该将分类输出转换为整数吗?如何转换?
【发布时间】:2019-05-10 08:50:31
【问题描述】:

我正在使用神经网络对文本进行分类,训练数据的标签是 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)

【问题讨论】:

    标签: tensorflow machine-learning nlp


    【解决方案1】:

    您需要通过设置阈值来手动转换它们,例如:

    threshold = 0.5
    
    result = model.predict(padded_docs_test, verbose=2)
    result = result > threshold
    

    这将给出二元预测。 Keras 在计算二进制精度时使用 0.5 的阈值。

    【讨论】:

    • 您好,这将返回true false,如何将其转换为0 1
    猜你喜欢
    • 2011-12-31
    • 2015-07-28
    • 2019-11-09
    • 2013-12-02
    • 1970-01-01
    • 2021-01-03
    • 2013-06-25
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多