Apa itu TensorFlow? Bagaimana ia berfungsi? Pengenalan & Senibina

Isi kandungan:

Anonim

Mari mulakan tutorial ini dengan pengenalan TensorFlow:

Apa itu TensorFlow?

TensorFlow adalah platform end-to-end sumber terbuka untuk membuat aplikasi Pembelajaran Mesin. Ia adalah perpustakaan matematik simbolik yang menggunakan aliran data dan pengaturcaraan yang dapat dibezakan untuk melaksanakan pelbagai tugas yang difokuskan pada latihan dan kesimpulan rangkaian neural yang mendalam. Ini membolehkan pemaju membuat aplikasi pembelajaran mesin menggunakan pelbagai alat, perpustakaan, dan sumber komuniti.

Pada masa ini, perpustakaan pembelajaran mendalam yang paling terkenal di dunia adalah TensorFlow Google. Produk Google menggunakan pembelajaran mesin di semua produknya untuk meningkatkan enjin carian, terjemahan, kapsyen gambar atau cadangan.

Untuk memberikan contoh yang konkrit, pengguna Google dapat mengalami pencarian dengan lebih cepat dan lebih halus dengan AI. Sekiranya pengguna menaip kata kunci pada bar carian, Google memberikan cadangan mengenai apa yang mungkin menjadi kata berikutnya.

Google ingin menggunakan pembelajaran mesin untuk memanfaatkan set data mereka yang besar untuk memberikan pengalaman terbaik kepada pengguna. Tiga kumpulan yang berbeza menggunakan pembelajaran mesin:

  • Penyelidik
  • Saintis data
  • Pengaturcara.

Mereka semua dapat menggunakan set alat yang sama untuk bekerjasama antara satu sama lain dan meningkatkan kecekapan mereka.

Google tidak hanya mempunyai data; mereka mempunyai komputer yang paling besar di dunia, jadi Tensor Flow dibina mengikut skala. TensorFlow adalah perpustakaan yang dikembangkan oleh Pasukan Otak Google untuk mempercepat pembelajaran mesin dan penyelidikan rangkaian saraf dalam.

Ia dibangun untuk berjalan pada beberapa CPU atau GPU dan bahkan sistem operasi mudah alih, dan ia memiliki beberapa pembungkus dalam beberapa bahasa seperti Python, C ++ atau Java.

Dalam tutorial TensorFlow ini, anda akan belajar

  • Apa itu TensorFlow?
  • Sejarah TensorFlow
  • Bagaimana TensorFlow Berfungsi
  • Senibina TensorFlow
  • Di mana Tensorflow boleh dijalankan?
  • Pengenalan Komponen TensorFlow
  • Mengapa TensorFlow popular?
  • Senarai Algoritma Terunggul yang disokong oleh TensorFlow
  • Contoh TensorFlow Ringkas
  • Pilihan untuk Memuatkan Data ke TensorFlow
  • Buat saluran paip Tensorflow

Sejarah TensorFlow

Beberapa tahun yang lalu, pembelajaran mendalam mula mengungguli semua algoritma pembelajaran mesin lain ketika memberikan sejumlah besar data. Google melihat ia dapat menggunakan rangkaian neural dalam untuk meningkatkan perkhidmatannya:

  • Gmail
  • Foto
  • Enjin carian Google

Mereka membina kerangka yang disebut Tensorflow untuk membiarkan penyelidik dan pemaju bekerjasama pada model AI. Setelah dikembangkan dan diperkecil, ia membolehkan banyak orang menggunakannya.

Ia pertama kali dipublikasikan pada akhir 2015, sementara versi stabil pertama muncul pada tahun 2017. Ia adalah sumber terbuka di bawah lesen Sumber Terbuka Apache. Anda boleh menggunakannya, mengubahnya dan mengagihkan semula versi yang diubah dengan bayaran tanpa membayar apa-apa kepada Google.

Selanjutnya dalam tutorial pembelajaran TensorFlow Deep ini, kita akan belajar mengenai seni bina TensorFlow dan bagaimana TensorFlow berfungsi.

