slim-transfer-learning

Transfer learning on TensorFlow-Slim image classification model library

Download ZIP
# Copyright 2016 The TensorFlow Authors. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.# =============================================================================="""Contains common code shared by all inception models.Usage of arg scope:  with slim.arg_scope(inception_arg_scope()):    logits, end_points = inception.inception_v3(images, num_classes,                                                is_training=is_training)"""from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport tensorflow.compat.v1 as tfimport tf_slim as slimdef inception_arg_scope(    weight_decay=0.00004,    use_batch_norm=True,    batch_norm_decay=0.9997,    batch_norm_epsilon=0.001,    activation_fn=tf.nn.relu,    batch_norm_updates_collections=tf.GraphKeys.UPDATE_OPS,    batch_norm_scale=False):  """Defines the default arg scope for inception models.  Args:    weight_decay: The weight decay to use for regularizing the model.    use_batch_norm: "If `True`, batch_norm is applied after each convolution.    batch_norm_decay: Decay for batch norm moving average.    batch_norm_epsilon: Small float added to variance to avoid dividing by zero      in batch norm.    activation_fn: Activation function for conv2d.    batch_norm_updates_collections: Collection for the update ops for      batch norm.    batch_norm_scale: If True, uses an explicit `gamma` multiplier to scale the      activations in the batch normalization layer.  Returns:    An `arg_scope` to use for the inception models.  """  batch_norm_params = {      # Decay for the moving averages.      'decay': batch_norm_decay,      # epsilon to prevent 0s in variance.      'epsilon': batch_norm_epsilon,      # collection containing update_ops.      'updates_collections': batch_norm_updates_collections,      # use fused batch norm if possible.      'fused': None,      'scale': batch_norm_scale,  }  if use_batch_norm:    normalizer_fn = slim.batch_norm    normalizer_params = batch_norm_params  else:    normalizer_fn = None    normalizer_params = {}  # Set weight_decay for weights in Conv and FC layers.  with slim.arg_scope([slim.conv2d, slim.fully_connected],                      weights_regularizer=slim.l2_regularizer(weight_decay)):    with slim.arg_scope(        [slim.conv2d],        weights_initializer=slim.variance_scaling_initializer(),        activation_fn=activation_fn,        normalizer_fn=normalizer_fn,        normalizer_params=normalizer_params) as sc:      return sc