Параметр initial_sparsity в sparsity.PolynomialDecay () TensorFlow 2.0, основанное на сокращении веса на основе величины - PullRequest
0 голосов
/ 31 января 2020

Я пробовал учебник TensorFlow 2.0 Обрезка веса на основе величины с помощью Keras и наткнулся на параметр initial_sparsity

import tensorflow_model_optimization as tfmot
from tensorflow_model_optimization.sparsity import keras as sparsity
import numpy as np

epochs = 12
num_train_samples = x_train.shape[0]
end_step = np.ceil(1.0 * num_train_samples / batch_size).astype(np.int32) * epochs
print('End step: ' + str(end_step))

pruning_params = {
      'pruning_schedule': sparsity.PolynomialDecay(initial_sparsity=0.50,
                                                   final_sparsity=0.90,
                                                   begin_step=2000,
                                                   end_step=end_step,
                                                   frequency=100)
}

В учебнике написано:

Используемый здесь параметр означает:

Разреженность PolynomialDecay используется во всем процессе обучения. Мы начинаем с уровня разреженности 50% и постепенно обучаем модель достижению разреженности 90%. X% разреженности означает, что X% весового тензора будет удалено.

Мой вопрос: разве вы не должны начинать с initial_sparsity , равной 0%, а затем обрезать 90% от веса?

Что означает начинать с initial_sparsity из 50%? Означает ли это, что 50% весов сначала сокращается, а затем достигается 90% разреженности сокращения?

Кроме того, для tfmot.sparsity.keras.ConstantSparsity API следующим образом:

pruning_params_unpruned = {
    'pruning_schedule': sparsity.ConstantSparsity(
        target_sparsity=0.0, begin_step=0,
        end_step = 0, frequency=100
    )
}

Инициализирует расписание сокращения с постоянной разреженностью.

Разреженность применяется в интервале [begin_step, end_step] каждые частотные шаги. На каждом применимом шаге разреженность (%) постоянна.

Означает ли это, что если модель нейронной сети уже находится на уровне разреженности 50%, но target_sparsity = 0,5 тогда будет выполнено расписание обрезки:

  1. Без обрезки, так как модель уже на уровне обрезки 50%
  2. Это дополнительно сокращает 50% от веса уже (50% обрезка) модель

Вы можете прочитать об этом в PolynomialDecay и в ConstantSparsity

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...