Tensorflow Estimator: узкие места в кэше - PullRequest
0 голосов
/ 29 августа 2018

При выполнении учебника по классификации изображений с тензорным потоком сначала кешируется узкое место каждого изображения:

def: cache_bottlenecks ())

Я переписал тренинг, используя тензор потока Estimator. Это действительно упростило весь код. Однако я хочу кешировать узкие места здесь.

Вот мой model_fn. Я хочу кешировать результаты слоя dense, чтобы я мог вносить изменения в фактическую тренировку без необходимости каждый раз вычислять узкие места.

Как мне это сделать?

def model_fn(features, labels, mode, params):
    is_training = mode == tf.estimator.ModeKeys.TRAIN

    num_classes = len(params['label_vocab'])

    module = hub.Module(params['module_spec'], trainable=is_training and params['train_module'])
    bottleneck_tensor = module(features['image'])

    with tf.name_scope('final_retrain_ops'):
        logits = tf.layers.dense(bottleneck_tensor, units=num_classes, trainable=is_training)  # save this?

    def train_op_fn(loss):
        optimizer = tf.train.AdamOptimizer()
        return optimizer.minimize(loss, global_step=tf.train.get_global_step())

    head = tf.contrib.estimator.multi_class_head(n_classes=num_classes, label_vocabulary=params['label_vocab'])

    return head.create_estimator_spec(
        features, mode, logits, labels, train_op_fn=train_op_fn
    )

1 Ответ

0 голосов
/ 19 сентября 2018

TF не может работать при кодировании. Вы должны:

  1. Экспорт узкого места в файл из необработанной сети.
  2. Используйте результат узких мест в качестве входных данных, используйте другую сеть для обучения ваших данных.
...