Мне удалось классифицировать 1-D данные с помощью традиционного метода CNN, но не удалось с методом CNN, в котором уровень свертки вместо уровня полного соединения - PullRequest
0 голосов
/ 04 июня 2019

Мои данные - это 1-D данные, которые были предварительно обработаны.Первый код успешен.Второй код неверен.Данные имеют 2 класса.Во втором коде используется слой свертки, который имеет 2 ядра, что означает 2 класса, а не полный уровень соединения.Но я получил результат, в котором была только одна цель.

Я получил этот метод из статьи: https://arxiv.org/pdf/1412.6806v3.pdf

Это пример моих данных. введите описание изображения здесь

def conv_pool_cnn(model_input: Tensor) -> training.Model:

    x = Conv1D(6, 5, activation='relu')(model_input)
    x = AveragePooling1D(pool_size=2)(x)
    x = Dropout(0.25)(x)
    x = Conv1D(16, 5, activation='relu')(x)
    x = AveragePooling1D(pool_size=2)(x)
    x = Dropout(0.25)(x)
    x = Flatten()(x)
    x = Dense(128, activation='relu')(x)
    x = Dropout(0.5)(x)
    x = Dense(2, activation='softmax')(x)

    model = Model(model_input, x, name='conv_pool_cnn')

    return model


def conv_pool_cnn(model_input: Tensor) -> training.Model:

    x = Conv1D(6, 5, activation='relu')(model_input)
    x = Conv1D(6, 5, activation='relu')(x)
    x = Conv1D(6, 5, activation='relu')(x)
    x = MaxPooling1D(pool_size=2)(x)
    x = Conv1D(16, 5, activation='relu')(x)
    x = Conv1D(16, 5, activation='relu')(x)
    x = Conv1D(16, 5, activation='relu')(x)
    x = MaxPooling1D(pool_size=2)(x)
    x = Conv1D(16, 5, activation='relu')(x)
    x = Conv1D(16, 1, activation='relu')(x)
    x = Conv1D(2, 1)(x)
    x = GlobalAveragePooling1D()(x)
    x = Activation(activation='softmax')(x)

    model = Model(model_input, x, name='conv_pool_cnn')

    return model

Это результат матрицы путаницы:

[[  0 216]
 [  0 216]]

Я ожидаю, что результат будет успешным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...