Apa itu TensorFlow? Bagaimana itu bekerja? Perkenalan & Architekstur

Mari kita mulai tutorial ini dengan pengenalan TensorFlow:

Apa itu TensorFlow?

TensorFlow adalah platform ujung ke ujung sumber terbuka untuk membuat aplikasi Pembelajaran Mesin. Ini adalah pustaka matematika simbolis yang menggunakan aliran data dan pemrograman yang dapat dibedakan untuk melakukan berbagai tugas yang difokuskan pada pelatihan dan inferensi jaringan saraf dalam. Ini memungkinkan pengembang untuk membuat aplikasi pembelajaran mesin menggunakan berbagai alat, pustaka, dan sumber daya komunitas.

Saat ini, perpustakaan pembelajaran mendalam paling terkenal di dunia adalah TensorFlow Google. Produk Google menggunakan pembelajaran mesin di semua produknya untuk meningkatkan mesin telusur, terjemahan, teks gambar, atau rekomendasi.

Contoh TensorFlow

Sebagai contoh nyata, pengguna Google dapat merasakan pengalaman pencarian yang lebih cepat dan lebih baik dengan AI. Jika pengguna mengetikkan kata kunci di bilah pencarian, Google memberikan rekomendasi tentang kata berikutnya.

Contoh TensorFlow
Contoh TensorFlow

Google ingin menggunakan pembelajaran mesin untuk memanfaatkan kumpulan data mereka yang sangat besar guna memberikan pengalaman terbaik kepada pengguna. Tiga kelompok berbeda menggunakan pembelajaran mesin:

  • Peneliti
  • Ilmuwan Data
  • Programmer

Mereka semua dapat menggunakan perangkat yang sama untuk berkolaborasi satu sama lain dan meningkatkan efisiensinya.

Google tidak hanya memiliki data apa pun; mereka memiliki komputer paling besar di dunia, jadi Tensor Flow dibuat sesuai skalanya. TensorFlow adalah perpustakaan yang dikembangkan oleh Tim Google Brain untuk mempercepat pembelajaran mesin dan penelitian jaringan saraf mendalam.

Ini dibangun untuk berjalan pada beberapa CPU atau GPU dan bahkan sistem operasi seluler, dan memiliki beberapa pembungkus dalam beberapa bahasa seperti Python, C++ or Java.

Sejarah TensorFlow

Beberapa tahun yang lalu, pembelajaran mendalam mulai mengungguli semua algoritma pembelajaran mesin lainnya saat memberikan sejumlah besar data. Google melihat bahwa mereka dapat menggunakan jaringan saraf mendalam ini untuk meningkatkan layanannya:

  • Gmail
  • Foto
  • Mesin pencari Google

Mereka membangun kerangka yang disebut aliran tensor untuk memungkinkan peneliti dan pengembang bekerja sama dalam model AI. Setelah dikembangkan dan ditingkatkan, ini memungkinkan banyak orang untuk menggunakannya.

Ini pertama kali dipublikasikan pada akhir tahun 2015, sedangkan versi stabil pertama muncul pada tahun 2017. Ini adalah open source di bawah lisensi Apache Open Source. Anda dapat menggunakannya, memodifikasinya, dan mendistribusikan ulang versi modifikasi dengan biaya tertentu tanpa membayar apa pun kepada Google.

Berikutnya dalam tutorial pembelajaran mendalam TensorFlow ini, kita akan mempelajari tentang arsitektur TensorFlow dan cara kerja TensorFlow.

Cara Kerja TensorFlow

TensorFlow memungkinkan Anda membuat grafik dan struktur aliran data untuk menentukan bagaimana data bergerak melalui grafik dengan mengambil input sebagai array multidimensi yang disebut Tensor. TensorFlow memungkinkan Anda membuat diagram alir operasi yang dapat dilakukan pada input ini, yang berjalan di satu sisi dan keluar di sisi lain sebagai output.

TensorFlow Architekstur

