Нейронная сеть с повторением тензорного потока более 100 - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь получить все метрики для созданной модели:

def build_rnn_gru_model(tokenizer):
    model = tf.keras.Sequential([
        tf.keras.layers.Embedding(len(tokenizer.word_index) + 1, 64,input_length=863),
        tf.keras.layers.GRU(64, activation='relu', return_sequences=True),
        tf.keras.layers.Dense(1, activation='sigmoid')
    ])
    model.summary()
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy',f1,precision, recall])
    return model

Я также использовал определения метрик, предложенные в ответе с большим количеством голосов в Как получить точность, F1, точность и отзыв , для модели keras? , но результаты были те же:

def recall(y_true, y_pred):
    true_positives = K.sum(K.round(y_pred) * y_true)
    possible_positives = K.sum(y_true)
    return true_positives / (possible_positives + K.epsilon())


def precision(y_true, y_pred):
    true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
    precision = true_positives / (predicted_positives + K.epsilon())
    return precision


def f1(y_true, y_pred):
    precision_ = precision(y_true, y_pred)
    recall_ = recall(y_true, y_pred)
    return 2*((precision_*recall_)/(precision_+recall_+K.epsilon()))

При оценке моделей с LSTM или без повторяющихся слоев все выглядит нормально, но с GRU повторное значение равно невероятно высокий:

 199/1180 [====>.........................] - ETA: 4:45 - loss: 0.3988 - accuracy: 0.8230 - f1: 1.6155 - precision: 0.8195 - recall: 468.6583

может ли кто-нибудь намекнуть, что не так?

1 Ответ

2 голосов
/ 05 мая 2020

с TF 2 Я предлагаю вам использовать предопределенные метрики , в вашем случае tf.keras.metrics.Recall

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=[tf.keras.metrics.Recall(), ...])

Я предлагаю установить return_sequences=False в вашем слое GRU, потому что я думаю вы выполняете задачу двоичной классификации

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