コード例 #1
0
 def block(layers, filters):
     all_filters = sorted({
         search_space_utils.scale_filters(filters, multiplier, base=8)
         for multiplier in block_filters_multipliers
     })
     return basic_specs.Block(layers=layers,
                              filters=choose_filters(all_filters))
コード例 #2
0
 def test_scale_filters(self):
     self.assertEqual(search_space_utils.scale_filters(32, 1 / 4, 8), 8)
     self.assertEqual(search_space_utils.scale_filters(64, 1 / 3, 8), 24)
     self.assertEqual(search_space_utils.scale_filters(64, 1.4, 32), 96)
     self.assertEqual(search_space_utils.scale_filters(64, 3, 32), 192)
     self.assertEqual(search_space_utils.scale_filters(68, 1.0, 8), 72)
     self.assertEqual(search_space_utils.scale_filters(68, 1.2, 8), 80)
     self.assertEqual(search_space_utils.scale_filters(76, 1.0, 8), 80)
     self.assertEqual(search_space_utils.scale_filters(76, 1.2, 8), 88)
コード例 #3
0
def _compute_filters_for_multiplier(
    multiplier,
    input_filters_or_mask,
    filters_base):
  """Convert a FilterMultiplier to an integer (or int Tensor) filter size."""
  if isinstance(input_filters_or_mask, int):
    input_filters = input_filters_or_mask
    return search_space_utils.scale_filters(
        input_filters, multiplier.scale, filters_base)
  elif isinstance(input_filters_or_mask, tf.Tensor):
    input_filters = tf.reduce_sum(tf.cast(input_filters_or_mask, tf.int32))
    return search_space_utils.tf_scale_filters(
        input_filters, multiplier.scale, filters_base)
  else:
    raise ValueError('Unsupported type for input_filters_or_mask: {}'.format(
        input_filters_or_mask))
コード例 #4
0
 def bneck(input_size, se, s, act):
     """Construct a DepthwiseBottleneckSpec namedtuple."""
     if use_relative_expansion_filters:
         expansion_filters = sorted({
             basic_specs.FilterMultiplier(expansion)
             for expansion in expansion_multipliers
         })
     else:
         expansion_filters = sorted({
             search_space_utils.scale_filters(input_size, expansion, base=8)
             for expansion in expansion_multipliers
         })
     if search_squeeze_and_excite:
         # Replace the default value of the argument 'se' with a OneOf node.
         se = schema.OneOf([False, True], basic_specs.OP_TAG)
     return DepthwiseBottleneckSpec(
         kernel_size=schema.OneOf([3, 5, 7], basic_specs.OP_TAG),
         expansion_filters=choose_filters(expansion_filters),
         use_squeeze_and_excite=se,
         strides=s,
         activation=act)