Arsitektur Tensorflow bekerja dalam tiga bagian:

  • Melakukan prapemrosesan data
  • Bangun model
  • Latih dan perkirakan modelnya

Disebut Tensorflow karena mengambil masukan sebagai array multidimensi, yang juga dikenal sebagai tensor. Anda dapat membuat semacam diagram alir operasi (disebut Grafik) yang ingin Anda lakukan pada input tersebut. Input masuk di satu ujung, lalu mengalir melalui sistem berbagai operasi ini dan keluar di ujung lainnya sebagai output.

Itulah sebabnya disebut TensorFlow karena tensor masuk ke dalamnya, mengalir melalui daftar operasi, lalu keluar dari sisi yang lain.

Di mana Tensorflow dapat dijalankan?

Perangkat keras TensorFlow, dan persyaratan perangkat lunak dapat diklasifikasikan menjadi

Fase Pengembangan: Ini adalah saat Anda melatih mode. Pelatihan biasanya dilakukan di Desktop atau laptop Anda.

Fase Jalankan atau Fase Inferensi: Setelah pelatihan selesai, Tensorflow dapat dijalankan di banyak platform berbeda. Anda dapat menjalankannya

  • Desktop berjalan Windows, macOS atau Linux
  • Cloud sebagai layanan web
  • Perangkat seluler seperti iOS dan Android

Anda dapat melatihnya di beberapa mesin lalu menjalankannya di mesin lain, setelah Anda memiliki model yang dilatih.

Model ini dapat dilatih dan digunakan pada GPU maupun CPU. GPU awalnya dirancang untuk permainan video. Pada akhir tahun 2010, peneliti Stanford menemukan bahwa GPU juga sangat baik dalam operasi matriks dan aljabar sehingga membuatnya sangat cepat untuk melakukan perhitungan semacam ini. Pembelajaran mendalam bergantung pada banyak perkalian matriks. TensorFlow sangat cepat dalam menghitung perkalian matriks karena ditulis dalam C++. Meskipun diterapkan di C++, TensorFlow terutama dapat diakses dan dikontrol oleh bahasa lain, Python.

Terakhir, fitur penting TensorFlow adalah TensorBoard. Itu Papan Tensor memungkinkan untuk memantau secara grafis dan visual apa yang dilakukan TensorFlow.

Komponen TensorFlow

tensor

Nama Tensorflow diambil langsung dari kerangka intinya: tensor. Di Tensorflow, semua komputasi melibatkan tensor. Tensor adalah a vektor or matriks dari n-dimensi yang mewakili semua jenis data. Semua nilai dalam tensor memiliki tipe data yang identik dengan nilai yang diketahui (atau diketahui sebagian) bentuk. Bentuk data adalah dimensi matriks atau array.

Tensor dapat berasal dari data input atau hasil komputasi. Dalam TensorFlow, semua operasi dilakukan di dalam grafikGrafik merupakan sekumpulan operasi komputasi yang dilakukan secara berurutan. Setiap operasi disebut simpul op dan terhubung satu sama lain.

Grafik tersebut menguraikan operasi dan koneksi antara node. Namun, grafik tersebut tidak menampilkan nilai. Tepi node adalah tensor, yaitu, cara untuk mengisi operasi dengan data.

Grafik

TensorFlow menggunakan kerangka grafik. Grafik mengumpulkan dan menjelaskan semua rangkaian perhitungan yang dilakukan selama pelatihan. Grafik memiliki banyak keuntungan:

  • Hal ini dilakukan untuk berjalan pada beberapa CPU atau GPU dan bahkan sistem operasi seluler
  • Portabilitas grafik memungkinkan untuk menyimpan perhitungan untuk penggunaan langsung atau nanti. Grafik dapat disimpan untuk dijalankan di masa mendatang.
  • Semua perhitungan dalam grafik dilakukan dengan menghubungkan tensor bersama-sama
    • Tensor memiliki simpul dan sisi. Simpul menjalankan operasi matematika dan menghasilkan keluaran titik akhir. Sisi-sisi menjelaskan hubungan masukan/keluaran antara simpul.

