- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的模型是这样的
print('Build main model...')
model = Sequential()
model.add(Merge([left, right], mode='sum'))
model.add(Dense(14, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
当我使用 model.evaluate([xtest1, xtest2], y_test)
时,我得到了 90% 的准确率,但是当我使用 model.predict_classes([x_test1, x_xtest2]) 时
,我得到了完全错误的类标签,由此我的准确性显着下降。 model.evaluate
和 model.predict_classes
模式有什么区别?我在哪里犯了错误?
最佳答案
由于您在模型编译中要求 loss='binary_cross_entropy'
和 metric=['accuracy']
,Keras 推断您对 二进制精度,这是它在 model.evaluate()
中返回的值;事实上,由于您有 14 个类,您实际上对分类 准确性感兴趣,这是通过 model.predict_classes()
报告的准确性。
因此,您应该将模型编译中的损失函数更改为categorical_crossentropy
:
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
如果出于某种原因,你想坚持使用 loss='binary_crossentropy'
(诚然,这将是一个非常不寻常的选择),你应该更改模型编译以阐明你想要分类准确度如下:
from keras.metrics import categorical_accuracy
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=[categorical_accuracy])
在这两种情况下,您会发现 model.evaluate()
和 model.predict_classes()
报告的准确度是相同的,因为它们应该是.
有关更详细的解释和使用 MNIST 数据的示例,请参阅 my answer here .
关于python - Keras - model.predict_classes 给出了错误的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643691/
我是 python 神经网络的新手。我过去用过 ml.net。每个预测示例 f.e -> 我的模型在照片上识别自行车的准确度很容易,acc = 60%。 现在我需要在 python 中做类似的事情。我
def predictOne(imgPath): model = load_model("withImageMagic.h5") image = read_image(imgPath)
我的模型是这样的 print('Build main model...') model = Sequential() model.add(Merge([left, right], mode='sum'
keras 中的 predict 和 predict_class 函数有什么区别? 为什么Model对象没有predict_class函数? 最佳答案 predict 将返回回归分数,predict_
请引用 here 我之前的问题以获得背景信息。根据 answer 建议的 Nassim Ben 。我使用函数式 API 训练了双路径架构模型。现在我觉得卡住了,因为我需要预测每个像素的类别。这是相同的
我正在尝试使用经过预先训练和微调的DL模型预测验证数据。该代码遵循Keras博客中有关“使用很少的数据构建图像分类模型”的示例。这是代码: import numpy as np from keras.
我知道predict_generator输出概率。为了获得类别,我只需找到最大概率的索引,这将是最可能的类别。但是我发现这样做后,我得到的输出与调用 Predict_classes 时得到的输出不同。
我是一名优秀的程序员,十分优秀!