Ваш вопрос немного двусмысленный, но позвольте мне попытаться ответить на него.
Обычно в сверточном слое мы устанавливаем количество фильтров как число out_channels
. Но это не так просто. Давайте обсудим на примере, который вы привели.
Каковы параметры сверточного слоя?
model = BasicCNN()
for name, params in model.named_parameters():
if 'conv' in name:
print(name, params.size())
Выход:
conv1.weight torch.Size([6, 3, 5, 5])
conv1.bias torch.Size([6])
conv2.weight torch.Size([16, 6, 5, 5])
conv2.bias torch.Size([16])
Объяснение
Давайте рассмотрим слой conv1
в приведенной выше модели. Можно сказать, что существует 6 фильтров формы 5 x 5
, потому что мы выбрали 2d Convolution. Так как количество входных каналов равно 3, то общее количество ядер составляет 6 x 3 = 18
.
Здесь входные данные этой модели являются 3D-подобными изображениями. Вы можете рассмотреть, у нас есть изображения с формой W x H
и есть 3 канала (RGB) для изображений. Таким образом, мы можем подать в эту модель трехмерные тензоры, представляющие изображения.
Теперь вернемся к вашему вопросу: «Как мне легко создать множество фильтров, указав их количество? Например, 100 фильтров». Если вы хотите просто использовать 100 фильтров на входной канал, просто установите 100 в conv1
вместо 6
. Это обычно то, что люди делают в компьютерном зрении!
Но вы определенно можете изменить архитектуру в соответствии со своими потребностями и определить наилучшие настройки.