使用tensorflow 1.3中的标量摘要,我现在可以定义一个'系列'这将有助于在相同的tensorboard选项卡下对相关指标进行分组。例如,如果我在下面定义了两个汇总标量:
.body
然后我可以通过执行以下操作在tensorboard中的单个选项卡下显示这些:
@media only screen and (max-width: 767px) {
body {
padding-top: 0;
}
}
我想使用eval_metric_ops重复此行为用于评估摘要,但我无法找到任何方法来执行此操作。例如,我想要一个在同一个标量选项卡下有tf.metrics.precision和tf.metrics.recall的选项卡。有没有办法控制用于eval_metric_ops的选项卡名称?
我在ML Engine Experiment函数中运行它,因此可以首选传递给tf.estimator.EstimatorSpec的解决方案。
答案 0 :(得分:1)
使用预测估算器,我认为没有办法控制内置指标的系列。但您可以添加一个钩子,使用tf.train.SummarySaverHook
将eval_hook
参数作为tf.contrib.learn.Experiment
参数添加到evaluation_hooks
,并且您将能够控制这些新定义的钩子的族。
使用自定义估算工具,您将执行相同操作,除非您在退回的EstimatorSpec
中将 func handleDate(timer: Timer) {
DispatchQueue.main.async() {
if self.posts.count < 1 {
print("Empty")
timer.invalidate()
} else {
let calendar = Calendar.current
let date = Date()
let componentsCurrent = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
var components = DateComponents()
components.hour = componentsCurrent.hour
components.minute = componentsCurrent.minute
components.second = componentsCurrent.second
components.year = componentsCurrent.year
components.month = componentsCurrent.month
components.day = componentsCurrent.day
let currentTime = calendar.date(from: components)!
print("CurrentTime", currentTime)
for post in self.posts {
let cellID = post.postID
let row = self.postsInFeed.index(of: cellID)
let endDate = TimeInterval(post.time)
print("CELLID", cellID)
if currentTime.timeIntervalSince1970 >= endDate {
DispatchQueue.main.async {
self.tableView.beginUpdates()
timer.invalidate()
// self.datesInFeed.removeFirst()
print(post.postID)
print("Deleting tableview row")
self.postsInFeed.removeFirst()
self.posts.removeFirst()
DataService.ds.REF_FEED.child(cellID).removeValue()
self.tableView.deleteRows(at: [IndexPath(row: row!, section: 0)] , with: UITableViewRowAnimation.fade)
self.tableView.endUpdates()
}
} else {
self.tableView.reloadRows(at: [IndexPath(row: row!, section: 0)], with: .none)
}
}
}
}
}
添加到Job Execution 1: Param1, Param2[Value1]
Job Execution 2: Param1, Param2[Value2]
Job Execution 3: Param1, Param2[Value3]
,因此您可以正常指定指标系列。
答案 1 :(得分:1)
如果您要编写自定义估算器,则可以使用斜杠分隔的前缀作为度量标准键,以控制它们在Tensorboard中显示的族。
具体来说,如果您使用键my_family/accuracy
发出指标,则如下所示:
def model_fn(features, labels, mode):
if mode == tf.estimator.ModeKeys.EVAL:
accuracy = ...
loss = ...
return tf.estimator.EstimatorSpec(
tf.estimator.ModeKeys.EVAL,
loss=loss,
eval_metric_ops={'my_family/accuracy': tf.metrics.mean(accuracy)},
)
else:
...
accuracy
指标将在张量板上显示为my_family
系列的一部分。