我在训练一个包含人类年龄的数据集,当我运行模型的compile函数时,设置了metrics=’accuracy’,但我不希望它计算精确的准确率,而是希望它查找某个年龄范围,并计算如果正确识别出该年龄范围的准确率。我想知道如何实现这一点。我能简单地编辑compile函数吗?谢谢
编辑:我开始使用的代码是 https://github.com/yu4u/age-gender-estimation
我试图做的是提取年龄,检查它是否在某个范围内,比如20到30岁,然后根据程序是否正确识别出20到30岁来确定准确率,而不是检查程序是否能识别出确切的年龄。我认为最简单的方法是在train.py文件的71-72行中看到的model.compile函数中添加一个新的度量标准
model.compile(optimizer=sgd, loss=["categorical_crossentropy", "categorical_crossentropy"], metrics=['accuracy'])
我遇到的问题是我不确定如何从这个文件中检查实际年龄以将其插入到自定义度量标准中,甚至创建一个回调函数
从这里开始,我假设我需要编辑plot_history.py文件来实际绘制准确率。
如果有人有任何建议,将会是巨大的帮助
再次感谢
回答:
您可以编写自己的度量标准。然而,您必须使用Keras的后端函数,因为如果您使用TensorFlow,例如,这将被放入您的图形中,因此您的度量标准必须处理张量而不是NumPy数组。
您的第二个选择是编写一个自定义回调,它将在每个epoch结束时自动打印您的度量标准。在这里,您使用模型在验证数据集上进行预测,然后简单地使用NumPy数组作为输入来计算度量标准。