gpt4 book ai didi

python - 如何解释多类分类的输出?

转载 作者:行者123 更新时间:2023-11-30 09:00:18 24 4
gpt4 key购买 nike

我有一个 4 个输入和 3 个输出的顺序模型:

def baseline_model():
# create model
model = Sequential()
model.add(Dense(4, input_dim=4, init='normal', activation='relu'))
model.add(Dense(3, init='normal', activation='sigmoid'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# serialize model to JSON
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
# serialize weights to HDF5
model.save_weights("model.h5")
print("Saved model to disk")
return model

我使用下面的代码来预测类别。

prediction = model.predict(np.array([[data[0],data[1],data[2],data[3]]]))

但是预测的返回结果是[[ 0.49986306 0.5005092 0.50012374]]

如何解释预测的值(value)?

下面的解释对吗?

Class1 -- when single value > 0.5 -> 1 (sum of 3 number ==1 )

Class2 -- when single value > 0.5 -> 1 (sum of 3 number ==2 )

Class3 -- when single value > 0.5 -> 1 (sum of 3 number ==3 )

如果解释错误如何解释预测的值(value)?

最佳答案

正如评论中所说,既然你引用了 this tutorial ,你应该知道有一个错误。

您想要在这里预测哪种鸢尾花的类型。 sigmoid 激活将为您提供 0 到 1 之间的 3 个输出。您正在训练它们,以便 2 个必须趋向 0,一个趋向 1。问题是没有什么可以阻止输出为 1, 1, 1,这种情况不应该发生,因为您只想检测一朵花的一种类型的鸢尾花。

这就是“softmax”激活有用的地方。它只是对输出进行归一化,以便 3 个输出的总和为 1。当您只想检测多种可能性之间的一类时,您应该始终使用softmax。然后,您可以将输出 i 解释为花属于类 i 的概率。

您的输出将如下所示:

[0.1, 0.2, 0.7] or [0.3, 0.4, 0.3]

为了解释这一点,第一个示例对于类别 3 的概率最高,因此预测类别 3。第二个示例对于类别 2 的概率最高,因此预测类别 2。

为此,您必须在模型中更改以下行:

model.add(Dense(3, init='normal', activation='softmax'))

是不是更清楚了?

关于python - 如何解释多类分类的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42758394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com