python - 应如何将指标添加到多头 TensorFlow 估计器中?

标签 python tensorflow machine-learning metrics

我之前为 TensorFlow 分类器创建了指标,引用预测['logits']来计算指标。我已将模型从分类器更改为估计器,以实现多目标学习(使用 MultiHead)。然而,这导致 Python 抛出错误,因为现在预测的元素由头名称和原始键对进行键控,例如('label1','logits') 表示名称为“label1”的头。

我希望允许基于配置文件动态生成指标,以便更轻松地训练和测试具有不同标签组合的各种模型。现在的问题是,tf.estimator.add_metricsmetric_fn 参数不采用任何其他参数来允许动态确定或构建指标。

如何生成具有多个头和每个头的自定义指标的估算器?

最佳答案

围绕模型创建构建一个类来保存模型配置,并使用 metric_fn 参数的成员函数。

类模型构建器: # 构造函数在 self 中存储配置选项 def __init__(自身、标签、other_config_args): self.labels = 标签 ... # 用于构建多头估计器(多目标)的函数 def build_estimator(self, func_args): 头=[] 对于 self.labels 中的标签: Heads.append(tf.estimator.MultiClassHead(n_classes=self.nclasses[label], name=label)) 头 = tf.estimator.MultiHead(头) estimator = tf.estimator.DNNEstimator(head=heads,...) # 或您想要的任何类型的估计器 估计器 = tf.estimator.add_metrics(估计器, self.model_metrics) 返回估计器 # 根据模型配置参数将指标添加到估计器的成员函数 def model_metrics(自身、标签、预测、特征): 指标 = {} for label in self.labels: # 为每个头名称生成一个指标 指标['metric_name'] = metric_func(特征,标签,预测[(标签,'logits')]) 返回指标

关于python - 应如何将指标添加到多头 TensorFlow 估计器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888227/

相关文章:

python - 使用同一个 SSH 对象在 Paramiko 中多次发出 "exec_command()"

python - 删除 Matplotlib、Python 中某些子图的 y 轴刻度标签

python - Firebase Tensorflow Lite 分类模型未在 Swift 应用程序中提供正确的输出

python - 在 VGG16 模型和 Tensorflow lite 中使用 converter.optimization 时预测时间长

python - 在 scikit-learn 中实现 K 邻居分类器,每个对象具有 3 个特征

python - iPython %lprun 在类中的函数上

python - 使用 tf Estimator 和 export_savedmodel 函数导出模型

ios - 构建 TensorFlowLite Swift 自定义框架

machine-learning - 我的朴素贝叶斯训练数据是否需要成比例?

python - 在 python 中使用 matplotlib 设置刻度位置时出错