Bagaimana TensorFlow Berfungsi

TensorFlow membolehkan anda membina grafik dan struktur aliran data untuk menentukan bagaimana data bergerak melalui grafik dengan mengambil input sebagai tatasusunan pelbagai dimensi yang disebut Tensor. Ini membolehkan anda membuat carta alir operasi yang dapat dilakukan pada input ini, yang berlangsung di satu hujung dan di ujung yang lain sebagai output.

Senibina TensorFlow

Senibina Tensorflow berfungsi dalam tiga bahagian:

  • Memproses data
  • Bina model
  • Latih dan anggarkan model

Ia disebut Tensorflow kerana ia memerlukan input sebagai array multi-dimensi, juga dikenal sebagai tensor . Anda boleh membina sejenis carta alir operasi (disebut Grafik) yang ingin anda lakukan pada input tersebut. Input masuk pada satu hujung, dan kemudian mengalir melalui sistem pelbagai operasi ini dan keluar dari ujung lain sebagai output.

Inilah sebabnya mengapa ia dipanggil TensorFlow kerana tensor masuk mengalir melalui senarai operasi, dan kemudian keluar dari sisi lain.

Di mana Tensorflow boleh dijalankan?

Keperluan perkakasan dan perisian TensorFlow dapat diklasifikasikan menjadi

Fasa Pembangunan: Ini adalah ketika anda melatih mod. Latihan biasanya dilakukan di Desktop atau komputer riba anda.

Fasa Larian atau Fasa Inferensi: Setelah latihan dilakukan, Tensorflow dapat dijalankan di banyak platform yang berbeza. Anda boleh menjalankannya

  • Desktop yang menjalankan Windows, macOS atau Linux
  • Cloud sebagai perkhidmatan web
  • Peranti mudah alih seperti iOS dan Android

Anda boleh melatihnya di beberapa mesin, kemudian anda boleh menjalankannya di mesin yang lain, setelah anda mempunyai model yang terlatih.

Model ini dapat dilatih dan digunakan pada GPU dan juga CPU. GPU pada mulanya dirancang untuk permainan video. Pada akhir tahun 2010, para penyelidik Stanford mendapati bahawa GPU juga sangat pandai dalam operasi matriks dan aljabar sehingga menjadikannya sangat pantas untuk melakukan pengiraan seperti ini. Pembelajaran mendalam bergantung pada pendaraban matriks yang banyak. TensorFlow sangat pantas dalam mengira pendaraban matriks kerana ditulis dalam C ++. Walaupun ia dilaksanakan dalam C ++, TensorFlow dapat diakses dan dikendalikan oleh bahasa lain terutamanya, Python.

Akhirnya, ciri penting TensorFlow adalah TensorBoard. TensorBoard membolehkan untuk memantau secara grafik dan visual apa yang sedang dilakukan oleh TensorFlow.

Pengenalan Komponen TensorFlow

Tensor

Nama Tensorflow berasal secara langsung dari kerangka terasnya: Tensor . Dalam Tensorflow, semua pengiraan melibatkan tensor. Tensor adalah vektor atau matriks n-dimensi yang mewakili semua jenis data. Semua nilai dalam tensor yang memegang jenis data yang sama dengan yang diketahui (atau sebahagiannya diketahui) bentuk . Bentuk data adalah dimensi matriks atau larik.

Tensor boleh berasal dari data input atau hasil pengiraan. Di TensorFlow, semua operasi dilakukan di dalam grafik . Grafik adalah satu set pengiraan yang berlaku berturut-turut. Setiap operasi dipanggil simpul op dan saling terhubung.

Grafik menggariskan ops dan hubungan antara nod. Walau bagaimanapun, ia tidak menunjukkan nilai. Tepi nod adalah tensor, iaitu, cara untuk mengisi operasi dengan data.

Grafik