Mengapa TensorFlow Populer?

TensorFlow adalah pustaka terbaik karena dibuat agar dapat diakses oleh semua orang. Pustaka Tensorflow menggabungkan berbagai API untuk membangun arsitektur pembelajaran mendalam berskala besar seperti CNN atau RNN. TensorFlow didasarkan pada komputasi grafik; memungkinkan pengembang untuk memvisualisasikan konstruksi jaringan saraf dengan Tensorboard. Alat ini membantu untuk men-debug program. Terakhir, Tensorflow dibuat agar dapat digunakan dalam skala besar. Ia berjalan pada CPU dan GPU.

Tensorflow mendapatkan popularitas terbesar di GitHub dibandingkan dengan framework deep learning lainnya.

TensorFlow Algorithms

Berikut adalah algoritma yang didukung oleh TensorFlow:

Saat ini, TensorFlow 1.10 memiliki API bawaan untuk:

  • Regresi linier: tf.estimator.LinearRegressor
  • Klasifikasi:tf.estimator.LinearClassifier
  • Klasifikasi pembelajaran mendalam: tf.estimator.DNNClassifier
  • Penghapusan pembelajaran mendalam dan mendalam: tf.estimator.DNNLinearCombinedClassifier
  • Regresi pohon penguat: tf.estimator.BoostedTreesRegressor
  • Klasifikasi pohon yang ditingkatkan: tf.estimator.BoostedTreesClassifier

Cara Penghitungan bekerja di TensorFlow

import numpy as np
import tensorflow as tf

Di dua baris kode pertama, kami telah mengimpor tensorflow sebagai tf. Dengan Python, merupakan praktik umum untuk menggunakan nama pendek untuk perpustakaan. Keuntungannya adalah menghindari mengetikkan nama lengkap perpustakaan saat kita perlu menggunakannya. Misalnya, kita dapat mengimpor tensorflow sebagai tf, dan memanggil tf ketika kita ingin menggunakan fungsi tensorflow

Mari kita praktikkan alur kerja dasar Tensorflow dengan contoh-contoh TensorFlow yang sederhana. Mari kita buat grafik komputasi yang mengalikan dua angka.

Selama contoh, kita akan mengalikan X_1 dan X_2 bersama-sama. Tensorflow akan membuat simpul untuk menghubungkan operasi tersebut. Dalam contoh kita, ini disebut perkalian. Ketika grafik ditentukan, mesin komputasi Tensorflow akan mengalikan X_1 dan X_2 bersama-sama.

Perhitungan berfungsi di TensorFlow
Contoh TensorFlow

Terakhir, kita akan menjalankan sesi TensorFlow yang akan menjalankan grafik komputasi dengan nilai X_1 dan X_2 dan mencetak hasil perkaliannya.

Mari kita tentukan node masukan X_1 dan X_2. Saat kita membuat node di Tensorflow, kita harus memilih jenis node yang akan dibuat. Node X1 dan X2 akan menjadi node pengganti. Placeholder memberikan nilai baru setiap kali kita membuat perhitungan. Kami akan membuatnya sebagai node placeholder titik TF.

Langkah 1: Tentukan variabelnya

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

Saat kita membuat node placeholder, kita harus memasukkan tipe data yang akan menambahkan angka di sini sehingga kita dapat menggunakan tipe data floating-point, mari kita gunakan tf.float32. Kita juga perlu memberi nama pada node ini. Nama ini akan muncul saat kita melihat visualisasi grafis model kita. Mari kita beri nama node ini X_1 dengan memasukkan parameter bernama name dengan nilai X_1 dan sekarang mari kita definisikan X_2 dengan cara yang sama. X_2.

Langkah 2: Tentukan komputasinya

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

