TensorFlow Tutorial: 10 Menit Tutorial TensorFlow Pemula [Terjemahan]

Halo, Habr! Saya mempersembahkan untuk Anda terjemahan artikel "Tutorial TensorFlow: 10 menit Pelajaran TensorFlow Praktis untuk pelajar cepat" oleh Ankit Sachan.


Tutorial TensorFlow ini untuk siapa saja yang memiliki pemahaman dasar tentang pembelajaran mesin dan sedang mencoba untuk memulai dengan TensorFlow.


Pertama-tama, Anda harus menginstal TensorFlow. Anda dapat menginstalnya dalam panduan ini . Pelajaran ini dibagi menjadi dua bagian: pada bagian pertama kami menjelaskan dasar-dasarnya dengan contoh kerja, di bagian kedua kami membangun model regresi linier.


Bagian 1. Dasar-dasar TensorFlow


TensorFlow adalah pustaka numerik di mana data melewati grafik. Data dalam TensorFlow diwakili oleh array n-dimensional - tensor. Grafik terdiri dari data (tensor) dan operasi matematika.


Dalam node grafik adalah operasi matematika.


Tepi grafik mewakili tensor yang "mengalir" di antara operasi.


Ada aspek lain di mana TensorFlow sangat berbeda dari bahasa pemrograman lainnya. Di TensorFlow, Anda harus terlebih dahulu membuat proyek dari apa yang ingin Anda buat. Awalnya, saat membuat grafik, variabel tidak memiliki arti. Kemudian, ketika Anda membuat grafik lengkap, Anda menjalankannya dalam satu sesi dan hanya kemudian variabel akan mengambil nilai apa pun.


Mari kita mulai belajar sambil melakukan. Jalankan python dan impor TensorFlow:


~$ python Python 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>>import tensorflow as tf 

Grafik digunakan untuk mendefinisikan operasi, dan semua operasi dilakukan dalam satu sesi. Grafik dan sesi dibuat secara independen satu sama lain. Perlakukan grafik sebagai proyek konstruksi dan sesi sebagai situs konstruksi.


1.1. Grafik dalam TensorFlow


Grafik adalah dasar dari TensorFlow, semua perhitungan (operasi), variabel ada di grafik. Segala sesuatu yang terjadi dalam kode ada pada grafik default yang disediakan oleh TensorFlow. Anda dapat mengakses grafik ini sebagai berikut:


 graph = tf.get_default_graph() 

Sehingga Anda bisa mendapatkan daftar semua operasi di kolom ini:


 graph.get_operations() 

Grafik Anda sekarang kosong. Jika Anda perlu mencetak nama setiap operasi, jalankan kode berikut:


 for op in graph.get_operations(): print(op.name) 

Output lagi akan kosong. Di masa mendatang, setelah menambahkan operasi ke grafik, kami akan menggunakan kode ini untuk menampilkan nama mereka.


1.2. Sesi di TensorFlow


Grafik hanya mendefinisikan perhitungan (membuat proyek), tetapi tidak memiliki variabel, tidak ada nilai, kecuali kita menjalankan grafik atau bagian dari grafik di sesi.


Anda dapat membuat sesi seperti ini:


 sess=tf.Session() ... your code ... ... your code ... sess.close() 

Jangan lupa bahwa memulai sesi Anda harus mengakhirinya atau menggunakan blok dengan ... sebagai , misalnya seperti ini:


 with tf.Session() as sess: sess.run(f) 

Keuntungan menggunakan pendekatan ini adalah bahwa sesi akan ditutup secara otomatis di akhir blok with


1.3. Tensor dalam TensorFlow


TensorFlow menyimpan data dalam tensor - array multidimensi yang sangat mirip dengan array numPy.


a) Konstanta adalah nilai yang tidak dapat diubah. Mereka didefinisikan sebagai berikut:


 a=tf.constant(1.0) 

namun, ketika Anda mencoba menghasilkan, Anda mendapatkan yang berikut:


 print(a) <tf.Tensor'Const:0' shape=() dtype=float32> print(a) Tensor("Const:0", shape=(), dtype=float32) 

Seperti yang Anda lihat, ini berbeda dari bahasa pemrograman lain, seperti python. Anda tidak dapat mencetak atau mengakses konstanta sampai Anda memulai sesi. Mari kita lakukan ini:


 with tf.Session() as sess: print(sess.run(a)) 

Kode ini akan menampilkan 1.0


b) Variabel juga tensor yang seperti variabel dalam bahasa pemrograman lain:


 >>>b = tf.Variable(2.0,name="test_var") >>>b <tensorflow.python.ops.variables.Variable object at 0x7f37ebda1990> 

Tidak seperti konstanta, variabel dapat mengubah isinya. Namun, variabel dalam TensorFlow harus diinisialisasi dalam operasi inisialisasi yang terpisah. Mungkin perlu waktu untuk menginisialisasi semua variabel, tetapi TensorFlow menyediakan mekanisme untuk menginisialisasi semua variabel sekaligus:


 init_op = tf.global_variables_initializer() 

Sekarang Anda harus memulai operasi inisialisasi sebelum Anda mencoba mengakses variabel:


 with tf.Session() as sess: sess.run(init_op) print(sess.run(b)) 

Kode ini akan menampilkan 2.0
Jika sekarang Anda mencoba untuk mencetak operasi dalam grafik


 graph = tf.get_default_graph() for op in graph.get_operations(): print(op.name) 

Anda akan mendapatkan output berikut:


 Const test_var/initial_value test_var test_var/Assign test_var/read init 

