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