class_docstr: Abstract placement strategy for distributed training.
  
  Given a cluster of workers, the placement strategy determines which subgraph
  each worker constructs.
class_docstr_tok: ["Abstract","placement","strategy","for","distributed","training",".","Given","a","cluster","of","workers",",","the","placement","strategy","determines","which","subgraph","each","worker","constructs","."]
docstr: Whether to build the ensemble on the current worker.
  
  Args:
    num_subnetworks: Integer number of subnetworks to train in the current
      iteration.
  
  Returns:
    Boolean whether to build the ensemble on the current worker.
docstr_tok: ["Whether","to","build","the","ensemble","on","the","current","worker",".","Args",":","num_subnetworks",":","Integer","number","of","subnetworks","to","train","in","the","current","iteration",".","Returns",":","Boolean","whether","to","build","the","ensemble","on","the","current","worker","."]
code: def should_build_ensemble(self, num_subnetworks):
      """Whether to build the ensemble on the current worker.
  
      Args:
        num_subnetworks: Integer number of subnetworks to train in the current
          iteration.
  
      Returns:
        Boolean whether to build the ensemble on the current worker.
      """
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import abc
  import contextlib
  from absl import logging
  from adanet import tf_compat
  from adanet.distributed.devices import _OpNameHashStrategy
  import numpy
  import six
label_desc: Use image node_id 3 for calling the PlacementStrategy obj's underlying member method code with example usage: obj.should_build_ensemble(num_subnetworks) without return types