Tensorflow удаляет слои из предварительно обученной модели - PullRequest
0 голосов
/ 28 августа 2018

Есть ли способ загрузить предварительно обученную модель в Tensorflow и удалить верхние слои в сети? Я смотрю на выпуск Tensorflow r1.10

Единственная документация, которую я смог найти - tf.keras.Sequential.pop https://www.tensorflow.org/versions/r1.10/api_docs/python/tf/keras/Sequential#pop

Я хочу вручную обрезать предварительно обученную сеть, удалив кучу верхних слоев свертки и добавив пользовательский полностью извилистый слой.

EDIT:

Модель ssd_mobilenet_v1_coco, загруженная с Tensorflow Model Zoo . У меня есть доступ как к файлу модели frozen_inference_graph.pb, так и к файлу контрольных точек.

У меня нет доступа к коду Python, который используется для построения модели.

Спасибо.

1 Ответ

0 голосов
/ 28 августа 2018

С проверка кода , SSDMobileNetV1FeatureExtractor.extract_features перенаправления research.slim.nets:

  from nets import mobilenet_v1  # nets will have to be on your PYTHONPATH

with tf.variable_scope('MobilenetV1',
                       reuse=self._reuse_weights) as scope:
  with slim.arg_scope(
      mobilenet_v1.mobilenet_v1_arg_scope(
          is_training=None, regularize_depthwise=True)):
    with (slim.arg_scope(self._conv_hyperparams_fn())
          if self._override_base_feature_extractor_hyperparams
          else context_manager.IdentityContextManager()):
      _, image_features = mobilenet_v1.mobilenet_v1_base(
          ops.pad_to_multiple(preprocessed_inputs, self._pad_to_multiple),
          final_endpoint='Conv2d_13_pointwise',
          min_depth=self._min_depth,
          depth_multiplier=self._depth_multiplier,
          use_explicit_padding=self._use_explicit_padding,
          scope=scope)

Функция mobilenet_v1_base принимает аргумент final_endpoint. Вместо того, чтобы обрезать построенный граф, просто построите граф до нужной конечной точки.

...