7

Wie die Anzahl der Parameter in einem Modell, z. LENET für Mnist oder ConvNet für Image-Modell usw. Gibt es in Caffe eine bestimmte Funktion, die die Anzahl der Parameter in einem Modell zurückgibt oder speichert? GrüßeAnzahl der Parameter in Caffe LENET- oder Imagine-Modellen

+0

Blick auf net.params, nachdem Sie die CNN in das Variable Netz geladen haben. Es enthält die Parameter (Gewichte und Verzerrungen) für jede Schicht. – pir

+1

Kennen Sie den Befehl mit Terminal für Caffe. Ich habe jedoch den Bauernhof gefunden. d. h. Filter x Kanäle x Kernel_Width x Kernel_Height + Bias. Dadurch erhalten Sie Parameter auf einer Ebene. ähnlich für andere. Jedoch brauchte ich irgendeinen Befehl in caffe unter Verwendung von Terminal, z. In Matlab haben wir numel (net.params) können Sie sagen. – khan

+1

Es gibt eine offene [feature request] (https://github.com/BVLC/caffe/issues/2507) bei Caffes Github für diese Funktionalität. – Shai

Antwort

1

Ich kann eine explizite Möglichkeit bieten, dies über die Matlab-Schnittstelle zu tun (stellen Sie sicher, dass das Matcaffe zuerst installiert ist). Grundsätzlich extrahieren Sie eine Gruppe von Parametern von jeder Netzwerkschicht und zählen sie. in 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 

Am Ende 'Zähler' enthält die Anzahl von Parametern.

2

Hier ist ein Python-Schnipsel die Anzahl der Parameter in einem Caffe Modell zu berechnen:

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

Verwandte Themen