如何在 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'])
这个问题看起来很简单,但是我在网上找不到任何地方。
我已经 运行 完成了文本分类(正负)教程 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'])