7

Как рассчитать количество параметров в модели, например. LENET для mnist или ConvNet для модели imagent и т. Д. Есть ли какая-либо конкретная функция в кофе, которая возвращает или сохраняет количество параметров в модели. приветствуетколичество параметров в моделях Caffe LENET или Imagenet

+0

Посмотрите на net.params после того как вы загружены на CNN в переменную сети. Он содержит параметры (веса и смещения) для каждого слоя. – pir

+1

Знаете ли вы команду, использующую терминал для caffe. Однако я нашел фермулу. то есть фильтры x каналов x Kernel_Width x Kernel_Height + Bias's. Это даст вам параметры на одном уровне. аналогично для других. Однако мне нужна была какая-либо команда в кафе, использующая терминал, например. в matlab мы имеем numel (net.params), вы можете сказать. – khan

+1

Для этой функции есть открытый [запрос функции] (https://github.com/BVLC/caffe/issues/2507) в github caffe's. – Shai

ответ

1

Я могу предложить явный способ сделать это через интерфейс Matlab (сначала убедитесь, что матафф установлен). В основном вы извлекаете набор параметров из каждого сетевого уровня и считаете их. В Matlab:

% load the network 
net_model = <path to your *deploy.prototxt file> 
net_weights = <path to your *.caffemodel file> 
phase = 'test'; 
test_net = caffe.Net(net_model, net_weights, phase); 

% get the list of layers 
layers_list = test_net.layer_names; 
% for those layers which have parameters, count them 
counter = 0; 
for j = 1:length(layers_list), 
    if ~isempty(test_net.layers(layers_list{j}).params) 
    feat = test_net.layers(layers_list{j}).params(1).get_data(); 
    counter = counter + numel(feat) 
    end 
end 

В конце концов, 'Счетчик' содержит ряд параметров.

2

Вот питон фрагмент кода для вычисления количества параметров в модели Caffe:

import caffe 
caffe.set_mode_cpu() 
import numpy as np 
from numpy import prod, sum 
from pprint import pprint 

def print_net_parameters (deploy_file): 
    print "Net: " + deploy_file 
    net = caffe.Net(deploy_file, caffe.TEST) 
    print "Layer-wise parameters: " 
    pprint([(k, v[0].data.shape) for k, v in net.params.items()]) 
    print "Total number of parameters: " + str(sum([prod(v[0].data.shape) for k, v in net.params.items()])) 

deploy_file = "/home/ubuntu/deploy.prototxt" 
print_net_parameters(deploy_file) 

# Sample output: 
# Net: /home/ubuntu/deploy.prototxt 
# Layer-wise parameters: 
#[('conv1', (96, 3, 11, 11)), 
# ('conv2', (256, 48, 5, 5)), 
# ('conv3', (384, 256, 3, 3)), 
# ('conv4', (384, 192, 3, 3)), 
# ('conv5', (256, 192, 3, 3)), 
# ('fc6', (4096, 9216)), 
# ('fc7', (4096, 4096)), 
# ('fc8', (819, 4096))] 
# Total number of parameters: 60213280 

https://gist.github.com/kaushikpavani/a6a32bd87fdfe5529f0e908ed743f779

Смежные вопросы