11

Caffe'de, semantik segmentasyon için bir Tam Convolution Network'ü uygulamaya çalışıyorum. Caffe | solver.prototxt değerler ayarlama stratejisi

o bağlıdır mu

  • test_interval

    • test_iter
    • iter_size
    • max_iter: Aşağıdaki hiper parametrelere 'solver.prototxt' değerlerini kurmak için belirli bir strateji olduğunu merak Eğitim setiniz için sahip olduğunuz görüntülerin sayısı? Öyleyse nasıl? Sahip olduğunuz eğitim örnekleri toplam sayısı, haydi

      1. Eğitim seti boyutu:

  • +0

    Başka bir meta parametre, weight_decay'dir. Bunu nasıl ayarlayacağınıza [bu konu] (http://stackoverflow.com/q/32177764/1714410) bakın. – Shai

    cevap

    28

    anlamlı bir şekilde bu değerleri ayarlamak için, size verilerle ilgili bilgilerin birkaç bit olması gerekir Bu miktarı T olarak adlandırın.
    2. Toplu iş boyutu boyutu tek bir toplu işlemde birlikte işlenen eğitim örneklerinin sayısı, bu genellikle 'train_val.prototxt''daki giriş veri katmanı tarafından ayarlanır. Örneğin, this file'da tren grubu boyutu 256 olarak ayarlanmıştır. Bu miktarı tb ile gösterelim.
    3. Doğrulama seti boyutu modelinizi doğrulamak için bir kenara koyduğunuz toplam örnek sayısı, hadi bunu V ile belirtelim.
    4. Doğrulama kümesi boyutu değeri, TEST aşaması için batch_size olarak ayarlanmıştır. this example'da 50'ye ayarlanmıştır. Buna vb diyelim.

    Şimdi, antrenman sırasında, ağınızın her zaman bir arada performansının önyargılı bir tahminini almak istersiniz. Bunu yapmak için, ağınızı test_iter yinelemeleri için doğrulama kümesinde çalıştırırsınız. Doğrulama setinin tamamını kapsayacak şekilde test_iter = V/vb olmalıdır.
    Bu tahmini ne sıklıkla almak istersiniz? Bu gerçekten sana bağlı. Çok büyük bir doğrulama setiniz ve yavaş bir ağınız varsa, çok sık onaylanmak eğitim sürecini çok uzun sürebilir. Öte yandan, yeterince doğru bir şekilde doğrulanmamak, antrenman sürecinizin ne zaman ve ne zaman bir araya gelip gelmediğini fark etmenizi engelleyebilir. test_interval, hangi sıklıkla doğruladığınızı belirler: genellikle büyük ağlar için test_interval değerini 5K olarak ayarladığınızda, daha küçük ve daha hızlı ağlar için daha düşük değerler seçebilirsiniz. Yine hepsi size kalmış.

    Tüm antrenman setini (“epoch” işlemini tamamlamak) tamamlamak için T/tb yinelemelerini çalıştırmanız gerekir. Genellikle birkaç dönem için bir tren, bu nedenle max_iter=#epochs*T/tb.

    iter_size ile ilgili olarak: Bu, çeşitli eğitim mini partileri üzerinde ortalama gradyanlara izin verir, bkz. this thread daha fazla bilgi.

    +2

    Çok teşekkür ederim! Çok şey temizlendi :) –

    +0

    @Shai - Detaylı örnek için teşekkür ederiz. Hala AlexNet ile Caffe' kullanım durumumdan dolayı kafam karıştı. 115GB belleğe sahip bir sistemim var ve LMDB'de "ImageNet ILSVRC 2012" den "train" ve "val" veri setlerini kullanıyorum. [Bu çözümleyici dosyasını] kullanıyorum (https://github.com/intel/caffe/blob/master/models/intel_optimized_models/alexnet/solver.prototxt) 'max_iteration = 100' dışında tüm parametrelerle birlikte.Bellek tüketiminin neden yaklaşık 10GB olduğunu anlayamıyorum? 'Caffe', tam veri yerine görüntülerin yığınında çalıştığı için daha küçük olmalıdır. Bu hesaplamanın nasıl yapıldığı hakkında bir fikrin var mı? –

    +0

    @ChetanArvindPatil, modelin parametreleri için depolama gereksinimlerini ve tren/val hesaplama için RAM kullanımını karıştırıyor gibi görünüyor. Caffe hafızada depolar ** tüm parametreler ** + türevleri, ayrıca veri ** (tren/val partileri) ve türevleri (backprop için) depolar. Bazı çözücüler, her bir parametreye göre ayarlanabilir öğrenme oranı için ek depolama alanı gerektirir (ör. "Adam"). Tüm bunlar kesinlikle çok fazla RAM gerektirebilir. Bakınız örn. [bu konu] (https://stackoverflow.com/q/36526959/1714410) – Shai