#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