我们从Python开源项目中,提取了以下5个代码示例,用于说明如何使用tensorflow.contrib.slim.convolution2d()。
def separable_conv(self, input, k_h, k_w, c_o, stride, name, relu=True): with slim.arg_scope([slim.batch_norm], fused=common.batchnorm_fused): output = slim.separable_convolution2d(input, num_outputs=None, stride=stride, trainable=self.trainable, depth_multiplier=1.0, kernel_size=[k_h, k_w], activation_fn=None, weights_initializer=tf.contrib.layers.xavier_initializer(), # weights_initializer=tf.truncated_normal_initializer(stddev=0.09), weights_regularizer=tf.contrib.layers.l2_regularizer(0.00004), biases_initializer=None, padding=DEFAULT_PADDING, scope=name + '_depthwise') output = slim.convolution2d(output, c_o, stride=1, kernel_size=[1, 1], activation_fn=tf.nn.relu if relu else None, weights_initializer=tf.contrib.layers.xavier_initializer(), # weights_initializer=tf.truncated_normal_initializer(stddev=0.09), biases_initializer=slim.init_ops.zeros_initializer(), normalizer_fn=slim.batch_norm, trainable=self.trainable, weights_regularizer=tf.contrib.layers.l2_regularizer(common.regularizer_dsconv), # weights_regularizer=None, scope=name + '_pointwise') return output
def convb(self, input, k_h, k_w, c_o, stride, name): with slim.arg_scope([slim.batch_norm], fused=common.batchnorm_fused): output = slim.convolution2d(input, c_o, kernel_size=[k_h, k_w], stride=stride, normalizer_fn=slim.batch_norm, weights_regularizer=tf.contrib.layers.l2_regularizer(common.regularizer_conv), scope=name) return output
def mobilenet_arg_scope(weight_decay=0.0): """Defines the default mobilenet argument scope. Args: weight_decay: The weight decay to use for regularizing the model. Returns: An `arg_scope` to use for the MobileNet model. """ with slim.arg_scope( [slim.convolution2d, slim.separable_convolution2d], weights_initializer=slim.initializers.xavier_initializer(), biases_initializer=slim.init_ops.zeros_initializer(), weights_regularizer=slim.l2_regularizer(weight_decay)) as sc: return sc
def mobilenet(inputs, is_training=True, width_multiplier=1, scope='MobileNet'): def _depthwise_separable_conv(inputs, num_pwc_filters, width_multiplier, sc, downsample=False): """ Helper function to build the depth-wise separable convolution layer. """ num_pwc_filters = round(num_pwc_filters * width_multiplier) _stride = 2 if downsample else 1 # skip pointwise by setting num_outputs=None depthwise_conv = slim.separable_convolution2d(inputs, num_outputs=None, stride=_stride, depth_multiplier=1, kernel_size=[3, 3], scope=sc+'/depthwise_conv') bn = slim.batch_norm(depthwise_conv, scope=sc+'/dw_batch_norm') pointwise_conv = slim.convolution2d(bn, num_pwc_filters, kernel_size=[1, 1], scope=sc+'/pointwise_conv') bn = slim.batch_norm(pointwise_conv, scope=sc+'/pw_batch_norm') return bn with tf.variable_scope(scope) as sc: end_points_collection = sc.name + '_end_points' with slim.arg_scope([slim.convolution2d, slim.separable_convolution2d], activation_fn=None, outputs_collections=[end_points_collection]): with slim.arg_scope([slim.batch_norm], is_training=is_training, activation_fn=tf.nn.relu): net = slim.convolution2d(inputs, round(32 * width_multiplier), [3, 3], stride=2, padding='SAME', scope='conv_1') net = slim.batch_norm(net, scope='conv_1/batch_norm') net = _depthwise_separable_conv(net, 64, width_multiplier, sc='conv_ds_2') net = _depthwise_separable_conv(net, 128, width_multiplier, downsample=True, sc='conv_ds_3') net = _depthwise_separable_conv(net, 128, width_multiplier, sc='conv_ds_4') net = _depthwise_separable_conv(net, 256, width_multiplier, downsample=True, sc='conv_ds_5') net = _depthwise_separable_conv(net, 256, width_multiplier, sc='conv_ds_6') net = _depthwise_separable_conv(net, 512, width_multiplier, downsample=True, sc='conv_ds_7') net = _depthwise_separable_conv(net, 512, width_multiplier, sc='conv_ds_8') net = _depthwise_separable_conv(net, 512, width_multiplier, sc='conv_ds_9') net = _depthwise_separable_conv(net, 512, width_multiplier, sc='conv_ds_10') net = _depthwise_separable_conv(net, 512, width_multiplier, sc='conv_ds_11') net = _depthwise_separable_conv(net, 512, width_multiplier, sc='conv_ds_12') net = _depthwise_separable_conv(net, 1024, width_multiplier, downsample=True, sc='conv_ds_13') net = _depthwise_separable_conv(net, 1024, width_multiplier, sc='conv_ds_14') end_points = slim.utils.convert_collection_to_dict(end_points_collection) return end_points