21

Alt ve üst blobun aynı olması için Caffe'nin bellek tüketimini korumak için "yerinde" hesaplama yapmasını söyleyebiliriz.Caffe'de yerinde katmanlar ne zaman kullanılır?

Şu anda yerinde güvenli bir şekilde "BatchNorm", "Scale" ve "ReLU" katmanlarını kullanabileceğimi biliyorum (yanılıyorsam lütfen bana bildirin). Diğer katmanlar için bazı sorunlar var gibi görünmekle birlikte (this issue bir örnek gibi görünüyor).

Caffe'de yerinde katmanlar ne zaman kullanılır?
Geri yayılma ile nasıl çalışır?

+0

Ödül için teşekkürler. Umarım sizin için bir şeyleri temizler. – Shai

+0

@Shai cevap için teşekkürler, kesinlikle yardımcı olur! – dontloo

cevap

9

Belirttiğiniz gibi, yerinde bulunan katmanlar genellikle "kutudan çıkar" durumunda değildir.
Bazı katmanlar için oldukça önemsizdir ("ReLU" ve diğer nöron aktivasyon katmanları).
Ancak, diğerleri için kodda özel işlem gerektirir. Örneğin, "PReLU" katmanının uygulanması, backprop için gerekli bilgileri depolayan belirli bir önbellek bottom_memory_ üye değişkenine sahiptir.
Katmanın bir "yerinde" durumunda kullanıldığını görmek için if (top[0] == bottom[0]) için özel olarak test eden diğer katmanlar için benzer kod görebilirsiniz.

Ayrıca, giriş ve çıkış, böylece, farklı şekillerde, örneğin "Convolution", "InnerProduct" olarak, "Pool" "yerinde" tabakalar için adaylar olarak kabul edilmez tabakalar olan bir yerinde tabakasına sahip çok az anlamlıdır.

+0

Teşekkürler. BatchNorm katmanı için yerinde "True" ve "in-place = False" hakkında ne dersiniz? Bazen, BatchNorm katmanı için kağıtları yerinde-yanlış = gördüm. Bu dava için herhangi bir faydamız var mı? – user8264

+0

@ user8264 BatchNorm katmanının iç kısmına aşina değilim, bu yüzden yorum yapamam. Bazen yerinde kullanmak biraz daha fazla hesaplama gerektirir (alandan tasarruf etmek için) ... 'in_place = False' değerini belirten kişiye sormanız gerekir ... – Shai

İlgili konular