Xinzhiyuan önerilir
Kaynak: Uzmanlık
Xin Zhiyuan Rehberi Derin öğrenmeyi araştırma sürecinde, zihninize aniden bir ilham geldiği zaman, fikrinizi hızlı bir şekilde gerçekleştirmek için kullanışlı bir araç olmadığını görüyor musunuz? Bu makaleyi okuduktan sonra bir seçeneğiniz daha olabilir. Bu makale, derin öğrenme problemlerini incelerken ortak iş akışını kısaca analiz eder ve deneylerinizi hızla oluşturmak için PyTorch'u nasıl kullanacağınızı açıklar.
Bir gün laboratuvarda bir sandalyede oturuyordunuz ve aniden:
Zihninde bir patlama var fikir
Bir şey okudun teori Bir makale, denemek istiyorum: Ya xx de eklenirse
Patronunuz aniden size bir kağıt verdi ve sonra dedi ki: Kim, gel de bu şeyi fark et
Yani sen tasarım Gmp Deney Süreç ve bu fikir için Toplamak Uygun Veri seti ve çalışma ortamı Ve sonra uykusuzca başarmak Gmp model , Uzun bir süre sonra Eğitim ve test , Bulursun:
Bu fikir işe yaramıyor - > Unut ya da ayarla
Bu fikir çok iş - > Yapabilmek yazmak kağıt yukarı
Yukarıdaki süreci aşağıdaki diyagramla temsil edebiliriz:
Aslında, ortak süreç aşağıdaki öğelerden oluşur:
Veri seti seçildikten sonra, veri setini yüklemek için bazı fonksiyonlar yazmanız, ardından veri setini önceden işlemeniz, veri setini normalleştirmeniz gerekir, bunun bir deneyin en önemli kısmı olduğu söylenebilir, çünkü:
Her veri kümesinin biçimi farklıdır
Ön işleme ve düzenleme yöntemleri farklıdır
Verileri beslemek için hızlı bir veri yükleyiciye ihtiyacınız varsa, ne kadar hızlı olursa o kadar iyidir
Daha sonra kendi modelinizi uygulamak zorundasınız CV yönündeyseniz ResNet uygulamak isteyebilirsiniz, NLP ile ilgiliyseniz Seq2Seq uygulamak isteyebilirsiniz.
Daha sonra, eğitim adımlarını uygulamanız, grupları bölmeniz ve dönemleri döngüye almanız gerekir
Birkaç tur eğitimden sonra, her zaman kontrol noktası en güvenli olanıdır
Fikirlerinizin geçerliliğini doğrulamak için bazı temeller de oluşturmanız gerekir.
Bir sinir ağı modeli uyguluyorsanız, elbette GPU desteği olmadan yapamazsınız
Birçok derin öğrenme çerçevesi ortak kayıp işlevleri sağlar, ancak çoğu zaman kayıp işlevlerinin belirli görevlerle birleştirilmesi ve ardından yeniden uygulanması gerekir.
Yerleşik modeli optimize etmek ve öğrenme oranını dinamik olarak ayarlamak için optimizasyon yöntemlerini kullanın
Veri yüklemek için Pytorch çeşitli çözümler önerdi
Pytorch, bazı büyük C ++ kitaplıklarının Python arayüzü değil, bir Python paketidir.Bu nedenle, Python API sağlayan veri kümesinin kendisi için Pytorch, özel işlem yapılmadan doğrudan çağrılabilir.
Pytorch, yaygın olarak kullanılan veri kümelerinin veri yükleyicisini entegre eder
Yukarıdaki önlemler veri setlerinin çoğunu kapsayabilse de, Pytorch ayrıca iki proje gerçekleştirmiştir: vizyon ve metin, aşağıdaki şekilde gri arka plana bakın. Kitle kaynak mekanizmalarını kullanan bu iki proje, çok sayıda veri yükleyicisi toplar. - sırasıyla görüntü ve metin bilgilerine karşılık gelen işlem ve normalleştirme.
Veri kümesini özelleştirmek istiyorsanız, yalnızca torch.utils.data.dataset'i devralmanız gerekir
Yapı modelleri için Pytorch ayrıca üç çözüm sunar
Kitle kaynaklı model: torch.utils.model_zoo , Herkes tarafından paylaşılan modeli yüklemek için bu aracı kullanabilirsiniz
Hızlı bir şekilde oluşturmak için torch.nn.Sequential modülünü kullanın
Torch.nn.Modülü derinlemesine özelleştirme entegre edin
Eğitim sürecinin Pytorch uygulaması
Elbette veri toplu iş, shuffer vb. Uygulayabilirsiniz, ancak Pytorch verileri yüklemek, verileri örneklemek ve toplu yineleyiciler oluşturmak için torch.utils.data.DataLoader sınıfını kullanmanızı önerir.
# Veri yükleyici oluştur loader = Data.DataLoader ( veri kümesi = torch_dataset, # TensorDataset türü veri kümesi batch_size = BATCH_SIZE, # mini grup boyutu shuffle = True, # Rastgele karıştırmayı ayarla num_workers = 2, # Veri yükleyen işlemlerin sayısı ) (3) aralığındaki dönem için: # 3 tur için tren adım için, numaralandırmada (batch_x, batch_y): # her adım # Eğitim kodunu buraya yazın ... print ('Epoch:', epoch)Pytorch, modelleri kaydetmek ve yüklemek için iki seçenek sunar
Tüm ağı kaydedin ve yükleyin
Ağdaki parametreleri kaydedin ve yükleyin
GPU desteği için
Tensor'u doğrudan çağırabilirsiniz. Cuda (), Tensor verilerini doğrudan GPU belleğine taşır, tabii ki, verileri istediğiniz zaman belleğe geri taşımak için .cpu () da kullanabilirsiniz.
torch.cuda.is_available () ise: linear = linear.cuda () # Ağdaki parametreleri ve önbelleği GPU belleğine taşıKayıp işlevi ve özel Kayıp için
Pytorch paket torch.nn'de, yalnızca yaygın olarak kullanılan ve klasik Loss işlevlerini değil, aynı zamanda aşağıdakileri içeren yeni Loss'un gerçek zamanlı takibini de içerir: CosineEmbeddingLoss, TripletMarginLoss, vb.
Fikriniz çok yeniyse, Pytorch, Kaybı özelleştirmek için üç yol sunar
Torch.nn.module'ı devral
sonra
loss_instance = Kaybım (...) kayıp = kayıp_örnek (a, b, c)Bunu yaparken, Kaybınızı oluşturmak için torch.nn.fonksiyonel'de optimize edilmiş çeşitli işlevleri kullanabilirsiniz.
Torch.autograd.Function'ı devral
Bunu yaparken, Loss'unuzu oluşturmak için yaygın olarak kullanılan numpy ve scipy işlevlerini kullanabilirsiniz.
Pytorch'un bir C uzantısı yazın
Burada ayrıntılara girmeyeceğim, gelecekte bu bölüme adanmış içerikler olacak.
Algoritmaları optimize etmek ve öğrenme oranını ayarlamak için
Pytorch, SGD, Adam, SparseAdam, AdagradRMSprop, Rprop vb. Dahil olmak üzere yaygın optimizasyon algoritmalarını entegre eder.
torch.optim.lr_scheduler, çağ yinelemelerinin sayısına bağlı olarak öğrenme oranını ayarlamak için birden fazla yol sağlar torch.optim.lr_scheduler.ReduceLROnPlateau, gerçek zamanlı öğrenme sonuçlarına göre öğrenme oranını dinamik olarak da ayarlayabilir.
Herkesin ilk "PyTorch Tarafından Sağlanan Derin Öğrenme Deney Süreci ve Çözümleri" nden hoşlanacağını umuyorum ve daha sonra bir dizi pratik öğretici başlayacak, bu yüzden bizi izlemeye devam edin.