【问题标题】:Trying to understand the output of model.predict试图理解 model.predict 的输出
【发布时间】:2019-12-23 07:38:47
【问题描述】:

我正在尝试使用 model.predict 方法预测猫/狗图像。因为它是 2 类分类器,所以我得到一个包含 2 个值的数组。根据我的理解,这些值代表属于每个类别的概率(如果我错了,请纠正我)。如果是这样,则概率必须相加为 1。但我得到两个类的概率相同

模型历史

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten (Flatten)            multiple                  0         
_________________________________________________________________
dense (Dense)                multiple                  30848     
_________________________________________________________________
dropout (Dropout)            multiple                  0         
_________________________________________________________________
batch_normalization (BatchNo multiple                  512       
_________________________________________________________________
dense_1 (Dense)              multiple                  12900     
_________________________________________________________________
dropout_1 (Dropout)          multiple                  0         
_________________________________________________________________
batch_normalization_1 (Batch multiple                  400       
_________________________________________________________________
dense_2 (Dense)              multiple                  10100     
_________________________________________________________________
dropout_2 (Dropout)          multiple                  0         
_________________________________________________________________
batch_normalization_2 (Batch multiple                  400       
_________________________________________________________________
dense_3 (Dense)              multiple                  10100     
_________________________________________________________________
dropout_3 (Dropout)          multiple                  0         
_________________________________________________________________
batch_normalization_3 (Batch multiple                  400       
_________________________________________________________________
dense_4 (Dense)              multiple                  10100     
_________________________________________________________________
dropout_4 (Dropout)          multiple                  0         
_________________________________________________________________
batch_normalization_4 (Batch multiple                  400       
_________________________________________________________________
dense_5 (Dense)              multiple                  202       
=================================================================
Total params: 76,362
Trainable params: 75,306
Non-trainable params: 1,056

预测代码

class_prob=model.predict(new_array_2.T,batch_size=1)
print(class_prob)
classifications=model.predict_classes(new_array_2.T,batch_size=1)
print(classifications)
print(CATEGORIES[classifications[0]])

输出

[[0.39456758 0.39456758]]
[0]
Dog

【问题讨论】:

  • 请添加你的模型代码,最后一层的激活是什么?
  • 我们能看到型号代码和/或摘要吗?
  • @Stewart_R 摘要就在问题中。
  • @MatiasValdenegro 哈哈——我的错。确实如此,对不起!我期待看到一个带有明确输出形状的摘要,我猜我只是忽略了它。我的评论与您的​​评论“交叉”,否则我永远不会打扰。如果我在你之前发现了我的愚蠢行为,我就会删除它。唉,现在不得不道歉并解释为什么我是这样的驴,我不敢删除它,所以我的驴将永远让所有人看到! :-) 没关系!

标签: python tensorflow machine-learning keras deep-learning


【解决方案1】:

model.predict 只返回给定输入的模型计算输出,因此您提到的所有细节都取决于模型的输出,例如最后一层的激活。

模型输出总和为 1 的概率仅由输出层的 softmax 激活产生,在我看来,您的最后一层有不同的激活,可能是 sigmoid,它不会产生总和为一。您应该更喜欢使用softmax 进行多类分类。

【讨论】:

  • 你说得对,我正在使用 sigmoid 激活函数。但我想了解出局是否不是概率,以及为什么我在两个类别中获得相同的价值。无论如何,在初始运行期间尝试了 softmax 并没有获得良好的准确性(训练/测试),这就是我切换到 sigmoid 的原因。我会用 softmax 再试一次,如果我发现任何差异会告诉你
  • 我尝试过使用 softmax(精度差)和 sigmoid ``` -----------softmax------------- Epoch 205 /205 18709/18709 [==============================] - 4s 233us/样本 - 损耗:0.2500 - 准确度:0.5528 -----sigmoid------------- Epoch 205/205 18709/18709 [======================= =======] - 5s 246us/样本 - 损失:0.2383 - 准确度:0.9247
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
相关资源
最近更新 更多