Ошибка значения: неизвестный показатель c функция: TP_count - PullRequest
0 голосов
/ 08 апреля 2020

Я получаю такого рода ValueError, когда пытаюсь построить модель BGRU для моего проекта. Пожалуйста, дайте мне знать, почему происходит такой тип ошибки. Часть кода показана ниже:

def build_model(maxlen, vector_dim, layers, dropout):
    print('Build model...')
    model = Sequential()

    model.add(Masking(mask_value=0.0, input_shape=(maxlen, vector_dim)))

    for i in range(1, layers):
        model.add(Bidirectional(GRU(units=256, activation='tanh', recurrent_activation='hard_sigmoid', return_sequences=True)))
        model.add(Dropout(dropout))

    model.add(Bidirectional(GRU(units=256, activation='tanh', recurrent_activation='hard_sigmoid')))
    model.add(Dropout(dropout))

    model.add(Dense(1, activation='sigmoid'))

    model.compile(loss='binary_crossentropy', optimizer='adamax', metrics=['TP_count', 'FP_count', 'FN_count', 'precision', 'recall', 'fbeta_score'])

    model.summary()

    return model
    def main(traindataSet_path, testdataSet_path, realtestpath, weightpath, resultpath, batch_size, maxlen, vector_dim, layers, dropout):
        print("Loading data...")

    model = build_model(maxlen, vector_dim, layers, dropout)

the error occuring is shown as below :

    Using TensorFlow backend.
    Loading data...
    Build model...
    Traceback (most recent call last):
      File "bgru.py", line 220, in <module>
        main(traindataSetPath, testdataSetPath, realtestdataSetPath, weightPath, resultPath, batchSize, maxLen, vectorDim, layers, dropout)
      File "bgru.py", line 51, in main
        model = build_model(maxlen, vector_dim, layers, dropout)
      File "bgru.py", line 41, in build_model
        model.compile(loss='binary_crossentropy', optimizer='adamax', metrics=['TP_count', 'FP_count', 'FN_count', 'precision', 'recall', 'fbeta_score'])
      File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 439, in compile
        handle_metrics(output_metrics)
      File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 396, in handle_metrics
        metric_fn = metrics_module.get(metric)
      File "/usr/local/lib/python2.7/dist-packages/keras/metrics.py", line 75, in get
        return deserialize(str(identifier))
      File "/usr/local/lib/python2.7/dist-packages/keras/metrics.py", line 67, in deserialize
        printable_module_name='metric function')
      File "/usr/local/lib/python2.7/dist-packages/keras/utils/generic_utils.py", line 165, in deserialize_keras_object
        ':' + function_name)
    ValueError: Unknown metric function:TP_count

Как я могу изменить эту ошибку ??

1 Ответ

0 голосов
/ 08 апреля 2020

Ошибка очевидна, вы используете недокументированные метрики, которых там нет.

def build_model(maxlen, vector_dim, layers, dropout):
    print('Build model...')
    model = Sequential()

    model.add(Masking(mask_value=0.0, input_shape=(maxlen, vector_dim)))

    for i in range(1, layers):
        model.add(Bidirectional(GRU(units=256, activation='tanh', recurrent_activation='hard_sigmoid', return_sequences=True)))
        model.add(Dropout(dropout))

    model.add(Bidirectional(GRU(units=256, activation='tanh', recurrent_activation='hard_sigmoid')))
    model.add(Dropout(dropout))

    model.add(Dense(1, activation='sigmoid'))

    model.compile(loss='binary_crossentropy', optimizer='adamax', metrics=['accuracy', 'mae'])

    model.summary()

    return model

Вот список доступных метрик: https://keras.io/metrics/

Вы также можете создавать свои собственные метрики, но они не go внутри функции компиляции в виде списка строк, а просто передают имя функции.


import keras.backend as K

def mean_pred(y_true, y_pred):
    return K.mean(y_pred)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy', mean_pred])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...