【问题标题】:How to get output with maximum probability from the all the predicted outputs from dense layer?如何从密集层的所有预测输出中以最大概率获得输出?
【发布时间】:2019-03-09 13:12:23
【问题描述】:

我训练了一个用于手语识别的神经网络。这是我的输出层 model.add(Dense(units=26,activation="softmax")) 现在我得到了所有 26 个字母的概率。当我测试这个模型accuracy = model.evaluate(x=test_X,y=test_Y,batch_size=32) 时,不知何故我得到了 99% 的准确率。我是新来的。我无法理解这段代码是如何工作的,而且我在这里遗漏了一些重要的东西。如何获得一个只有预测字母表的一维列表?

【问题讨论】:

    标签: python machine-learning keras deep-learning data-science


    【解决方案1】:

    要获得概率,您需要执行以下操作:

    prediction = model.predict(test_X)
    probs = prediction.max(1)
    

    但重要的是要记住,softmax 并不能准确地提供每个类的概率。

    【讨论】:

    • 这个可以用吗?那么模型如何在测试数据集上获得准确性呢?预测所有字母?
    • 我觉得用这个没问题。至于计算准确率,基本上是这样的:对于每个样本,预测的类别是概率最高的类别。您可以通过prediction.argmax(1) 获取。然后将预测的类与原始类进行比较。
    【解决方案2】:

    要在单个列表中获得最大概率的输出,请运行:

    np.argmax(model.predict(x_test),axis=1)
    

    【讨论】:

      【解决方案3】:

      假设字母表是一个包含所有字母符号的列表alphabet = ['a', 'b', ...]

      pred = model.predict(test_X)
      pred_ind = pred.max(1)
      pred_alphabet = [alphabet[ind] for ind in pred_ind]
      

      将为您提供带有预测符号的列表。

      【讨论】:

        【解决方案4】:

        在神经网络中,第一层用于您拥有的输入图像。假设您的图像是 32x32 像素。在这种情况下,输入层中将有 32x32x3 个节点。这 3 用于 RGA 配色方案。然后根据您的设计和模型,您应该使用适当数量的隐藏输入层。在大多数情况下,我们使用 2 个隐藏输入层。然后最后一层是你拥有的不同类的数量。假设您要识别 26 个不同的标志。然后你将在最后一层有 26 个节点。

        model.evaluate(x=test_X,y=test_Y,batch_size=32) 我认为您正在尝试对您的测试数据集进行预测。起初,您可能已将数据集分为训练集和测试集。这里 test_X 代表测试集中的图像。 test_Y 代表相应的标签。您试图通过一次拍摄 32 张图像来评估您的网络。这就是batch_size=32的意思。

        我认为这些信息可能有助于您了解自己在做什么。但是你的问题不清楚。请参考以下教程。这可能对你有帮助。 https://www.pyimagesearch.com/2018/09/10/keras-tutorial-how-to-get-started-with-keras-deep-learning-and-python/

        【讨论】:

          猜你喜欢
          • 2020-07-16
          • 1970-01-01
          • 1970-01-01
          • 2020-06-13
          • 2021-05-17
          • 2021-06-27
          • 1970-01-01
          • 2019-12-18
          • 2020-03-08
          相关资源
          最近更新 更多