Apa itu TensorFlow? Bagaimana Cara Kerjanya? Architekstur & Fitur
โก Ringkasan Cerdas
TensorFlow adalah platform sumber terbuka. Google Dirancang untuk pembelajaran mesin, merepresentasikan setiap komputasi sebagai grafik aliran data tensor. Gambaran umum ini mencakup arsitektur, komponen, cara kerja perhitungan, dan cara memasukkan data melalui saluran input.

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, pustaka pembelajaran mendalam yang paling terkenal di dunia adalah GoogleTensorFlow. Google Menerapkan pembelajaran mesin di seluruh produknya untuk meningkatkan pencarian, penerjemahan, pemberian keterangan gambar, dan rekomendasi.
Contoh TensorFlow
Sebagai contoh konkret, Google Pengguna dapat merasakan pengalaman pencarian yang lebih cepat dan lebih akurat dengan AI. Jika pengguna mengetikkan kata kunci di bilah pencarian, Google memberikan rekomendasi tentang kata apa yang mungkin menjadi kata selanjutnya.

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 menyimpan kumpulan data yang besar, tetapi juga menjalankan infrastruktur komputasi yang sangat besar, sehingga TensorFlow dibangun untuk dapat diskalakan sejak awal. TensorFlow adalah pustaka yang dikembangkan oleh Google Tim Brain akan mempercepat penelitian pembelajaran mesin dan jaringan saraf dalam.
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 lalu, deep learning mulai mengungguli semua algoritma machine learning lainnya ketika diberikan data dalam jumlah besar. Google melihat bahwa mereka dapat menggunakan jaringan saraf dalam ini untuk meningkatkan layanan mereka:
- Gmail
- Foto
- Google mesin pencari
Mereka membangun sebuah kerangka kerja yang disebut TensorFlow agar para peneliti dan pengembang dapat mengerjakan model yang sama, kemudian menerapkannya dalam skala yang dapat digunakan oleh banyak orang.
TensorFlow dirilis secara publik pada November 2015, dan versi 1.0 menyusul pada Februari 2017. Perubahan yang jauh lebih besar terjadi pada... TensorFlow 2.0 pada September 2019, yang menjadikan eksekusi eager sebagai default dan mengadopsi Keras sebagai API tingkat tinggi standar. Mulai versi 2.16 dan seterusnya, Keras 3 menjadi default, dan kode model yang sama juga dapat dijalankan di JAX atau Py.Torch backends.
TensorFlow dirilis di bawah lisensi Apache 2.0, sehingga Anda dapat menggunakan, memodifikasi, dan mendistribusikannya, termasuk secara komersial, tanpa perlu membayar. Google.
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 menerima input berupa 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.
Di mana TensorFlow dapat dijalankan?
Persyaratan perangkat keras dan perangkat lunak TensorFlow terbagi menjadi dua fase:
Fase pengembanganIni adalah tahap di mana Anda melatih model, biasanya di komputer desktop atau laptop.
Fase eksekusi atau inferensiSetelah pelatihan selesai, model tersebut dapat dijalankan di berbagai platform:
- 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 video game. Sekitar tahun 2009, para peneliti Stanford menunjukkan bahwa GPU sangat efisien dalam operasi matriks dan aljabar linier yang dibutuhkan oleh jaringan saraf. Pembelajaran mendalam sangat bergantung pada perkalian matriks. TensorFlow sangat cepat dalam menghitung perkalian matriks karena ditulis dalam bahasa pemrograman tertentu. C++. Meskipun diterapkan di C++, TensorFlow terutama dapat diakses dan dikontrol oleh bahasa lain, Python.
Satu fitur penting lainnya adalah Papan Tensoryang memvisualisasikan grafik, metrik pelatihan, dan distribusi bobot saat model berjalan.
Komponen TensorFlow
tensor
Nama TensorFlow diambil langsung dari kerangka kerja intinya: tensorDi TensorFlow, semua komputasi melibatkan tensor. Tensor adalah sebuah 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:
- Perangkat lunak ini dapat dijalankan pada berbagai CPU atau GPU, bahkan pada 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
- Sebuah graf memiliki simpul dan sisi. Setiap simpul membawa operasi matematika dan menghasilkan keluaran, sedangkan sisi-sisi tersebut menggambarkan hubungan masukan dan keluaran antar simpul. Tensor itu sendiri bergerak sepanjang sisi-sisi tersebut.
Mengapa TensorFlow Populer?
TensorFlow banyak diadopsi karena mudah diakses di setiap tingkat keahlian. API-nya mencakup semuanya, mulai dari model Keras tiga baris hingga CNN atau RNN yang dibuat secara manual. Karena komputasi diekspresikan sebagai grafik, TensorBoard dapat memvisualisasikan jaringan dan membuat proses debugging jauh lebih mudah. โโSelain itu, TensorFlow juga dapat diterapkan dalam skala besar, berjalan di CPU, GPU, dan TPU, serta di perangkat seluler melalui TensorFlow Lite.
TensorFlow tetap menjadi salah satu dari dua kerangka kerja pembelajaran mendalam yang paling banyak digunakan di GitHub, bersama dengan Python.Torch.
TensorFlow Algorithms
TensorFlow menyediakan estimator tingkat tinggi untuk beberapa algoritma klasik. Di TensorFlow 1.x, estimator ini berada di bawah tf.estimator:
- Regresi linier: tf.estimator.LinearRegressor
- Klasifikasi: tf.estimator.LinearClassifier
- Klasifikasi pembelajaran mendalam: tf.estimator.DNNClassifier
- Pembelajaran luas dan mendalam: tf.estimator.DNNLinearCombinedClassifier
- Regresi pohon yang ditingkatkan: tf.estimator.BoostedTreesRegressor
- Klasifikasi pohon yang ditingkatkan: tf.estimator.BoostedTreesClassifier
TensorFlow vs PyTorch: Mana yang Harus Anda Pilih?
TensorFlow dan PyTorch adalah dua kerangka kerja pembelajaran mendalam yang dominan, dan perbedaan praktisnya telah menyempit secara signifikan sejak TensorFlow 2.0 mengadopsi eksekusi eager.
| Kriteria | TensorFlow | PyTorch |
|---|---|---|
| Dikembangkan oleh | Google Otak | Meta AI |
| Execution | Antusias, dengan kompilasi grafik opsional. | Antusias, dengan kompilasi opsional |
| API tingkat tinggi | Keras, dibangun di | Pustaka terpisah seperti Lightning |
| Seluler dan tepi | Mahir, melalui TensorFlow Lite | Meningkatkan diri melalui EksekusiTorch |
| Penyebaran browser | TensorFlow.js | Membutuhkan konversi ke ONNX |
| Benteng pertahanan yang khas | Produksi dan penyebaran | Penelitian dan eksperimen |
Jawaban pragmatisnya: pilih TensorFlow ketika model harus dikirim ke perangkat seluler, peramban, atau tumpukan penyajian terkelola, dan pilih Python.TorSaat Anda melakukan iterasi pada arsitektur model, Keras 3, yang merupakan standar dari TensorFlow 2.16 dan seterusnya, semakin mempermudah keputusan tersebut, karena kode Keras yang sama dapat dijalankan pada TensorFlow, JAX, atau Py.Torch backend.
Cara Kerja Perhitungan di TensorFlow
โ ๏ธ Catatan versi: Panduan langkah demi langkah di bawah ini menggunakan TensorFlow 1.x gaya grafik dan sesi, yang merupakan cara paling jelas untuk melihat bagaimana grafik aliran data sebenarnya bekerja. Fungsi tf.placeholder(), tf.Session() dan make_initializable_iterator() telah dihapus di TensorFlow 2.0. dan akan menimbulkan AttributeError pada instalasi saat ini. Bagian tersebut TensorFlow 1.x vs TensorFlow 2.x Di bawah ini terdapat padanan modern untuk setiap contoh.
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 sederhana. Mari kita buat grafik komputasi yang mengalikan dua angka.
Dalam contoh ini, kita akan mengalikan X_1 dan X_2. TensorFlow akan membuat sebuah node untuk menghubungkan operasi tersebut. Dalam contoh kita, node tersebut bernama multiply. Setelah graf ditentukan, mesin komputasi TensorFlow akan mengalikan X_1 dan X_2.
Terakhir, kita akan menjalankan sesi TensorFlow yang akan menjalankan grafik komputasi dengan nilai X_1 dan X_2 dan mencetak hasil perkaliannya.
Mari kita definisikan node input X_1 dan X_2. Saat kita membuat node di TensorFlow, kita harus memilih jenis node apa yang akan dibuat. Node X1 dan X2 akan menjadi node placeholder. Placeholder menetapkan nilai baru setiap kali kita melakukan perhitungan. Kita akan membuatnya sebagai node placeholder TF.dot.
Langkah 1: Tentukan variabelnya
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
Placeholder membutuhkan tipe data. Ini adalah angka, jadi tf.float32 adalah pilihan yang tepat. Argumen nama bersifat opsional tetapi berguna, karena itu adalah label yang muncul dalam visualisasi TensorBoard dari grafik. X_2 didefinisikan dengan cara yang sama.
Langkah 2: Tentukan komputasinya
multiply = tf.multiply(X_1, X_2, name = "multiply")
Sekarang kita dapat mendefinisikan node yang melakukan operasi perkalian. Di TensorFlow, kita dapat melakukannya dengan membuat node 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 graf, kita harus membuat sesi. Di TensorFlow, hal ini dilakukan dengan `tf.Session()`. Sekarang setelah kita memiliki sesi, kita dapat meminta sesi tersebut untuk menjalankan operasi pada graf komputasi kita dengan memanggil `session`. Untuk menjalankan komputasi, kita perlu menggunakan `run`.
Saat operasi perkalian dijalankan, ia membutuhkan nilai node X_1 dan X_2, jadi Anda memasukkannya saat runtime. Kita dapat melakukan itu dengan memberikan parameter yang disebut feed_dict. Kita memberikan 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 Caranya adalah dengan memuat data. Ada dua cara umum untuk memuat data:
1. Memuat data ke dalam memoriIni adalah metode paling sederhana. Anda memuat semua data Anda ke dalam memori sebagai satu array tunggal. Anda menulis kode biasa. Python Untuk ini, tidak ada satu pun yang spesifik untuk TensorFlow.
2. Pipeline data TensorFlowTensorFlow menyediakan API bawaan yang memuat data, menerapkan transformasi, dan memasukkan data ke model. Metode ini bekerja sangat baik, terutama ketika Anda memiliki dataset yang besar. Misalnya, data gambar dikenal sangat besar dan tidak muat di memori. Pipeline data mengelola memori dengan sendirinya.
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.
Muat 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 membangun pipeline TensorFlow. Pipeline akan memuat data secara batch, atau dalam potongan kecil. Setiap batch akan dimasukkan ke dalam pipeline dan siap untuk pelatihan. Membangun pipeline adalah solusi yang sangat baik karena memungkinkan Anda untuk menggunakan komputasi paralel. Artinya, TensorFlow akan melatih model di beberapa CPU. Hal ini mempercepat komputasi dan membuatnya praktis untuk melatih jaringan yang lebih besar.
Singkatnya: muat dataset kecil ke dalam memori dengan pandas, dan gunakan pipeline TensorFlow ketika datanya besar atau ketika Anda menginginkan pemuatan paralel di beberapa CPU.
Cara Membuat Pipa TensorFlow
Berikut langkah-langkah untuk membuat pipeline TensorFlow:
Pada contoh sebelumnya, kita 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))
[0.8835775 0.23766978]
TensorFlow 1.x vs TensorFlow 2.x: Apa yang Berubah?
TensorFlow 2.0 merupakan penulisan ulang API yang berorientasi pada pengguna secara signifikan. Memahami perbedaannya sangat penting, karena sebagian besar kode tutorial daring, termasuk contoh-contoh di atas, menargetkan gaya 1.x.
| Konsep | TensorFlow 1.x | TensorFlow 2.x |
|---|---|---|
| Model eksekusi | Definisikan grafiknya, lalu jalankan. | Secara default, operasi berjalan dengan segera karena sudah diatur ke mode eager. |
| Data pemberian makan | tf.placeholder ditambah feed_dict | Lulus Python nilai atau tensor secara langsung |
| Menjalankan operasi | tf.Session().run() | Panggil fungsi tersebut, tidak perlu sesi. |
| API tingkat tinggi | tf.estimator | Keras, tf.keras |
| Optimasi grafik | Selalu berbasis grafik | Aktifkan dengan decorator @tf.function |
| Mengiterasi kumpulan data | make_initializable_iterator() | Polos Python perulangan for pada dataset |
Contoh perkalian, ditulis ulang. Tiga langkah dan satu sesi menjadi satu baris, karena operasi dieksekusi saat dipanggil:
import tensorflow as tf X_1 = tf.constant([1, 2, 3], dtype=tf.float32) X_2 = tf.constant([4, 5, 6], dtype=tf.float32) result = tf.multiply(X_1, X_2, name="multiply") print(result.numpy()) # [ 4. 10. 18.]
Pipeline input, ditulis ulang. Tidak diperlukan placeholder maupun objek iterator:
import numpy as np import tensorflow as tf x_input = np.random.sample((1, 2)) dataset = tf.data.Dataset.from_tensor_slices(x_input) for batch in dataset: print(batch.numpy())
Jika Anda membutuhkan kecepatan grafik yang dikompilasi, bungkus fungsi tersebut dengan @tf.function dan TensorFlow. tracmenggabungkannya menjadi satu secara otomatis. Skrip Legacy 1.x juga dapat dijalankan tanpa perubahan melalui namespace tf.compat.v1, meskipun jalur tersebut hanya untuk pemeliharaan dan tidak boleh digunakan untuk pekerjaan baru.
TensorFlow: Poin-Poin Penting dan Kesimpulan Code Referensi
- 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 sebagian besar digunakan oleh akademisi, perusahaan rintisan, dan perusahaan besar. Google menggunakan TensorFlow di hampir semua hal Google produk sehari-hari termasuk Gmail, Foto dan Google Mesin pencari.
- The Google Tim Brain mengembangkan TensorFlow untuk menjembatani kesenjangan antara peneliti dan pengembang produk. Pada tahun 2015, mereka mempublikasikan TensorFlow; dan popularitasnya berkembang pesat. Saat ini, TensorFlow adalah pustaka pembelajaran mendalam dengan repositori terbanyak di GitHub.
- Para praktisi menggunakan TensorFlow karena mudah diterapkan dalam skala besar, di cloud, di browser, atau di perangkat seluler yang menjalankan iOS dan Android.
TensorFlow bekerja dalam sebuah sesi. Setiap sesi didefinisikan oleh sebuah grafik dengan komputasi yang berbeda. Contoh sederhananya adalah mengalikan dua angka. Di TensorFlow, tiga langkah diperlukan:
- Tentukan variabelnya
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
- Tentukan perhitungannya
multiply = tf.multiply(X_1, X_2, name = "multiply")
- 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 Anda mengikuti lima langkah ini, Anda akan dapat memuat data ke TensorFlow:
- Buat datanya
import numpy as np
x_input = np.random.sample((1,2))
print(x_input)
- Buat penggantinya
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Tentukan metode kumpulan data
dataset = tf.data.Dataset.from_tensor_slices(x)
- Buat saluran pipa
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Jalankan programnya
with tf.Session() as sess:
sess.run(iterator.initializer, feed_dict={x: x_input})
print(sess.run(get_next))
