Как обновить этот код с tensorflow 1 до tensorflow 2

#python #tensorflow

#python #tensorflow

Вопрос:

У меня есть следующий фрагмент кода:

 
    def _separable_conv(features, depth, kernel_size, depth_multiplier,
                        regularize_depthwise, rate, stride, scope):
      if activation_fn_in_separable_conv:
        activation_fn = tf.nn.relu
      else:
        activation_fn = None
        features = tf.nn.relu(features)
      return separable_conv2d_same(features,
                                   depth,
                                   kernel_size,
                                   depth_multiplier=depth_multiplier,
                                   stride=stride,
                                   rate=rate,
                                   activation_fn=activation_fn,
                                   regularize_depthwise=regularize_depthwise,
                                   scope=scope)
    for i in range(3):
      residual = _separable_conv(residual,
                                 depth_list[i],
                                 kernel_size=3,
                                 depth_multiplier=1,
                                 regularize_depthwise=regularize_depthwise,
                                 rate=rate*unit_rate_list[i],
                                 stride=stride if i == 2 else 1,
                                 scope='separable_conv'   str(i 1))
    if skip_connection_type == 'conv':
      shortcut = tf.Conv2D(inputs,
                             depth_list[-1],
                             [1, 1],
                             stride=stride,
                             activation_fn=None,
                             scope='shortcut')
      outputs = residual   shortcut
    elif skip_connection_type == 'sum':
      outputs = residual   inputs
    elif skip_connection_type == 'none':
      outputs = residual
    else:
      raise ValueError('Unsupported skip connection type.')

    return slim.utils.collect_named_outputs(outputs_collections,
                                            sc.name,
                                            outputs)

  

В последней строке мы используем модуль slim из tf.contrib, который устарел в tensorflow 2. Какие функции существуют в tensorflow 2 или иным образом для выполнения той же функции, что и строка slim.utils.collect_named_outputs?

Комментарии:

1. Лучший подход — импортировать tensorflow2 как tf, запустить код, проверить ошибки и исправить их.

2. Я бы попробовал сначала запустить их сценарий обновления. tensorflow.org/guide/upgrade

Ответ №1:

TF-slim теперь доступен как внешний пакет на Github, и он поддерживает Tensorflow 2. Библиотека обладает точно такой же функциональностью (включая этот метод!), У нее просто новый дом и другой способ установки.

В основных библиотеках нет кода Tensorflow 2, который может напрямую заменить ваш код.