Seperti yang Anda lihat, kami menyatakan "a" sebagai Const dan ditambahkan ke bagan. Demikian pula, untuk variabel b, banyak negara test_var ditambahkan ke grafik TensorFlow, seperti test_var / initial_value, test_var / read, dll. Anda dapat memvisualisasikan seluruh jaringan menggunakan TensorBoard, yang merupakan alat untuk memvisualisasikan grafik TensorFlow dan proses pembelajaran .


c) Placeholder adalah tensor yang menunggu untuk diinisialisasi dengan data. Mereka digunakan untuk data yang akan diberikan hanya ketika kode sebenarnya dieksekusi di sesi. Apa yang ditransfer ke placeholder adalah kamus yang berisi nama placeholder dan artinya:


 a = tf.placeholder("float") b = tf.placeholder("float") y = tf.multiply(a, b) fd = {a: 2, b: 3} with tf.Session() as sess: print(sess.run(y, fd)) 

Kode ini akan menampilkan 6.0


1.4. Perangkat di TensorFlow


TensorFlow memiliki fitur bawaan yang sangat kuat untuk menjalankan kode Anda pada GPU, CPU atau cluster. Ini memberi Anda kesempatan untuk memilih perangkat yang Anda inginkan untuk menjalankan kode Anda. Namun, ini bukan sesuatu untuk dipikirkan ketika Anda baru memulai dengan TF.
Jadi di sini adalah gambaran lengkap tentang bagaimana perhitungan di TensorFlow bekerja:
gambar


Bagian 2. Tutorial TensorFlow dengan Contoh Sederhana


Pada bagian ini, kita akan melihat kode untuk menjalankan regresi linier. Sebelum itu, mari kita lihat beberapa fungsi dasar TensorFlow yang akan kita gunakan dalam kode.


Membuat distribusi normal acak:


Gunakan random_normal untuk membuat nilai acak dari distribusi normal. Dalam contoh ini, w adalah variabel dimensi 784 * 10 dengan nilai acak dengan standar deviasi 0,01.


 w=tf.Variable(tf.random_normal([784, 10], stddev=0.01)) 

Reduce_mean - Menghitung nilai rata - rata array


 b = tf.Variable([10,20,30,40,50,60],name='t') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.reduce_mean(b)) 

Kode ini akan menghasilkan 35


argmax - sangat mirip dengan argmax dengan Python. Mendapat nilai maksimum dari tensor sepanjang sumbu yang ditentukan.


 a=[ [0.1, 0.2, 0.3 ], [20, 2, 3 ] ] b = tf.Variable(a,name='b') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.argmax(b,1)) 

Cetak array ([2, 0]) yang menunjukkan indeks nilai maksimum di setiap baris a.


Masalah regresi linier


Pernyataan masalah: ada sejumlah besar titik data, mencoba mencocokkan garis lurus dengan mereka. Untuk contoh ini, kami akan membuat 100 titik data dan mencoba mencocokkan garis dengan mereka.


2.1. Buat dataset pelatihan


trainX berisi nilai antara -1 dan 1, dan trainY berisi 3 kali nilai trainX ditambah beberapa variabel acak:


 import tensorflow as tf import numpy as np trainX = np.linspace(-1, 1, 101) trainY = 3 * trainX + np.random.randn(*trainX.shape) * 0.33 

2.2. Placeholder


 X = tf.placeholder("float") Y = tf.placeholder("float") 

2.3. Pemodelan


Model regresi linier memiliki bentuk

Ymodel=wx


- kita harus menghitung nilai w. Mari kita inisialisasi w ke nol dan membuat model untuk menyelesaikan masalah ini. Kami mendefinisikan fungsi biaya sebagai

(Y-y__model) ^ 2


TensorFlow hadir dengan banyak pengoptimal yang menghitung dan memperbarui gradien setelah setiap iterasi, mencoba untuk meminimalkan fungsi biaya yang ditentukan. Kami akan mendefinisikan operasi pembelajaran menggunakan GradientDescentOptimizer untuk meminimalkan fungsi biaya kami pada kecepatan belajar 0,01. Kemudian kami menjalankan operasi pembelajaran ini dalam satu lingkaran.
 w = tf.Variable(0.0, name="weights") y_model = tf.multiply(X, w) cost = (tf.pow(Y-y_model, 2)) train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost) 

2.4. Pelatihan


Hingga saat ini kami hanya mendefinisikan grafik. Tidak ada perhitungan yang terjadi, tidak ada variabel TensorFlow yang penting. Untuk menjalankan grafik ini, kita perlu membuat sesi dan menjalankannya. Sebelum itu, kita perlu membuat operasi inisialisasi untuk semua variabel:


 init = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init) for i in range(100): for (x, y) in zip(trainX, trainY): sess.run(train_op, feed_dict={X: x, Y: y}) print(sess.run(w)) 

Perhatikan bahwa hal pertama yang dilakukan adalah menginisialisasi variabel dengan memanggil init di dalam session.run () . Kemudian kami menjalankan train_op , mengumpankan feed_dict- nya. Akhirnya, kita mencetak nilai w (lagi di dalam sess.run ()), yang seharusnya sekitar 3.


Latihan:


Jika Anda membuat sesi baru setelah kode ini dan mencoba mencetak, apa yang akan dihasilkan?


 with tf.Session() as sess: sess.run(init) print(sess.run(w)) 

Ya, Anda mengerti dengan benar, 0,0 akan ditampilkan. Segera setelah kami meninggalkan sesi yang dibuat sebelumnya, semua operasi tidak ada lagi.


Saya harap tutorial ini memberi Anda awal yang cepat dengan TensorFlow. Silahkan mengajukan pertanyaan Anda di komentar. Kode lengkap dapat diunduh di sini .

Source: https://habr.com/ru/post/id465745/


All Articles