首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用时间线分析GPflow优化过程?

如何使用时间线分析GPflow优化过程?
EN

Stack Overflow用户
提问于 2019-05-23 23:09:32
回答 2查看 171关注 0票数 0

我正在尝试使用时间轴来分析GPflow,并使用铬跟踪来可视化它。但轨迹似乎并未显示优化过程(仅显示模型构建和预测)。我定义了一个自定义配置:

代码语言:javascript
运行
复制
custom_config = gpflow.settings.get_settings()
custom_config.profiling.output_file_name = 'gpflow_timeline'
custom_config.profiling.dump_timeline = True

并尝试在优化后做一个简单的预测:

代码语言:javascript
运行
复制
with gpflow.settings.temp_settings(custom_config), gpflow.session_manager.get_session().as_default():
   k = gpflow.kernels.RBF()
   m = gpflow.models.GPR(X_train, y_train, kern=k)
   run_adam(m, lr=0.1, iterations=100, callback=__PrintAction(m, 'GPR with Adam'))
   mean, var = m.predict_y(X_test)

其中Adam优化器定义为:

代码语言:javascript
运行
复制
class __PrintAction(Action):
   def __init__(self, model, text):
       self.model = model
       self.text = text

   def run(self, ctx):
       likelihood = ctx.session.run(self.model.likelihood_tensor)
       print('{}: iteration {} likelihood {:.4f}'.format(self.text, ctx.iteration, likelihood))

def run_adam(model, lr, iterations, callback=None):
   adam = gpflow.train.AdamOptimizer(lr).make_optimize_action(model)
   actions = [adam] if callback is None else [adam, callback]
   loop = Loop(actions, stop=iterations)()
   model.anchor(model.enquire_session()) 

有没有可能在时间线上也显示优化轨迹?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-24 18:47:15

@tadejk答案的扩展:

您可以在GPflow/gpflow项目文件夹中修改gpflowrc,或者在运行代码和调优性能分析参数的同一文件夹中创建它。

代码语言:javascript
运行
复制
[logging]
# possible levels: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET
level = WARNING

[verbosity]
tf_compile_verb = False

[dtypes]
float_type = float64
int_type = int32

[numerics]
jitter_level = 1e-6
# quadrature can be set to: allow, warn, error
ekern_quadrature = warn

[profiling]
dump_timeline = False
dump_tensorboard = False
output_file_name = timeline
output_directory = ./
each_time = False

[session]
intra_op_parallelism_threads = 0
inter_op_parallelism_threads = 0

虽然不是百分之百确定,但将所有内容合并到一个json文件中可能不是一个好主意。由session.run生成的单个文件,因此将所有内容合并到一个文件中可能会使事情变得混乱。

票数 0
EN

Stack Overflow用户

发布于 2019-05-24 17:14:32

我已经设置了:

代码语言:javascript
运行
复制
custom_config.profiling.each_time = True

在每次运行后获取跟踪文件。然后我使用jq合并了跟踪:

代码语言:javascript
运行
复制
jq -s '{traceEvents: map(.traceEvents[])}' gpflow_timeline_* >> gpflow_timeline_all.json
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56278212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档