TensorFlow menggunakan kerangka grafik. Grafik mengumpulkan dan menerangkan semua pengiraan siri yang dilakukan semasa latihan. Grafik mempunyai banyak kelebihan:

  • Ia dilakukan untuk berjalan di beberapa CPU atau GPU dan bahkan sistem operasi mudah alih
  • Kemudahalihan grafik memungkinkan untuk mengekalkan pengiraan untuk penggunaan segera atau kemudian. Grafik dapat disimpan untuk dilaksanakan pada masa akan datang.
  • Semua pengiraan dalam grafik dilakukan dengan menghubungkan tensor bersama-sama
    • Tensor mempunyai nod dan pinggir. Node menjalankan operasi matematik dan menghasilkan output titik akhir. Tepi tepi menjelaskan hubungan input / output antara nod.

Mengapa TensorFlow popular?

TensorFlow adalah perpustakaan terbaik kerana dibina untuk diakses oleh semua orang. Perpustakaan Tensorflow menggabungkan API yang berbeza untuk dibina dalam seni bina pembelajaran mendalam seperti CNN atau RNN. TensorFlow berdasarkan pengiraan grafik; ia membolehkan pemaju untuk membayangkan pembinaan rangkaian neural dengan Tensorboad. Alat ini berguna untuk menyahpepijat program. Akhirnya, Tensorflow dibina untuk digunakan pada skala besar. Ia berjalan pada CPU dan GPU.

Tensorflow menarik populariti terbesar di GitHub berbanding dengan kerangka pembelajaran mendalam yang lain.

Senarai Algoritma Terunggul yang disokong oleh TensorFlow

Berikut adalah senarai algoritma TensorFlow yang disokong:

Pada masa ini, TensorFlow 1.10 mempunyai API terbina dalam untuk:

  • Regresi linear: tf.estimator.LinearRegressor
  • Klasifikasi: tf.estimator.LinearClassifier
  • Klasifikasi pembelajaran mendalam: tf.estimator.DNNClassifier
  • Pembelajaran mendalam dan mendalam: tf.estimator.DNNLinearCombinedClassifier
  • Regresi pokok penggalak: tf.estimator.BoostedTreesRegressor
  • Pengelasan pokok yang ditingkatkan: tf.estimator.BoostedTreesClassifier

Contoh TensorFlow Ringkas

import numpy as npimport tensorflow as tf

Dalam dua baris pertama kod, kami telah mengimport tensorflow sebagai tf. Dengan Python, adalah kebiasaan untuk menggunakan nama pendek untuk perpustakaan. Kelebihannya adalah dengan mengelakkan menaip nama penuh perpustakaan ketika kita perlu menggunakannya. Sebagai contoh, kita dapat mengimport tensorflow sebagai tf, dan memanggil tf ketika kita ingin menggunakan fungsi tensorflow

Mari praktikkan aliran kerja asas Tensorflow dengan contoh TensorFlow yang mudah. Mari buat graf pengiraan yang mendarab dua nombor bersamaan.

Sebagai contoh, kami akan mengalikan X_1 dan X_2 bersama-sama. Tensorflow akan membuat simpul untuk menghubungkan operasi. Dalam contoh kita, ia disebut darab. Apabila graf ditentukan, enjin pengiraan Tensorflow akan berlipat kali ganda bersamaan dengan X_1 dan X_2.

Contoh TensorFlow

Akhirnya, kami akan menjalankan sesi TensorFlow yang akan menjalankan grafik komputasi dengan nilai X_1 dan X_2 dan mencetak hasil pendaraban.

Mari tentukan nod input X_1 dan X_2. Apabila kita membuat nod di Tensorflow, kita harus memilih jenis nod yang akan dibuat. Nod X1 dan X2 akan menjadi simpul placeholder. Pemegang tempat memberikan nilai baru setiap kali kami membuat pengiraan. Kami akan membuatnya sebagai simpul placeholder TF dot.

Langkah 1: Tentukan pemboleh ubah

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")

Apabila kita membuat simpul placeholder, kita harus memasukkan jenis data yang akan menambah nombor di sini sehingga kita dapat menggunakan jenis data floating-point, mari kita gunakan tf.float32. Kita juga perlu memberikan nama simpul ini. Nama ini akan muncul ketika kita melihat visualisasi grafik model kita. Mari beri nama nod ini X_1 dengan memasukkan parameter yang disebut nama dengan nilai X_1 dan sekarang mari kita tentukan X_2 dengan cara yang sama. X_2.

