Caffe

1

'da bir katman nasıl alınır Bir caffe.Net nesnesi verildiğinde, belirli bir katmana erişmenin en iyi yolu nedir? Eğer incelemek istersenizCaffe

for i in range(n_layers): 
    print net.layers[i].type 
+0

"belirli bir katmana erişme" ile tam olarak ne yapmaya çalışıyorsunuz? – Shai

+2

Hata ayıklama. Sadece katmanların bazı üye değişkenlerini incelemek istiyorum. Bu durumda – memecs

+0

, lütfen güncellenmiş yanıtıma bakın. – Shai

cevap

3

Elbette

all_names = [n for n in net._layer_names] 

bütün katmanları isimleri alması:
Şu anda sadece çok yararlı olmadığı, bunların üzerine yineleme nasıl anladım Öğrenilen parametrelerin değerleri, bu net surgery örneğinde nasıl yapıldığını görebilirsiniz. Eğer conv1 katmanın filtrelerinin kontrol etmek istiyorsanız Örneğin

, sen

In [1]: net.params['conv1'][0].data.shape 
Out[1]: (64, 3, 3, 3) 

Ve bu katmanın önyargı terimini erişebilirsiniz (eğer modelinde bu adı taşıyan bir katman var varsayarak)

In [2]: net.params['conv1'][1].data.shape 
Out[2]: (64,) 

Gördüğünüz gibi, bu, bir görüntü işleme ağının ilk katmanıdır, 3x3 BGR (3 kanal) girişi üzerinde hareket eden 64 filtreye sahiptir. Zaten net üzerinden veri verilecekse

net beslenen özel girdilere farklı katmanların yanıtları kontrol edilebilir (net.forward veya net.backward kullanılarak):

In [3]: net.blobs['conv1'].data.shape 
Out[3]: (1, 64, 198, 198) 

conv1 tabakanın çıktı şekli 64 kanallı (vardır, bu tabakada 64 filtreleri) ve de geriye doğru bir geçiş gerçekleştirilir ise parti boyutu da bu tabakanın hesaplanmış geçişlerini kontrol edilebilmektedir, 1.
olup ile 198x198 piksel:

In [4]: net.blobs['conv1'].diff.shape 
Out[4]: (1, 64, 198, 198) 
+0

Çabaya koyduğunuz için teşekkürler, ancak açıkça katmanları olmayan nesneleri nasıl tutacağımı sordum. Örneğin. Bloblara maruz kalmayan bazı dahili verilere erişmek istiyorum. – memecs

+0

@memecs hangi dahili veriler? katmanın parametreleri? daha spesifik olman gerekecek. Lütfen sorunuzu uygun şekilde güncelleyin, daha iyi yanıtlar alacaksınız – Shai