错误的模型预测

Posted

技术标签:

【中文标题】错误的模型预测【英文标题】:Wrong model prediction 【发布时间】:2019-05-24 15:12:08 【问题描述】:

我有一个二元分类问题。我想检测图像上的雨滴。我训练了一个简单的模型,但我的预测并不好。我想要一个介于 0 和 1 之间的预测。

对于我的第一次尝试,我对所有层都使用了 relu,并接受了最终结果(我使用了 softmax)。作为优化器,我使用了 binary_crossentropy 并将其更改为 categorical_crossentropy。他们两个都没有工作。

opt = Adam(lr=LEARNING_RATE, decay=LEARNING_RATE / EPOCHS)

cnNetwork.compile(loss='categorical_crossentropy',
              optimizer=optimizers.RMSprop(lr=lr),
              metrics=['accuracy']) 


inputShape = (height, width, depth)

    # if we are using "channels first", update the input shape
    if K.image_data_format() == "channels_first":
        inputShape = (depth, height, width)

    # First layer is a convolution with 20 functions and a kernel size of 5x5 (2 neighbor pixels on each side)
    model.add(Conv2D(20, (5, 5), padding="same",
        input_shape=inputShape))
    # our activation function is ReLU (Rectifier Linear Units)
    model.add(Activation("relu"))
    # second layer is maxpooling 2x2 that reduces our image resolution by half 
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

    # Third Layer - Convolution, twice the size of the first convoltion
    model.add(Conv2D(40, (5, 5), padding="same"))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

    # Fifth Layer is Full connected flattened layer that makes our 3D images into 1D arrays
    model.add(Flatten())
    model.add(Dense(500))
    model.add(Activation("relu"))

    # softmax classifier
    model.add(Dense(classes))
    model.add(Activation("softmax"))

我预计头等舱的 ex.1 和第二等舱的 0.9。结果,我得到 1,1.3987518e-35。主要问题是我总是得到 1 作为预测。

【问题讨论】:

【参考方案1】:

你应该使用 binary_crossentropy 并且你得到的输出没有错。输出 1 , 1.3987518e-35 表示第一类的概率几乎为 1,第二类的概率非常接近 0 (1e-35)。

【讨论】:

但 1.3987518e-35 = −31.1977984 我不知道你是怎么得到 -31 的。 1.3987518e-35 表示 1 , 1.3987518 * 10^-35 graphpad.com/support/faq/… 神经网络如何 100% 确定它是 1?是不是不可能? @KyrKalash 您的预测非常接近 1 的原因有很多。其中一个原因是您可能在小型数据集上过度拟合

以上是关于错误的模型预测的主要内容,如果未能解决你的问题,请参考以下文章

错误! coreML 模型对图像的预测是错误的,对视频是正确的

Vertex AI 模型批量预测因内部错误而失败

错误的模型预测

使用ncnn模型预测获取错误的结果

从 pytorch 模型转换而来的 coreML 模型给出了错误的预测概率

预测错误结果的机器学习模型