Langkah 2: Tentukan pengiraan

multiply = tf.multiply(X_1, X_2, name = "multiply")

Sekarang kita dapat menentukan nod yang melakukan operasi pendaraban. Di Tensorflow kita dapat melakukannya dengan membuat node tf.multiply.

Kami akan meneruskan nod X_1 dan X_2 ke nod pendaraban. Ini memberitahu tensorflow untuk menghubungkan node tersebut dalam grafik komputasi, jadi kami memintanya untuk menarik nilai dari x dan y dan menggandakan hasilnya. Mari juga beri nama pendaraban darab. Ini adalah keseluruhan definisi untuk grafik komputasi ringkas kami.

Langkah 3: Jalankan operasi

Untuk melaksanakan operasi dalam grafik, kita harus membuat sesi. Di Tensorflow, ia dilakukan oleh tf.Session (). Sekarang kita mempunyai sesi, kita boleh meminta sesi menjalankan operasi pada grafik komputasi kita dengan memanggil sesi. Untuk menjalankan pengiraan, kita perlu menggunakan run.

Apabila operasi penambahan dijalankan, ia akan melihat bahawa ia perlu mengambil nilai nod X_1 dan X_2, jadi kita juga perlu memasukkan nilai untuk X_1 dan X_2. Kita dapat melakukannya dengan memberikan parameter yang disebut feed_dict. Kami melepasi nilai 1,2,3 untuk X_1 dan 4,5,6 untuk X_2.

Kami mencetak hasilnya dengan cetakan (hasil). Kita mesti melihat 4, 10 dan 18 untuk 1x4, 2x5 dan 3x6

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]

Pilihan untuk Memuatkan Data ke TensorFlow

Langkah pertama sebelum melatih algoritma pembelajaran mesin adalah memuatkan data. Terdapat dua cara untuk memuat data:

1. Muatkan data ke dalam memori: Ini adalah kaedah paling mudah. Anda memuatkan semua data anda ke dalam memori sebagai satu array. Anda boleh menulis kod Python. Garis kod ini tidak berkaitan dengan Tensorflow.

2. Saluran data Tensorflow. Tensorflow mempunyai API terbina dalam yang membantu anda memuatkan data, menjalankan operasi dan memberi makan algoritma pembelajaran mesin dengan mudah. Kaedah ini berfungsi dengan baik terutamanya apabila anda mempunyai set data yang besar. Sebagai contoh, rakaman gambar diketahui sangat besar dan tidak sesuai dengan memori. Saluran data menguruskan memori dengan sendirinya

Apa penyelesaian untuk digunakan?

Muatkan data dalam memori

Sekiranya set data anda tidak terlalu besar, iaitu kurang dari 10 gigabait, anda boleh menggunakan kaedah pertama. Data boleh masuk ke dalam memori. Anda boleh menggunakan perpustakaan terkenal bernama Pandas untuk mengimport fail CSV. Anda akan mengetahui lebih lanjut mengenai panda dalam tutorial seterusnya.

Muatkan data dengan saluran paip Tensorflow

Kaedah kedua berfungsi paling baik jika anda mempunyai set data yang besar. Sebagai contoh, jika anda mempunyai set data 50 gigabyte, dan komputer anda hanya mempunyai memori 16 gigabyte maka mesin akan hancur.

Dalam keadaan ini, anda perlu membina saluran paip Tensorflow. Saluran paip akan memuat data secara berkelompok, atau potongan kecil. Setiap kumpulan akan dibawa ke saluran paip dan bersedia untuk latihan. Membina saluran paip adalah penyelesaian terbaik kerana ia membolehkan anda menggunakan pengkomputeran selari. Ini bermaksud Tensorflow akan melatih model di beberapa CPU. Ini mendorong pengiraan dan izin untuk melatih rangkaian saraf yang kuat.

Anda akan melihat dalam tutorial seterusnya mengenai bagaimana membina saluran paip yang signifikan untuk memberi makan rangkaian saraf anda.