Sekarang kita dapat menentukan simpul yang melakukan operasi perkalian. Dalam Tensorflow kita dapat melakukannya dengan membuat simpul tf.multiply.

Kami akan meneruskan node X_1 dan X_2 ke node perkalian. Ini memberitahu tensorflow untuk menghubungkan node-node tersebut dalam grafik komputasi, jadi kami memintanya untuk mengambil nilai dari x dan y dan mengalikan hasilnya. Mari kita beri nama perkalian pada simpul perkalian. Ini adalah definisi keseluruhan untuk grafik komputasi sederhana kami.

Langkah 3: Jalankan operasinya

Untuk menjalankan operasi pada grafik, kita harus membuat sesi. Di Tensorflow, hal ini dilakukan oleh tf.Session(). Sekarang setelah kita memiliki sesi, kita dapat meminta sesi untuk menjalankan operasi pada grafik komputasi kita dengan memanggil sesi. Untuk menjalankan komputasi, kita perlu menggunakan run.

Saat operasi penjumlahan berjalan, ia akan melihat bahwa ia perlu mengambil nilai dari simpul X_1 dan X_2, jadi kita juga perlu memasukkan nilai untuk X_1 dan X_2. Kita dapat melakukannya dengan menyediakan parameter yang disebut feed_dict. Kita meneruskan nilai 1,2,3 untuk X_1 dan 4,5,6 untuk X_2.

Kami mencetak hasilnya dengan print(hasil). Kita akan melihat 4, 10 dan 18 untuk 1×4, 2×5 dan 3×6

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.]

Opsi untuk Memuat Data ke TensorFlow

Langkah pertama sebelum latihan a algoritma pembelajaran mesin adalah memuat data. Ada dua cara umum untuk memuat data:

1. Memuat data ke dalam memori: Ini adalah metode paling sederhana. Anda memuat semua data Anda ke dalam memori sebagai satu array. Anda dapat menulis a Python kode. Baris kode ini tidak terkait dengan Tensorflow.

2. Pipa data Tensorflow: Tensorflow memiliki API bawaan yang membantu Anda memuat data, melakukan operasi, dan memasukkan algoritma pembelajaran mesin dengan mudah. ​​Metode ini bekerja dengan sangat baik terutama saat Anda memiliki kumpulan data yang besar. Misalnya, rekaman gambar diketahui sangat besar dan tidak muat di memori. Alur data mengelola memori itu sendiri

Solusi apa yang harus digunakan?

Memuat data ke dalam memori

Jika dataset Anda tidak terlalu besar, yakni kurang dari 10 gigabyte, Anda bisa menggunakan cara pertama. Data dapat masuk ke dalam memori. Anda dapat menggunakan perpustakaan terkenal bernama Pandas untuk mengimpor file CSV. Anda akan mempelajari lebih lanjut tentang panda di tutorial berikutnya.

Memuat data dengan pipeline Tensorflow

Metode kedua berfungsi paling baik jika Anda memiliki kumpulan data yang besar. Misalnya, jika Anda memiliki kumpulan data sebesar 50 gigabyte, dan komputer Anda hanya memiliki memori 16 gigabyte, maka mesin akan mogok.

Dalam situasi ini, Anda perlu membuat pipeline Tensorflow. Pipeline akan memuat data dalam batch, atau potongan kecil. Setiap batch akan dimasukkan ke dalam pipeline dan siap untuk pelatihan. Membangun pipeline adalah solusi terbaik karena memungkinkan Anda menggunakan komputasi paralel. Artinya Tensorflow akan melatih model di beberapa CPU. Ini mendorong komputasi dan memungkinkan untuk melatih jaringan saraf yang kuat.

Anda akan melihat di tutorial berikutnya tentang cara membangun saluran yang signifikan untuk memberi makan jaringan saraf Anda.

Singkatnya, jika Anda memiliki kumpulan data kecil, Anda dapat memuat data tersebut ke memori dengan pustaka Pandas.

