Keras根据预测的

时间:2017-01-20 01:31:38

标签: tensorflow neural-network keras

我正在使用Keras(+ TensorFlow)来构建深度神经网络模型。在模型中,我需要定义自己的准确度函数。

让我们说,模型预测完成工作所需的时间(以分钟为单位,在0到20之间)。如果预测输出在+/- 2之内,我希望模型打印出精度。如果预测输出是x分钟,而预期输出是x + 1,我想要考虑这是一个正确的预测,如果预期输出是x + 3,我想考虑这是一个错误的预测。

这与top_k_categorical_accuracy

略有不同

1 个答案:

答案 0 :(得分:1)

您可以使用Keras后端apis轻松实现逻辑..这也将确保您的指标在tensorflow和theano上工作。

这里有测试:

import numpy as np
import keras
from keras import backend as K

shift = 2
def custom_metric(y_true,y_pred):
    diff = K.abs(K.argmax(y_true, axis=-1) - K.argmax(y_pred, axis=-1))
    return K.mean(K.lesser_equal(diff, shift))


t1 = np.asarray([   [0,0,0,0,0,0,1,0,0,],
                    [0,0,0,0,0,0,1,0,0,],
                    [0,0,0,0,0,0,1,0,0,],
                    [0,0,0,0,0,0,1,0,0,],
                    [0,0,0,0,0,0,1,0,0,],
                    [0,0,0,0,0,0,1,0,0,],
                ])
p1 = np.asarray([   [0,0,0,0,0,1,0,0,0,],
                    [0,0,0,0,1,0,0,0,0,],
                    [0,0,0,0,0,0,0,1,0,],
                    [0,0,0,0,0,0,0,0,1,],
                    [1,0,0,0,0,0,0,0,0,],
                    [0,0,0,0,0,0,1,0,0,],
                ])


print K.eval(keras.metrics.categorical_accuracy(K.variable(t1),K.variable(p1)))
print K.eval(custom_metric(K.variable(t1),K.variable(p1)))

现在在compile语句中使用它:metrics=custom_metric