2017-08-20 1 views
2

J'ai un test d'unité Java qui utilisera un fichier de modèle d'apprentissage automatique, appelé model.bin, qui est construit à partir d'un simple fichier texte par un outil externe (appelé model-builder, déjà construit par une règle C++). Alors qu'il serait logique de définir un genrule, il ne prend pas en charge deps (model.bin & model-builder dans mon cas). Je vois deux options:Test de modèle d'apprentissage machine

  • Faire mon code de test générer le fichier model.bin. Conceptuellement, ce n'est pas vraiment ce que je veux que mon test teste (je veux tester la lecture du modèle de pré-construction).
  • Implémentez une extension personnalisée rule qui exécute ./model-builder --in my-input.txt --out model.bin`.

Quelle est la meilleure pratique dans Bazel?

Répondre

2

De votre description, je crois qu'un génome est la meilleure route. Même si genrule a des deps il semble que model.bin est votre fichier généré et aurait du sens comme out. model-builder ressemble à l'outil pour générer votre fichier et aurait un sens en tant que genrule tool.

Quelque chose comme ceci comme un fichier BUILD devrait fonctionner.

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]" 
)