Обрезка кераса: установка весов в ноль не ускоряет вывод? - PullRequest
0 голосов
/ 30 января 2020

Я пишу алгоритм сокращения для tf.keras, который просто удаляет самый низкий x процентиль весов из слоя / фильтра. Чтобы сделать это, я попытался установить значение весов, чтобы сократить до нуля. Прочитав другие источники, у меня сложилось впечатление, что это имеет тот же эффект, что и «удаление» веса из сети, но даже если я установлю все веса в сети равными нулю, никакого уменьшения времени вывода не будет замечено.

Если бы я гипотетически установил все веса в слое на ноль, код был бы следующим:

    flat_weights = np.array(self.model.layers[layer_index].get_weights()[0]).flatten()

    weight_index = 0 
    for weight in flat_weights:
        #if weight < self.delta_percentiles[index]:
        flat_weights[weight_index] = 0
        weight_index += 1

    weights[0] = np.reshape(flat_weights, original_shape)
    weights[1] = np.zeros(np.shape(weights[1]))

    self.model.layers[index].set_weights(weights)

Теоретически, время вывода модели, сокращенной таким образом, должен уменьшиться, но никаких изменений не найдено. Я правильно обрезаю?

1 Ответ

1 голос
/ 30 января 2020

Установка веса на ноль - это то же самое, что и удаление веса, так как тогда сеть будет функционально эквивалентна, если у вас будет та же архитектура, но с теми же весами и одним меньшим количеством нейронов в этом слое. Вы получите те же прогнозы.

Но, как вы заметили, это не влияет на производительность вычислений. Чтобы время вычислений изменилось, вам нужно будет определить новую сеть с одним меньшим весом, а затем загрузить веса из другой архитектуры. Теперь вы представляете, что сделать это нелегко, и именно поэтому мы обычно не делаем это для оценки, так как хотим выяснить, как изменяется прогнозирующая производительность (например, точность или среднеквадратическая ошибка) при сокращении веса.

Таким образом, чтобы получить вычислительные преимущества сокращения, вам нужно сделать гораздо больше, чем просто установить веса на ноль.

...