Orijinal başlık: TensorFlow Eğitimi: Hızlı öğrenenler için 10 dakikalık Pratik TensorFlow dersi
Yazar: ANKIT SACHAN
Çeviri: He Zhonghua
Redaksiyon: Cheng Siyan
Bu makalenin uzunluğu 2000 kelime , Okumanız tavsiye edilir 10 dakika
Bu makale sayesinde, TensorFlow'daki en temel kavramları anlayabilir ve TensorFlow'daki en basit doğrusal regresyonu nasıl tamamlayacağınızı öğrenebilirsiniz.
Bu TensorFlow eğitiminin hedef okuyucuları, belirli bir temel makine öğrenimi konseptine sahip olan ve TensorFlow'u denemek isteyenlerdir. Öncelikle TensorFlow'u yüklemeniz gerekir ( yüklemek için bu öğreticiyi takip edebilirsiniz -14-04-aws-p2-xlarge /). Bu eğitim iki bölüme ayrılmıştır: İlk bölümde temel kavramları kod örnekleriyle açıklayacağız ve ikinci bölümde doğrusal bir regresyon modeli oluşturacağız.
Bölüm 1: TensorFlow ile ilgili temel bilgiler
TensorFlow, verilerin bir grafik boyunca aktığı sayısal hesaplamalar için bir kitaplıktır. TensorFlow'da veriler, n boyutlu dizilerle temsil edilir ve Tensörler olarak adlandırılır. Grafik, verilerden (Tensörler olarak da adlandırılır) ve matematiksel işlemlerden oluşur.
* Grafikteki düğümler: matematiksel işlemleri temsil eder
* Grafikteki kenarlar: farklı işlemlerde akan Tensörleri temsil eder
TensorFlow, başka bir açıdan diğer programlama dillerinden farklıdır: TensorFlow'da ne oluşturmak isterseniz isteyin, önce tüm planı tasarlamanız gerekir. Grafik oluştururken, değişkenler atanmaz. Daha sonra tam grafik oluşturulduğunda, grafikteki değişkenlere değer atanmadan önce bir oturumda çalıştırılması gerekir. Daha sonra daha ayrıntılı bir giriş yapılacaktır.
Şimdi uygulamalı öğrenelim. Python'u çalıştırın ve tensorflow'u içe aktarın:
1. TensorFlow'daki grafikler
Grafik, TensorFlow'un bel kemiğidir ve tüm hesaplamalar / işlemler / değişkenler grafikte bulunur. Kodda gerçekleşen her şey, TensorFlow tarafından sağlanan varsayılan bir grafiktedir. Grafiğe aşağıdaki koddan erişilebilir:
Ayrıca aşağıdaki gibi tüm işlemlerin bir listesini de alabilirsiniz:
Grafik artık boş olduğu için bu cümlenin çıktısı da boştur, yani.
Her işlemin adını yazdırmak istiyorsanız, şu ifadeyi kullanın:
Bu sefer hala boş, ifadeyi yürütmek için şekildeki işlemi ekleyene kadar bekleyin.
Ayrıca, birden çok grafik de oluşturabiliriz, ancak şimdi ayrıntılara girmeyeceğim.
2. TensorFlow oturumu
Grafik, işlemi tanımlamak için kullanılır ve işlem bir oturumda (oturum) yürütülmelidir, grafiğin oluşturulması ve oturum birbirinden bağımsızdır. Çizimi bir plan olarak düşünebilirsiniz ve konuşma onun inşaat alanıdır.
Diyagram yalnızca hesaplamayı tanımlar veya tasarımın planını oluşturur. Bununla birlikte, oturumda grafiği veya grafiğin bir bölümünü çalıştırmadıkça, hiçbir değişken ve değer yoktur.
Bunun gibi bir oturum oluşturabilirsiniz:
Bir seansı açarken, sonunda kapatmayı unutmayın. Ya da python'da with deyim bloğunu kullanabilirsiniz, böylece otomatik olarak kapanacaktır:
Bu öğreticinin kodunda, sıklıkla with deyim bloğunu kullanacağız ve bunu yapmanızı tavsiye ederiz.
3. TensorFlow'daki Tensörler
TF, verileri numPy paketindeki çok boyutlu dizilere biraz benzeyen Tensors'da depolar (numPy dizilerinden farklı olsalar da)
sabit
Sabitin değeri değiştirilemez. Tanım aşağıdaki gibidir:
Gördüğünüz gibi, Python gibi diğer dillerin aksine, bir oturumda çalıştırmadığınız sürece bir sabitin değerini doğrudan yazdıramaz / ona erişemezsiniz. Tekrar deneyin:
Bu sefer çıktı sonucu 1.0 yazdırıldı
değişken
Yani Tensörler, diğer dillerdeki değişkenlere benzer.
Değişkenler (adından da anlaşılacağı gibi) sabitlerden farklıdır ve farklı değerler depolayabilir. Bununla birlikte, TF'de, değişkenlerin ayrı ayrı başlatılması gerekir ve her değişkeni ayrı ayrı başlatmak çok verimsizdir. Bununla birlikte, TensorFlow tüm değişkenleri bir kerede başlatmak için bir mekanizma sağlar. Spesifik yöntem aşağıdaki gibidir:
0.11 ve önceki tf sürümleri için initialize_all_variables () yöntemini kullanın:
> > > init_op = tf.initialize_all_variables ()
Sürüm 0.12 ve üzeri, global_variables_initializer () kullanın:
> > > init_op = tf.global_variables_initializer ()
Yukarıdaki kod, TensorFlow'un varsayılan grafiğine init_op ekleyecektir.
Şimdi, az önce tanımlanan b değişkenine erişmeye çalışmadan önce, b'yi ve 2.0 çıktısını yazdırmak için init_op'u çalıştırın:
Şimdi şekildeki tüm işlemleri yazdırabilirsiniz:
Bu sefer çıktı:
Const
test_var / ilk_değer
test_var
test_var / Atama
test_var / okuma
içinde
Gördüğünüz gibi, a sabiti önceden tanımlanmıştı, bu nedenle şekle eklenmiştir. Benzer şekilde, değişken b için, test_var / initial_value, test_var / read vb. Gibi pek çok "test_var" durumu da grafiğe eklenir. Tüm ağı görselleştirmek için TensorBoard'u kullanabilirsiniz TensorBoard, TensorFlow grafiklerini ve eğitim süreçlerini görselleştirmek için bir araçtır.
Yer tutucu
Yer tutucular, adından da anlaşılacağı gibi, başlatılmayı / doldurulmayı bekleyen tensörlere atıfta bulunan yer tutucuları temsil eder. Yer tutucular eğitim verileri için kullanılır. Yer tutucular yalnızca kod bir oturumda çalışırken doldurulur. "Besleme" yer tutucu şeyine feed_dict denir. Feed_dict, verileri depolamak için kullanılan (bir dizi) anahtar / değer çiftidir:
Yukarıdaki örneğin çıktısı 6'dır.
4. TensorFlow'da cihazları uygulayın
TensorFlow, kodunuzu bir gpu, cpu veya gpu kümesinde çalıştırabilen çok güçlü yerleşik işlevlere sahiptir. Kodu çalıştırmak için kullanmak istediğiniz cihazı seçmeniz için size seçenekler sunar. Bu, burada ayrıntılı olarak ele alınmamaktadır, daha sonra bu konuyla ilgili ayrı bir eğitim olacaktır. TensorFlow'un tam resmine bir göz atalım:
Bölüm 2: Basit kod örneği
Bu bölümde, doğrusal regresyon kodunu öğreneceğiz.Önce, birkaç kodda kullanılan TensorFlow fonksiyonlarına bakalım:
Rastgele bir normal dağılım oluşturun:
Normal dağılımı izleyen rastgele değerler oluşturmak için random_normal kullanın. Bu örnekte, w 784 * 10 değişkendir ve değeri 0,01 standart sapma ile normal dağılımı izler.
Azaltın_ortalama:
Bir dizinin ortalamasını hesaplayın
Çıkış 35
ArgMax:
Python'daki argmax'a benzer şekilde, belirtilen eksen boyunca maksimum tensör değerinin dizinini döndürür
Çıktı: her satırdaki maksimum değerin dizinini temsil eden dizi ().
Doğrusal regresyon egzersizi:
Problem tanımı: Doğrusal regresyonda, başlangıçta birçok veri noktası vardır ve bizim görevimiz bu noktalara düz bir çizgiyle uymaktır. Bu örnekte 100 nokta oluşturup bunlara uyacağız.
Eğitim verilerini oluşturun
TrainX'in değeri -1 ile 1 arasındadır.
trainY, trainX'in 3 katı artı bir miktar girişim değeridir.
Yer tutucu
Eğitim verilerinin daha sonra doldurulması için iki yer tutucu tanımlayın
Modelleme
Doğrusal regresyon modeli y_model = w * x şeklindedir, w'nin değerini hesaplamamız gerekir. İlk olarak, bir model oluşturmak için w ila 0'ı başlatabiliriz ve maliyet fonksiyonunu (Y-y_model) 'in karesi olarak tanımlayabiliriz. TensorFlow, maliyet işlevini en aza indirmek için her yinelemeden sonra degradeyi güncellemek için birçok optimize ediciyle (Optimizer) birlikte gelir. Burada modeli 0.01 öğrenme oranıyla eğitmek için GradientDescentOptimizer'ı kullanıyoruz ve ardından eğitim işlemini bir döngüde çalıştırıyoruz:
Eğitim
Şimdiye kadar sadece grafiği tanımladık ve özel bir hesaplama yok.
TensorFlow değişkenleri henüz atanmamış. Tanımlanan grafiği gerçekten çalıştırmak için, ayrıca bir oturum oluşturmanız ve çalıştırmanız gerekir. Bundan önce, tüm değişkenleri başlatmak için init işlemini tanımlayabilirsiniz:
İlk adım, başlatma işlemini tamamlamak için session.run () içinde init'i çağırmaktır. Ardından verileri feed_dict'e "besleyerek" train_op'u çalıştırırız. Yineleme tamamlandıktan sonra, 3'e yakın olması gereken son w değerini yazdırıyoruz.
Egzersiz yapmak
Yeni bir oturum oluşturursanız, hangi sonuçlar çıkacaktır?
Sembolik hesaplama fikri olan 0.0 çıktısını verecektir.Önceki oturumdan ayrıldığınızda, tüm işlemler sona erecektir.
Umarım bu eğitim, TensorFlow'u öğrenme yolunda iyi bir başlangıç yapmanıza yardımcı olur. Herhangi bir sorunuz varsa, yorum alanına bir mesaj bırakabilirsiniz. Kodun tamamı buradan indirilebilir:
https://github.com/sankit1/cv-tricks.com
TensorFlow'u öğrenmeye devam etmek için ikinci öğreticiyi de takip edebilirsiniz:
Orijinal bağlantı:
artificial-intelligence/deep-learning/deep-learning-frameworks/tensorflow/tensorflow-tutorial/
Ve Zhonghua, Almanya'da Yazılım Mühendisliği Yüksek Lisansı. Makine öğrenimine olan ilgiden dolayı, yüksek lisans tezi, geleneksel anlamlarını geliştirmek için genetik algoritma fikirlerini kullanmayı seçti. Şu anda Hangzhou'da büyük veri ile ilgili uygulamalar yapıyor. Datapie'ye katılmak THU, BT çalışanları için üzerine düşeni yapmayı ve aynı zamanda benzer düşünen birçok arkadaş edinmeyi umuyor.