我想在培训和服务中使用中心,但是在同一张图上如何使用它使我有些困惑。即我有类似的东西
def build_graph(..., mode, ...):
tags_and_args= ... # one for training, one for serving
if mode == 'training':
hub.create_module_spec(module_fn, tags_and_args=tags_and_args)
module_output = hub.Module(...)
hub.register_module_for_export(module_fn, tags_and_args=tags_and_args)
loss, output = ...
else:
module_output = hub.Module(XXX)
我应该从磁盘重新加载模块吗?因此XXX
将是我之前保存它的路径。还是以某种方式另存为图形对象在内存中?
我将我的代码称为
estimator.train(...)
exporter = hub.LatestModuleExporter(...)
exporter.export(...)
esimator.export_savedmodel(...) # for serving
答案 0 :(得分:0)
您可以在估算器的model_fn中使用hub.Module,而无需将其导出。在Estimator.train()开始时,模块的变量将根据其预先训练的值进行初始化(就像其他变量是随机初始化的一样)。之后,模块的变量的行为与模型中的其他变量非常相似-它们是模型检查点的一部分,并像其他变量一样从那里恢复以进行评估,恢复训练或导出到SavedModel进行服务。
导出集线器。仅当您要创建可用于另一个单独的Estimator的模块的新版本(权重已从培训中更新)时,才需要使用模块。