Ringkasnya, jika anda mempunyai set data kecil, anda dapat memuatkan data ke memori dengan perpustakaan Pandas.

Sekiranya anda mempunyai set data yang besar dan anda ingin menggunakan banyak CPU, maka anda akan lebih selesa bekerja dengan saluran paip Tensorflow.

Buat saluran paip Tensorflow

Dalam contoh sebelumnya, kami menambahkan tiga nilai secara manual untuk X_1 dan X_2. Sekarang kita akan melihat bagaimana memuat data ke Tensorflow.

Langkah 1) Buat data

Pertama sekali, mari gunakan perpustakaan numpy untuk menghasilkan dua nilai rawak.

import numpy as npx_input = np.random.sample((1,2))print(x_input)

[[0.8835775 0.23766977]]

Langkah 2) Buat tempat letak

Seperti contoh sebelumnya, kita membuat placeholder dengan nama X. Kita perlu menyatakan bentuk tensor secara eksplisit. Sekiranya, kami akan memuatkan array dengan hanya dua nilai. Kita boleh menulis bentuknya sebagai bentuk = [1,2]

# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

Langkah 3) Tentukan kaedah set data

seterusnya, kita perlu menentukan Dataset di mana kita dapat mengisi nilai placeholder x. Kita perlu menggunakan kaedah tf.data.Dataset.from_tensor_slices

dataset = tf.data.Dataset.from_tensor_slices(x)

Langkah 4) Buat saluran paip

Pada langkah keempat, kita perlu menginisialisasi saluran di mana data akan mengalir. Kita perlu membuat iterator dengan make_initializable_iterator. Kami menamakannya berulang. Maka kita perlu memanggil iterator ini untuk memberi makan data seterusnya, get_next. Kami menamakan langkah ini get_next. Perhatikan bahawa dalam contoh kita, hanya ada satu kumpulan data dengan dua nilai sahaja.

iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()

Langkah 5) Jalankan operasi

Langkah terakhir adalah serupa dengan contoh sebelumnya. Kami memulakan sesi, dan kami menjalankan iterator operasi. Kami memberi makan feed_dict dengan nilai yang dihasilkan oleh numpy. Kedua-dua nilai ini akan mengisi tempat letak x. Kemudian kami jalankan get_next untuk mencetak hasilnya.

with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]

Ringkasan

Maksud TensorFlow: TensorFlow adalah perpustakaan pembelajaran mendalam yang paling terkenal sejak kebelakangan ini. Seorang pengamal yang menggunakan TensorFlow dapat membina struktur pembelajaran mendalam, seperti CNN, RNN atau rangkaian neural buatan sederhana.

TensorFlow kebanyakan digunakan oleh ahli akademik, syarikat permulaan, dan syarikat besar. Google menggunakan TensorFlow dalam hampir semua produk harian Google termasuk Gmail, Foto dan Google Search Engine.

TensorFlow yang dikembangkan oleh pasukan Google Brain untuk mengisi jurang antara penyelidik dan pembangun produk. Pada tahun 2015, mereka menjadikan TensorFlow sebagai umum; ia semakin popular. Pada masa kini, TensorFlow adalah perpustakaan pembelajaran mendalam dengan repositori paling banyak di GitHub.

Pengamal menggunakan Tensorflow kerana mudah digunakan pada skala. Ia dibina untuk berfungsi di awan atau pada peranti mudah alih seperti iO dan Android.

Tensorflow berfungsi dalam satu sesi. Setiap sesi ditentukan oleh grafik dengan pengiraan yang berbeza. Contoh mudah ialah membiak dengan nombor. Di Tensorflow, tiga langkah diperlukan:

  1. Tentukan pemboleh ubah
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Tentukan pengiraan
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Jalankan operasi
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)

Salah satu amalan biasa di Tensorflow adalah membuat saluran paip untuk memuat data. Sekiranya anda mengikuti lima langkah ini, anda akan dapat memuatkan data ke TensorFLow

  1. Buat data
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Buat ruang letak
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Tentukan kaedah set data
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Buat saluran paip
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Jalankan program
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))