2017-08-20 112 views
2

我有一个Java单元测试,它将使用机器学习模型文件,将其称为model.bin,它由一个外部工具从简单的文本文件构建而成(称为model-builder,已经通过C++规则构建)。虽然定义genrule是有意义的,但它不支持depsmodel.bin & model-builder在我的情况下)。我看到两个选项:机器学习模型测试

  • 使我的测试代码构建model.bin文件。从概念上讲,这不是我想测试测试的真正内容(我想测试阅读预建模型)。
  • 实施执行./model-builder --in my-input.txt --out model.bin`的自定义扩展rule

巴泽尔的最佳实践是什么?

回答

2

从你的描述我相信一个genrule是最好的路线。即使genrule的确有一个代名词,它听起来像model.bin是您生成的文件,并且作为out会有意义。 model-builder看起来像生成你的文件的工具,并将作为一个genrule tool有意义。

像这样的BUILD文件应该工作。

genrule(
    name = "model-bin", 
    srcs = ["//path/to:my-input.txt"], 
    outs = ["model.bin"], 
    tools = ["//path/to:model-builder"], 
    cmd = "$(location //path/to:model-builder) --in $< --out [email protected]" 
)