Рассчитать количество параметров в нейронной сети - PullRequest
0 голосов
/ 05 августа 2020

Мне интересно, изменится ли количество параметров в таких моделях, как ResNet18, Vgg16 и DenseNet201, если мы изменим размер ввода для модели?

Я измерил количество параметров с помощью следующей команды

pytorch_total_params = sum(p.numel() for p in model.parameters() if p.requires_grad)

Кроме того, я пробовал этот фрагмент, и количество параметров не изменилось для другого размера ввода

import torchvision.models as models
model= models.resnet18(pretrained = False)
model.cuda()
summary(model, (1,64,64))

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Перемещаемые параметры не меняются при изменении ввода. Если вы видите веса в первом слое модели с помощью команды list(model.parameters())[0].shape, вы можете понять, что они не зависят от высоты и ширины ввода, а зависят от количества каналов (например, Gray, RGB, HyperSpectral) , что обычно очень незначительно в больших моделях. Для получения дополнительной информации о получении формы ввода вы можете увидеть этот пример игрушки .

1 голос
/ 05 августа 2020

Нет, не будет. Параметры модели предназначены для обработки входных данных по мере их распространения внутри сетевого конвейера.

Параметры в основном обучаются для выполнения своей цели, которая определяется задачей обучения. Рассмотрим увеличение количества параметров на основе ввода? Каковы были бы их ценности? Будут ли они случайными? Как эти новые параметры с новыми значениями повлияют на вывод модели?

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

...