错误的模型预测

时间:2018-12-26 10:19:04

标签: python keras neural-network classification binary-data

我有一个二进制分类问题。我想检测图像上的雨滴。我训练了一个简单的模型,但是我的预测并不理想。我想要一个介于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"))

我希望第一堂课获得0.1分,第二堂课获得0.9分。结果,我得到1,1.3987518e-35。主要问题是我总是得到1作为预测。

1 个答案:

答案 0 :(得分:2)

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