Что делает model.compile() в keras tensorflow?

#python #tensorflow #keras

#python #tensorflow #keras

Вопрос:

Согласно keras.io:

Как только модель создана, вы можете настроить модель с потерями и метриками с помощью model.compile().

Но это объяснение не дает достаточной информации о том, что именно делает компилируемая модель.

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

1. Добро пожаловать в SO. Вы, кажется, прочитали документацию для класса model, но у model.compile есть своя документация , с которой вам следует ознакомиться. После этого, пожалуйста, ознакомьтесь с одним из примеров, подобных этому .

Ответ №1:

Настраивает модель для обучения. Документация

Лично я бы не назвал это компиляцией, потому что то, что он делает, не имеет ничего общего с компиляцией в терминах информатики, и это очень сбивает с толку / ошеломляет, когда думаешь о машинном обучении и компиляции одновременно.

Это просто метод, который выполняет настройку:

Он просто устанавливает аргументы, которые вы ему передаете: оптимизатор, функция потерь, показатели, быстрое выполнение. Вы можете запускать его несколько раз, он просто перезапишет настройки, которые вы установили ранее.

Мое предложение разработчикам TensorFlow было бы переименовать его в configure в краткосрочной перспективе, и, возможно, в будущем (не так важно), перейти на использование 1 установщика (или использовать шаблон factory / builder) для каждого аргумента конфигурации.

Вот код для этого:

     base_layer.keras_api_gauge.get_cell('compile').set(True)
    with self.distribute_strategy.scope():
      if 'experimental_steps_per_execution' in kwargs:
        logging.warn('The argument `steps_per_execution` is no longer '
                     'experimental. Pass `steps_per_execution` instead of '
                     '`experimental_steps_per_execution`.')
        if not steps_per_execution:
          steps_per_execution = kwargs.pop('experimental_steps_per_execution')

      self._validate_compile(optimizer, metrics, **kwargs)
      self._run_eagerly = run_eagerly

      self.optimizer = self._get_optimizer(optimizer)
      self.compiled_loss = compile_utils.LossesContainer(
          loss, loss_weights, output_names=self.output_names)
      self.compiled_metrics = compile_utils.MetricsContainer(
          metrics, weighted_metrics, output_names=self.output_names)

      self._configure_steps_per_execution(steps_per_execution or 1)

      # Initializes attrs that are reset each time `compile` is called.
      self._reset_compile_cache()
      self._is_compiled = True

      self.loss = loss or {}  # Backwards compat.
  

Ответ №2:

model.compile связан с обучением вашей модели. На самом деле, ваши веса необходимо оптимизировать, и эта функция может их оптимизировать. Таким образом, чтобы ваша точность make увеличилась. Это был всего лишь один из входных параметров, называемых ‘optimizer’.

 model.compile(
optimizer='rmsprop', loss='sparse_categorical_crossentropy', metrics='acc'
)
  

Это основные входные данные. Также вы можете найти более подробную информацию в документации TensorFlow по ссылке ниже:

https://www.tensorflow.org/api_docs/python/tf/keras/Model#compile