‫Ne kadar heyecan verici değil mi?
‫Görüntülerimizi zamanlara, etiketlerimizi zamanlara yerleştirmek, verilerimizi hazırlamak, TensorFlow hub'ında bir model
‫seçmek için mücadele etmekten çok yol kat ettik.
‫Model geri çağrıları oluşturma.
‫Sonunda ilk derin öğrenme modelimizi eğitmeye hazır olduğumuz aşamaya geldik.
‫Öyleyse bir başlık eğitimi, bir model oluşturalım.
‫Şimdi bir veri alt kümesi koyacağız, çünkü verilerimizi ayırdığımız zamanı hatırlarsanız,
‫sadece 1000 görüntü üzerinde eğitime başlayacağız çünkü bunu neden yapmak istiyoruz?
‫Şuraya geçelim.
‫İlk modelimiz, her şeyin çalıştığından emin olmak için yalnızca 1000 görüntü üzerinde eğitilecek.
‫Biz de bunu yapmaya çalışıyoruz.
‫Deneyler arasındaki süreyi en aza indirmeye çalışıyoruz.
‫Bu nedenle, tüm bu kodun kırılabileceğinden emin olmak için verilerin bir alt kümesiyle başlıyoruz.
‫Değil mi?
‫Bu yüzden 10.000 görüntü üzerinde uzun süre eğitim yapmadan önce çalıştığından emin olmak istiyoruz çünkü bin görüntü üzerinde
‫eğitim yapmak 10.000 görüntü üzerinde eğitim yapmaktan çok daha hızlı olacaktır.
‫Ve bunu 100.000 görüntüye veya görüntü durumunda net 14'e çıkardığınızda da aynı şeyin geçerli olduğunu hayal
‫edebilirsiniz. 2 milyon.
‫Yani tanımlamamız gereken bir değişken daha var.
‫Bir modeli eğitmeye başlamadan önce, bu epok sayısıdır.
‫Epok sayısı, modelimizin kaç veri geçişi yapmasını istediğimizi belirtir.
‫Ve bir geçiş, tahmin edebileceğiniz gibi, modelimizin her bir köpek görüntüsündeki desenleri bulmaya ve hangi desenlerin her bir
‫etiketle ilişkili olduğunu görmeye çalışmasına eşdeğerdir.
‫Buradan num çağlarına geçelim.
‫100'e eşittir.
‫Ve burada harika bir şey yapacağız.
‫Harambe'nin önünde olduğu gibi küçük bir kaydırıcı oluşturacağız.
‫Ardından kaydırıcı tipi oluşturacağız ve ardından minimum on, maksimum 100 ve ardından adım on
‫olabilir.
‫Şuna bak.
‫Ne kadar havalı değil mi?
‫Yani on dönem yapmak isteseydik, on dönem yapabilirdik.
‫Ancak 100'e bağlı kalacağız çünkü erken durdurma çağrımız var ve tüm bunları bir saniye
‫içinde iş başında göreceğiz.
‫Ama esasen bir eğitim kartı ne yapacak?
‫Açılış konuşmamıza geri dönersek, bir epok, modelimize tüm eğitim verilerine bakması için tek bir şans
‫vermek ve ardından oradan doğrulamak olacaktır.
‫100 dönem.
‫Yani modelimize eğitim veri setini inceleyip kalıpları bulması için 100'e kadar şans veriyoruz.
‫Yani pas ne ise o olacak.
‫Bu katmanlardan geçecek.
‫Eğitim görüntülerimizi modelimize aktaracağız.
‫Bu katmanlardan geçecek.
‫Ve sonra modelimiz, kalıpları öğrendikçe, hangi etiketin hangi görüntüye ait olduğuna dair tahminlerde bulunacaktır.
‫Ve tahmin ne kadar kötü olursa, kayıp da o kadar yüksek olacaktır.
‫İşte Adam burada devreye giriyor.
‫Uluslararası Tepe İnişi Şampiyonası'nda tepenin aşağısındaki adamın modelimize her dönem
‫tahminlerini nasıl geliştirebileceğini söylediğini hatırlayın.
‫Ve sonra modelimizin doğruluk düzeyinde nasıl olduğunu göreceğiz, çünkü tepenin dibinde modelimizin
‫ne kadar iyi performans gösterdiğini izleyen bir seyirci hakemimiz var.
‫Tekrar ediyorum, tüm bunlar mantıklı gelmiyorsa, bir model çalıştırmaya başladığımızda daha mantıklı
‫gelecektir.
‫Son bir kontrol daha yapalım.
‫GPU kullandığımızdan emin olmak için son bir kez daha kontrol ediyoruz çünkü GPU kullanmıyorsak, modelimizi görüntüler
‫üzerinde eğitmek çok çok uzun zaman alacaktır.
‫GPU'nun kodumuzu 30 kata kadar, bazen de daha fazla hızlandırabileceğini en başta görmüştünüz.
‫Hadi şu kodu yazalım.
‫Hala bir JPG görünümü üzerinde çalıştığımızdan emin olmak için kontrol edin.
‫Bas o zaman.
‫GPU.
‫Mevcut.
‫Sonra da gideceğiz.
‫Evet.
‫TPH yapılandırması fiziksel cihazları listeliyorsa.
‫Ve sonra cpu'yu kontrol etmek istiyoruz.
‫Mevcut değil.
‫Yani bu sadece yukarıda yazdığımız kodun aynısı.
‫Ancak bunu kayda değer bir süre içinde çalıştırabilmek için bir GPU'ya ihtiyacımız var.
‫Evet.
‫Burayı da kontrol edebilirdik.
‫Unutmayın, bu küçük bir kısayol numarası.
‫Ama bu baskıyı burada görmeyi seviyorum.
‫Şimdi.
‫Bum.
‫Çalışan bir GPU'muz var, bir dizi epok ayarladık.
‫Bir modeli eğiten basit bir fonksiyon oluşturalım.
‫Bunu buraya yazalım.
‫Bir modeli eğiten bir fonksiyon oluşturalım.
‫Ve işlev create model kullanarak bir model oluşturacaktır.
‫Ve sonra gidip bir gerilim panosu geri çağırması ayarlamak istiyoruz.
‫Tensör panosu fonksiyonumuzu kullanarak.
‫Öyleyse C'yi yaratın.
‫İşte bu noktada işlevler yaratmak bizim için gerçekten önemli hale geldi.
‫Aksi takdirde geçici kod yazmamız gerekirdi, ancak başlangıçta fonksiyon yazmak biraz daha uzun sürer, ancak
‫uzun vadede bize zaman kazandırır.
‫Ara o zaman.
‫Modelimizdeki fit fonksiyonu, eğitim verilerini doğrulama verilerine geçirir.
‫Eğitilecek epok sayısı.
‫Bu bir çiçek hastalığı değil.
‫Bunu sadece hasta küçük kaydırıcımızla ve kullanmak istediğimiz yardımcı fonksiyonlarımız olan geri aramalarla
‫tanımlıyoruz.
‫Ve son olarak modeli döndürmesini istiyoruz.
‫Bunu markdown olarak değiştireceğiz.
‫Bu olağanüstü görünüyor.
‫Tamam, şuraya gidelim.
‫Eğitilmiş bir modeli eğitmek ve döndürmek için bir işlev oluşturun.
‫İşte buradayız.
‫Def treni.
‫Sonunda bu noktaya geldiğimize inanamıyorum.
‫Bu inanılmaz.
‫İlk derin öğrenme ve sinir ağımızı eğitiyoruz.
‫Böylece eğitilen model verilir ve eğitilmiş versiyonu döndürür.
‫Güzel ve basit.
‫Unutmayın, heyecanlanıyor olmamız iletişim alışkanlıklarımızı kaybettiğimiz anlamına gelmez.
‫Bu yüzden bir model oluşturacağız.
‫Yani eşit modellere gidiyoruz.
‫Diyelim ki, model oluşturma işlevimiz burada devreye giriyor.
‫Evet, bunu yazmak çok tatmin edici.
‫Ve sonra bir modeli her eğittiğimizde yeni bir gergin tahta oturumu oluşturuyoruz.
‫Çünkü unutmayın, tensör panomuzla, tensör panosu geri çağrımızla, aslında sadece bu tensör panosunu çağıracağız.
‫Orada geri aramaya ihtiyacımız yok.
‫İşlevimizi ayarladık.
‫Dolayısıyla, her çağrıldığında buraya geri dönersek, günlüklerde geçerli tarih saatiyle yeni bir klasör oluşturacaktır.
‫Bu önemlidir çünkü modeli eğit işlevimizi her çalıştırdığımızda, yani yeni bir modeli, yeni
‫bir deneyi her eğitmeye çalıştığımızda, modelimizin performansını izleyebileceğimiz bir günlükler klasörü oluşturuyoruz.
‫Bu, daha sonra hangi deneyin diğerinden daha iyi sonuç verdiğini değerlendirmeye
‫çalıştığımızda gerçekten yararlı bir şeydir ve ardından modeli, oluşturduğumuz geri aramalarla geçen verilere uydururuz.
‫Şimdi yine, bu işlevi yapmanın muhtemelen daha iyi bir yolu var, ancak biz sadece çalışmasını sağlamaya
‫çalışıyoruz ve daha sonra bir modeli ilk kez uydurma aşamasından geçtikten sonra geri dönebilir
‫ve onu iyileştirebiliriz.
‫O halde modele uyalım ve geçelim.
‫X, hatırlarsanız, görüntüleri ve etiketleri içeren bir veri yığını olan eğitim verilerine eşittir.
‫Yani epochs, num epochs a olacak. k. a.
‫Modelimizin durmadan önce eğitim verilerine kaç kez bakmasına izin verilir?
‫Ya da modelimiz kalıpları bulmak için tüm eğitim veri setini ve ardından doğrulama verilerini geçmek için
‫kaç şansa sahipti?
‫VAL verisi olacak, bu da bir veri grubu veya veri yığınıdır.
‫Özür dilerim.
‫Doğrulama sıklığı ise modelimizin bulduğu kalıpları doğrulama setimizde ne sıklıkla test etmek istediğimizdir.
‫Ve bunu bir olarak ayarlıyoruz çünkü eğitim setinde bulduğu kalıpları her epokta doğrulama verisi
‫üzerinde test etmesini istiyoruz.
‫Yani bir epoch'ta bir kez ve sonra geri çağrılarımız, yukarıda fonksiyonumuz ve erken durdurma ile oluşturduğumuz
‫on to board'dur.
‫Woohoo.
‫Ve sonra modeli geri getirip biraz koymak istiyoruz.
‫Uyumlu modeli döndürür.
‫Ne kadar havalı değil mi?
‫Ve şimdi modelimizi verilere basit bir şekilde uydurabiliriz.
‫Model eşittir tren modeli.
‫Fonksiyon oluşturmanın faydalarını görüyorsunuz, böylece daha sonra bir sürü farklı deney yaptıktan sonra bu fonksiyonu
‫çalıştırabiliriz.
‫Peki hazır mısın?
‫Şimdi, burada küçük bir haber var.
‫Bir modeli ilk kez eğitirken, özellikle görüntü verileri veya başka herhangi bir tür
‫büyük ölçekli veri üzerinde, ilk epok genellikle diğerlerine kıyasla en uzun sürer.
‫Bunun nedeni, yazdığımız fonksiyonların verileri alması ve ilklendirilmiş olmasıdır.
‫Yani verileri GPU'muzun belleğine yüklüyoruz.
‫Şimdi daha fazla veri kullanmak genellikle daha uzun sürecektir, bu yüzden 1000 resimle başladık.
‫Ve böylece ilk çağdan sonra.
‫Doğru.
‫100'de sınırlandırılacak şekilde ayarladık.
‫İlki birkaç dakika sürebilir.
‫İlk epoktan sonra, sonraki bir epok sadece birkaç saniye sürmelidir.
‫Yani hazırsın.
‫Bunu birlikte yapacağız.
‫Parmaklar çapraz.
‫Tüm fonksiyonlarımız, çünkü bu aslında buradaki birkaç satır koda bağlıdır.
‫Diyelim ki işe yaradı, 3'e 1.
‫Oh, şuna bak.
‫Mobil ağ v2 ile bir model oluşturma.
‫Parmaklarımı çapraz tuttum.
‫Umarım sen de öyle yaparsın.
‫Oh, evet.
‫Başlıyor.
‫Gördün mü?
‫İşte oldu.
‫Çağ 100'de 1.
‫Çünkü epochs 100 olarak ayarlanmıştır.
‫Bu yüzden 25 adım için eğitilecek, bu da bizim parti boyutumuz anlamına geliyor.
‫Yani eğer gidersek, eğitim setimizde 800 görüntü var çünkü 1000 ile başladığımızı hatırlayın.
‫Yani bunu 32'ye bölersek 25 elde ederiz.
‫Bu yüzden eğitim 25 adımdır çünkü yığın boyutu 32 ve doğrulama vardır.
‫Eğer 200'ü 32'ye bölersek, yukarı yuvarlayacaktır.
‫Yani yediye yuvarladı.
‫İşte bu yüzden doğrulamamız var.
‫Yani bir lisans için 200 resim 32 eder.
‫Ve şuna bir bak.
‫İşte oldu.
‫Yaklaşık 5 dakika sonra.
‫İşte kayıpla ilgili olarak bahsettiğim şey de bu.
‫Şimdi tüm bu yarattığımız şeyler burada.
‫Yani kayıp.
‫Bu yüzden amacımız kaybı en aza indirmektir.
‫Çünkü tepenin zirvesindeyiz.
‫Yükseklikten korkarız.
‫Tepenin dibine gitmek istiyoruz.
‫Kayıp fonksiyonunu minimize etmek mi istiyorsunuz?
‫Kayıp tepenin yüksekliğidir.
‫Buraya geliyoruz.
‫Umarım bu sayı düşer.
‫Ama doğruluğu en üst düzeye çıkarmak istiyoruz.
‫Modelimizin eğitilip eğitilmediğini bu şekilde anlayacağız.
‫Eğer kalıpları öğreniyorsa, bu kayıp azalmalı ve bu doğruluk artmalıdır.
‫Bu yüzden ilk dönemi atlatmak birkaç dakika sürecektir.
‫İlk dönemi atlatana kadar bekleyeceğim.
‫Bu yüzden videoyu hızlandıracağım ve ilk dönemi geçtikten sonra görüşeceğiz çünkü bundan
‫sonraki dönemleri de göreceksiniz.
‫GPU kullandığımız için 100 üzerinden ikinci dönem oldukça hızlı olacaktır.
‫İlkinin biraz zaman almasının tek nedeni, tüm bu görüntüleri GPU belleğine yüklemek zorunda olmasıdır.
‫Sizi hemen göreceğim, ama benim için yaklaşık 3 dakika olacak.
‫Pekala, geri döndüm.
‫Burada Tahmini Varış Zamanı anlamına gelen bir ETA'mız var.
‫Her şey planlandığı gibi gittiği sürece, bu ilk dönemin bitmesine yaklaşık 12 saniye kaldı.
‫Böylece kaybın biraz azaldığını ve doğruluğun arttığını görebilirsiniz.
‫Yani bu iyi bir şey.
‫Şimdi, bu ilk epoğun sonunda görmemiz gereken şey, eğer doğru bir şekilde yerleştiysek, bunun eğitim setindeki
‫kayıp ve eğitim setindeki doğruluk olduğunu görmeliyiz.
‫Doğrulama verilerindeki kaybı ve doğrulama setindeki doğruluğu her an görebiliriz.
‫O yüzden bekliyoruz.
‫Muhtemelen şu anda yaptığı şey 12 saniyeden biraz daha uzun bir süre oldu, ancak doğrulama verilerini
‫belleğe yüklüyor, böylece bu veri setinde nasıl performans gösterdiğini hesaplayıp değerlendirebiliyor.
‫Bunu yaptığımıza inanamıyorum.
‫Gerçek zamanlı olarak birlikte bir modeli eğitiyoruz.
‫Bu olağanüstü.
‫Bunu daha önce hiç yapmamıştım.
‫Kodunuz çalıştığı sürece bu böyledir.
‫İşte başlıyoruz.
‫Şuna bir bak.
‫Şimdi elimizde bu var.
‫Bahsettiğim şey, bu metriğin eğitim verisi üzerinde, bu metriğin de doğrulama verisi üzerinde olmasıydı.
‫Doğruluğumuzun ne kadar hızlı geliştiğini görün.
‫Şimdi, size çağların hızlanacağını söylemiştim.
‫Şuna bak.
‫İlki yaklaşık 5 dakika sürmüştü ama bunlar 5 saniye sürüyor.
‫Zaten 1'deyiz. 0 doğruluk.
‫Bu, eğitim verilerinde %100 doğruluk demektir.
‫Bu delilik.
‫Yani bu bize aslında modelimizin aşırı uyum sağlamasının iyi bir şey olduğunu söylüyor çünkü eğitim verilerinde
‫doğrulama verilerine göre çok daha iyi performans gösteriyor.
‫Ama bu harika.
‫Modelimiz çalışıyor, kalıpları buluyor.
‫Mobil ağ Vertu'nun görüntü ağında öğrendiklerini kullanıyor ve bunu köpek veri setimize uyguluyor.
‫Köpek vizyonu hayata geçiyor.
‫Çok heyecanlıyım.
‫Umarım sizinki de bu şekilde çalışıyordur çünkü birlikte gerçek zamanlı olarak bir modeli eğitiyoruz.
‫Bu çok güzel.
‫Dolayısıyla, doğrulama yapıldıktan sonra doğruluğun birkaç dönem boyunca iyileşmeyi durdurduğunu görmemiz gerekir.
‫Üçüncüsü, geri aramayı erken durdurmamız nedeniyle eğitimi durduracak.
‫Yani aslında 100 çağa ulaşacağımızı sanmıyorum, belki de yaklaşamayız
‫bile çünkü burada 1'e ulaşıyoruz. Eğitim verilerimizde küçük bir kayıpla 0 doğruluk.
‫İşte başlıyoruz.
‫Durdu.
‫İçin.
‫Kalbim küt küt atıyor.
‫Bu olağanüstüydü.
‫Ne demek istediğimi anladınız.
‫İlk epok biraz zaman alır çünkü verileri belleğe yükler.
‫Yüklendikten sonra.
‫Bellekteki bu ilk veri, GPU'ya gidecektir.
‫Tamam.
‫Gaza basma zamanı geldi ve art yakıcıları çalıştıracağız.
‫Tüm gaz.
‫Fren yok, bebeğim.
‫Böylece 100 epoktan 18'ine ulaştık ve eğitim veri setimizdeki modelimizin %100 doğrulukta performans gösterdiğini
‫görebiliyoruz.
‫Bu çok çılgınca.
‫1. 0.
‫Bu sayının iki katı 100 eder.
‫Kayıp oldukça düşüktür.
‫Yani sıfır kayıp mükemmeldir.
‫Ancak modelimizin aşırı uyum sağladığını söyleyebiliriz çünkü eğitim verilerinde doğrulama verilerine
‫göre çok daha iyi performans gösteriyor.
‫Yani geri dönersek, modelimiz bu ders materyallerinin problem çözme ilkelerinden ziyade ders materyallerini
‫ezberlemiş gibi olur.
‫Ve daha önce görmediği bir veri setine uyum sağlamakta zorlanıyor. k. bir deneme sınavı veya doğrulama setimiz.
‫Yani şu anda modelimizin genelleme yeteneği zayıf.
‫Kimi?
‫Sanırım bir video için bu kadarı yeterliydi.
‫Bu çok heyecan verici.
‫Bir sonraki videoda Tennessee panosu kayıtlarını kontrol etmeden önce biraz ev ödevi yapmanızı
‫istiyorum çünkü sansür panosu geri aramasını daha önce kullandık.
‫Bu soruya bir göz atmanızı istiyorum.
‫Modellemeyi denedikten sonra bu gerçekten önemli bir şey mi?
‫Gitmeni istiyorum.
‫Soru.
‫Görünüşe göre modelimiz aşırı uyum sağlıyor çünkü performans gösteriyor.
‫Eğitim veri setinde doğrulama veri setinden çok daha iyi.
‫Derin öğrenme sinir ağlarında modelin aşırı uyumunu önlemenin bazı yolları nelerdir?
‫Bu yüzden bunu markdown'a çevireceğiz.
‫Bir sonraki videoya geçmeden önce bu soruya bakmanızı istiyorum.
‫Derin sinir ağlarında bir modelin aşırı uyum sağlamasını önlemenin bazı yolları nelerdir?
‫Şuna bir bak.
‫Bunlardan emin olmasanız bile, neler olup bittiğini merak etmeye başlamanızı ve modelinizin
‫eğitim veri setinde doğrulama veri setinden çok daha iyi performans göstermesi gibi aşırı uyum gösterdiğine
‫dair ipuçlarını yakalamaya başlamanızı istiyorum.
‫Ve burada küçük bir not, başlangıçta aşırı uyumun iyi bir şey olduğunu unutmayın.
‫Bu, modelimizin öğrenmekte olduğu anlamına gelir.
‫Transfer öğrenimini kullanarak ilk derin öğrenme sinir ağımızı birlikte eğittiğimiz için
‫olağanüstü heyecanlıyım.
‫Köpek vizyonu hayata geçiyor.
‫Böylece bir modelin, en azından bir modelin ilk alt kümesinin eğitimini tamamladık.
‫Bu tam veri üzerinde değil, sadece 1000 görüntü üzerinde.
‫Bir sonraki adımımız, açılış konuşmamıza geldiğimizde ne yapacağız?
‫Bu yüzden modeli verilere uyduruyoruz.
‫Henüz bir tahminde bulunmadık.
‫Yapabileceğimiz şey, tensör panosu geri çağrımızı kullanarak modeli değerlendirmektir, böylece bunu görebilirsiniz ve ardından
‫eğitilmiş modelimizle nasıl bir tahmin yapacağımızı bulacağız.
‫Bir plan gibi mi geliyor?
‫Bu yüzden bu soruya bir göz atın ve bir sonraki videoda görüşmek üzere.