Я пишу алгоритм обрезки для 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)
Теоретически время вывода модели, урезанной таким образом, должно уменьшиться, но никаких изменений не происходит. Правильно ли я обрезаю?