如何在 Tensorflow 中进行预测?

How to make prediction in Tensorflow?

这个问题看起来很简单,但是我在网上找不到任何地方。

我已经 运行 完成了文本分类(正负)教程 https://www.tensorflow.org/tutorials/keras/text_classification_with_hub

在运行所有的代码之后,我希望用我自己的文本进行预测,说,"Test"。

model.predict(["Test"])
#output
array([[-0.87035626]], dtype=float32)

它return 1个值,正或负(上例中的-0.87)。

但这没有意义。我期待它 return 的分类概率如下:

[0:0.2, 1:0.8]

也就是说,标签0有0.2的概率,标签1有0.8的概率。

有人可以指导我吗?

这确实很奇怪,因为您会期望值介于 0 和 1 之间(无论是 sigmoid 还是 softmax)

错误在 TensorFlow 教程中。

在代码的最后一行:model.add(Dense(1)) 没有提供激活。如果提供none,那么默认为线性激活,其实适合回归问题

为了以您想要的形式获得结果,您可以做的是添加最后一层和模型编译,例如:

model.add(tf.keras.layers.Dense(2, activation = 'softmax'))
...
model.compile(optimizer='adam',
          loss=tf.keras.losses.CategoricalCrossentropy(from_logits=False),
          metrics=['accuracy'])