我的 TensorFlow 模型具有以下结构。它旨在解决标签为 0 或 1 的二元分类问题。输出层使用具有 1 个输出的 sigmoid 激活函数。
model = keras.Sequential([
layers.Dense(10, activation='relu', input_shape=[len(train_dataset.keys())]),
layers.Dense(1, activation='sigmoid')
])
optimizer = 'adam'
model.compile(loss='binary_crossentropy',
optimizer=optimizer,
metrics=[tf.keras.metrics.Precision(), tf.keras.metrics.Recall(), tf.keras.metrics.Accuracy()])
给出的输出是一个 dtype=float32 数字数组,位于 0 和 1 之间。
array([[9.5879245e-01],
[3.6847022e-01],
[3.4174323e-04],
...,
[2.6283860e-03],
[3.2045375e-04],
[1.0798702e-03]], dtype=float32)
Tensorflow 教程指出 “使用 sigmoid 激活函数,该值是 0 到 1 之间的浮点数,表示概率或置信水平”。 https://www.tensorflow.org/tutorials/keras/text_classification
我的问题是:
我是否将输出中的浮点值解释为:
- “它属于第一类标签的可能性有多大——在这种情况下,0 类是我的第一类标签?” 例如
model.predict()
产量0.99998
,因此有 99% 的机会属于我的第一类标签(0 类)和 1% 的属于另一个类(1 类)。
或者
- “输出越接近0 类
model.predict()
的可能性0.0
越大,输出越接近1 类的可能性越大”1.0