Метрики и функции потерь - PullRequest
0 голосов
/ 01 ноября 2019

Код -

def define_model():
    # channel 1

    inputs1 = Input(shape=(32,1))
    conv1 = Conv1D(filters=256, kernel_size=2, activation='relu')(inputs1)
    #bat1 = BatchNormalization(momentum=0.9)(conv1)
    pool1 = MaxPooling1D(pool_size=2)(conv1)
    flat1 = Flatten()(pool1)

    # channel 2

    inputs2 = Input(shape=(32,1))
    conv2 = Conv1D(filters=256, kernel_size=4, activation='relu')(inputs2)

    pool2 = MaxPooling1D(pool_size=2)(conv2)

    flat2 = Flatten()(pool2)

    # channel 3

    inputs3 = Input(shape=(32,1))
    conv3 = Conv1D(filters=256, kernel_size=4, activation='relu')(inputs3)
    pool3 = MaxPooling1D(pool_size=2)(conv3)
    flat3 = Flatten()(pool3)

    # channel 4

    inputs4 = Input(shape=(32,1))
    conv4 = Conv1D(filters=256, kernel_size=6, activation='relu')(inputs4)

    pool4 = MaxPooling1D(pool_size=2)(conv4)

    flat4 = Flatten()(pool4)

    # merge

    merged = concatenate([flat1, flat2, flat3, flat4])

    # interpretation
    dense1 = Dense(128, activation='relu')(merged)
    dense2 = Dense(96, activation='relu')(dense1)

    outputs = Dense(10, activation='softmax')(dense2)
    model = Model(inputs=[inputs1, inputs2, inputs3, inputs4 ], outputs=outputs)
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=[categorical_accuracy])
plot_model(model, show_shapes=True, to_file='/content/q.png')

    return model

model_concat = define_model()

# fit model
print()
red_lr= ReduceLROnPlateau(monitor='val_loss',patience=2,verbose=2,factor=0.001,min_delta=0.01)
check=ModelCheckpoint(filepath=r'/content/drive/My Drive/Colab Notebooks/gen/concatcnn.hdf5', verbose=1, save_best_only = True)


History = model_concat.fit([X_train, X_train, X_train, X_train], y_train , epochs=20, verbose = 1 ,validation_data=([X_test, X_test, X_test, X_test], y_test), callbacks = [check, red_lr], batch_size = 32)

model_concat.summary

К сожалению, я использовал двоичную кроссентропию как потери и «точность» как метрики. Я получил более 90% от val_accuracy.

Затем я нашел эту ссылку, Keras binary_crossentropy vs categoryorical_crossentropy performance? .

После прочтения первого ответа я использовал двоичную кроссентропиюпотери и категорическая кроссентропия как метрики ...

Несмотря на то, что я изменил это, val_acc не улучшается, он показывает около 62%. что делать ...

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

Форма набора данных, x_train - (800,32), y_train - (200,32), y_train - (800,10), а y_test - (200, 10). Перед подачей в сеть я использовал стандартный скаляр в x.и изменил форму x_train и, x_test на (800, 32, 1) и, (200, 32, 1).

Спасибо

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