Jika Anda memiliki kumpulan data yang besar dan ingin menggunakan beberapa CPU, Anda akan lebih nyaman bekerja dengan pipeline Tensorflow.

Cara Membuat Pipa TensorFlow

Berikut langkah-langkah untuk membuat pipeline TensorFlow:

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

Langkah 1) Buat datanya

Pertama-tama, mari gunakan perpustakaan numpy untuk menghasilkan dua nilai acak.

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

[[0.8835775 0.23766977]]

Langkah 2) Buat placeholder

Seperti pada contoh sebelumnya, kita membuat placeholder dengan nama X. Kita perlu menentukan bentuk tensor secara eksplisit. Dalam hal ini, kita akan memuat array dengan hanya dua nilai. Kita dapat menuliskan bentuknya sebagai bentuk=[1,2]

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

Langkah 3) Tentukan metode kumpulan data

Selanjutnya, kita perlu mendefinisikan Kumpulan Data tempat kita dapat mengisi nilai placeholder x. Kita perlu menggunakan metode tf.data.Dataset.from_tensor_slices

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

Langkah 4) Buat alur

Pada langkah keempat, kita perlu menginisialisasi pipeline tempat data akan mengalir. Kita perlu membuat iterator dengan make_initializable_iterator. Kami menamakannya iterator. Kemudian kita perlu memanggil iterator ini untuk memasukkan kumpulan data berikutnya, get_next. Kami menamai langkah ini get_next. Perhatikan bahwa dalam contoh kita, hanya ada satu kumpulan data dengan hanya dua nilai.

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

Langkah 5) Jalankan operasinya

Langkah terakhir mirip dengan contoh sebelumnya. Kita memulai sesi, dan menjalankan operasi iterator. Kita memasukkan feed_dict dengan nilai yang dihasilkan oleh mati rasa. Kedua nilai ini akan mengisi placeholder x. Kemudian kita jalankan get_next untuk mencetak hasilnya.

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

Ringkasan

  • Arti TensorFlow: TensorFlow adalah perpustakaan pembelajaran mendalam paling terkenal beberapa tahun terakhir. Praktisi yang menggunakan TensorFlow dapat membangun struktur pembelajaran mendalam apa pun, seperti CNN, RNN, atau jaringan saraf tiruan sederhana.
  • TensorFlow banyak digunakan oleh akademisi, perusahaan rintisan, dan perusahaan besar. Google menggunakan TensorFlow di hampir semua produk harian Google termasuk Gmail, Photo, dan Google Search Engine.
  • Tim Google Brain mengembangkan TensorFlow untuk mengisi kesenjangan antara peneliti dan pengembang produk. Pada tahun 2015, mereka merilis TensorFlow ke publik; popularitasnya berkembang pesat. Saat ini, TensorFlow adalah pustaka pembelajaran mendalam dengan repositori terbanyak di GitHub.
  • Praktisi menggunakan Tensorflow karena mudah diterapkan dalam skala besar. Itu dibuat untuk bekerja di cloud atau di perangkat seluler seperti iOs dan Android.

Tensorflow bekerja dalam satu sesi. Setiap sesi ditentukan oleh grafik dengan perhitungan berbeda. Contoh sederhananya adalah mengalikan dengan angka. Di Tensorflow, diperlukan tiga langkah:

  1. Tentukan variabelnya
X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Tentukan perhitungannya
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Jalankan operasinya
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 praktik umum di Tensorflow adalah membuat pipeline untuk memuat data. Jika mengikuti lima langkah berikut, Anda akan dapat memuat data ke TensorFLow:

  1. Buat datanya
import numpy as np
x_input = np.random.sample((1,2))
print(x_input)
  1. Buat penggantinya
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Tentukan metode kumpulan data
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Buat saluran pipa
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Jalankan programnya
with tf.Session() as sess:  
sess.run(iterator.initializer, feed_dict={ x: x_input })  
print(sess.run(get_next))