Внедрение Dense Sparse Dense обучение в Керасе - PullRequest
0 голосов
/ 28 октября 2019

Я хочу реализовать DSD: Тренинг Dense-Sparse-Dense для глубоких нейронных сетей , Han et al. Короче говоря, в статье предлагается следующая схема обучения для повышения точности сети:

  1. Обучайте сеть как обычно, пока она не сходится.
  2. Сократите сеть и обучите с ограниченным ограничением. Это достигается путем удаления процента от общего веса ближе к 0 в абсолютных значениях. Эти веса будут полностью сокращены, что не повлияет на вычисления в прямом или обратном проходе.
  3. После обучения разреженной сети восстановите сокращенные веса с помощью 0 и обучите модель с 1/10 исходной скорости обучения, так какРазреженная модель уже находится на хороших локальных минимумах.
  4. Прибыль. Скорее всего, вы добились лучшего достижения Net.

Вопрос касается процесса обрезки. Примеры Tensorflow и Keras, такие как this и this , включают только обрезку, но не восстановление этих весов снова. Эти подходы предназначены для сжатия моделей. Таким образом, лучший способ реализовать DSD - пренебречь соответствующими весами (они близки к 0, как наше ограничение разрежения в процентах) и не допускать их прямого прохода или обратного распространения. Существует этот аналогичный вопрос, спрашивающий, может ли ручная установка весов на ноль с обратными вызовами после каждого прохода вперед или назад может помочь, но там также утверждается, что веса получают обновления, тем не менее.

TL; DR. Есть ли какой-либо способ в tf или keras, который бы отображал выбранные веса, не влияя на проход вперед или назад. Буквально, как будто они даже не существуют.

Спасибо.

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