Неправильный прогноз модели - PullRequest
0 голосов
/ 26 декабря 2018

У меня проблема двоичной классификации.Я хочу обнаружить капли дождя на изображении.Я обучил простую модель, но мой прогноз не очень хороший.Я хочу иметь прогноз от 0 до 1.

Для моей первой попытки я использовал relu для всех слоев, принимающих финал (я использовал softmax).В качестве оптимизатора я использовал двоичный_кросцентроп и изменил его на категориальный_кросентропию.Они оба не работали.

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"))

Я ожидаю получить за от .1 для первого класса и 0,9 для второго.В результате я получаю 1, 1.3987518e-35.Основная проблема в том, что я всегда получаю 1 в качестве прогноза.

1 Ответ

0 голосов
/ 26 декабря 2018

Вы должны использовать binary_crossentropy, и в выводе, который вы получили, нет ничего плохого.Выход 1, 1.3987518e-35 означает, что вероятность первого класса почти равна 1, а вероятность второго класса очень близка к 0 (1e-35).

...