繁体   English   中英

ValueError:未知度量 function:TP_count

[英]ValueError: Unknown metric function : TP_count

我在尝试为我的项目目的构建 BGRU model 时遇到这种 ValueError。 请让我知道为什么会发生这种类型的错误。 部分代码如下所示:

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

我怎么能改变这个错误?

错误很明显,您使用的是不存在的未记录指标。

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 内部编译 function 作为字符串列表,而只需传递 function 名称。


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM