Sains Data

Tutorial Python Tensorflow

Tutorial Python Tensorflow
Dalam pelajaran ini, kita akan melihat TensorFlow, yang merupakan perpustakaan pembelajaran mesin sumber terbuka yang digunakan untuk merancang, membina dan melatih model pembelajaran mendalam. Kemungkinan melakukan pengiraan berangka dengan perpustakaan TensorFlow grafik aliran data di mana operasi matematik diwakili sebagai nod dan data diwakili sebagai tepi antara nod tersebut.

Secara keseluruhan, kami akan merangkumi tiga topik utama dalam pelajaran ini:

  1. Apa itu Tensor dan TensorFlow
  2. Mengaplikasi algoritma ML dengan TensorFlow
  3. Kes penggunaan TensorFlow

TensorFlow adalah pakej Python yang sangat baik oleh Google yang menggunakan paradigma pengaturcaraan aliran data dengan baik untuk pengiraan matematik yang sangat dioptimumkan. Beberapa ciri TensorFlow adalah:

Oleh kerana semua ciri ini dan rangkaian algoritma pembelajaran mesin yang diimplementasikan oleh TensorFlow, menjadikannya perpustakaan skala produksi. Mari selami konsep dalam TensorFlow agar tangan kita kotor dengan kod selepas itu.

Memasang TensorFlow

Oleh kerana kita akan menggunakan Python API untuk TensorFlow, ada baiknya kita mengetahui bahawa ia berfungsi dengan kedua Python 2.7 dan 3.3+ versi. Mari pasang perpustakaan TensorFlow sebelum kita beralih kepada contoh dan konsep sebenar. Terdapat dua cara untuk memasang pakej ini. Yang pertama termasuk menggunakan pengurus pakej Python, pip:

memasang pip tensorflow

Cara kedua berkaitan dengan Anaconda, kita dapat memasang pakej sebagai:

conda install -c conda-forge tensorflow

Jangan ragu untuk mencari binaan malam dan versi GPU di halaman pemasangan rasmi TensorFlow.

Saya akan menggunakan pengurus Anaconda untuk semua contoh dalam pelajaran ini. Saya akan melancarkan Notebook Jupyter untuk perkara yang sama:

Sekarang kita sudah siap dengan semua pernyataan import untuk menulis beberapa kod, mari kita mula menyelami pakej SciPy dengan beberapa contoh praktikal.

Apa itu Tensor?

Tensor adalah struktur data asas yang digunakan dalam Tensorflow. Ya, mereka hanyalah cara untuk mewakili data dalam pembelajaran mendalam. Mari gambarkannya di sini:

Seperti yang dijelaskan dalam gambar, tensor boleh diistilahkan sebagai susunan n-dimensi yang membolehkan kita mewakili data dalam dimensi yang kompleks. Kita boleh memikirkan setiap dimensi sebagai ciri data yang berbeza dalam pembelajaran mendalam. Ini bermaksud Tensor boleh berkembang menjadi cukup kompleks ketika datang ke set data kompleks dengan banyak fitur.

Setelah kita mengetahui apa itu Tensor, saya rasa agak mudah untuk mengetahui apa yang berlaku di TensorFlow. Istilah itu bermaksud bagaimana tensor atau ciri dapat mengalir dalam set data untuk menghasilkan output yang berharga ketika kita melakukan pelbagai operasi padanya.

Memahami TensorFlow dengan Pemalar

Sama seperti yang kita baca di atas, TensorFlow membolehkan kita melakukan algoritma pembelajaran mesin di Tensors untuk menghasilkan output yang berharga. Dengan TensorFlow, merancang dan melatih model Pembelajaran Dalam adalah lurus ke hadapan.

TensorFlow dilengkapi dengan bangunan Graf Pengiraan. Grafik Pengiraan adalah grafik aliran data di mana operasi matematik diwakili sebagai nod dan data diwakili sebagai tepi antara nod tersebut. Mari kita tulis coretan kod yang sangat mudah untuk memberikan visualisasi yang konkrit:

import tensorflow sebagai tf
x = tf.pemalar (5)
y = tf.pemalar (6)
z = x * y
mencetak (z)

Apabila kita menjalankan contoh ini, kita akan melihat output berikut:

Mengapa pendaraban itu salah? Itu bukan yang kami harapkan. Ini berlaku kerana ini bukan bagaimana kita dapat menjalankan operasi dengan TensorFlow. Pertama, kita perlu memulakan a sesi untuk membuat graf pengiraan berfungsi,

Dengan Sesi, kita dapat merangkum kawalan operasi dan keadaan Tensor. Ini bermaksud bahawa sesi juga dapat menyimpan hasil grafik pengiraan sehingga dapat menyampaikan hasilnya ke operasi berikutnya dalam urutan pelaksanaan saluran pipa. Mari buat sesi sekarang untuk mendapatkan hasil yang betul:

# Mulakan dengan objek sesi
sesi = tf.Sesi ()
# Sediakan pengiraan untuk sesi dan simpan
hasil = sesi.lari (z)
# Cetak hasil pengiraan
cetak (hasil)
# Sesi tutup
sesi.tutup ()

Kali ini, kami memperoleh sesi dan memberikannya pengiraan yang diperlukan untuk menjalankan nod. Apabila kita menjalankan contoh ini, kita akan melihat output berikut:

Walaupun kami menerima amaran dari TensorFlow, kami masih mendapat output yang betul dari pengiraan.

Operasi Tensor elemen tunggal

Sama seperti apa yang kita gandakan dua Tensor tetap dalam contoh terakhir, kita mempunyai banyak operasi lain di TensorFlow yang dapat dilakukan pada satu elemen:

Operasi elemen tunggal bermaksud bahawa walaupun anda menyediakan array, operasi akan dilakukan pada setiap elemen array tersebut. Sebagai contoh:

import tensorflow sebagai tf
import numpy sebagai np
tensor = np.tatasusunan ([2, 5, 8])
tensor = tf.convert_to_tensor (tensor, dtype = tf.apungan64)
dengan tf.Sesi () sebagai sesi:
cetak (sesi.lari (tf.cos (tensor)))

Apabila kita menjalankan contoh ini, kita akan melihat output berikut:

Kami memahami dua konsep penting di sini:

  1. Mana-mana array NumPy dapat dengan mudah ditukar menjadi Tensor dengan bantuan fungsi convert_to_tensor
  2. Operasi dilakukan pada setiap elemen array NumPy

Pemegang Tempat dan Pemboleh ubah

Dalam salah satu bahagian sebelumnya, kami melihat bagaimana kami dapat menggunakan pemalar Tensorflow untuk membuat grafik komputasi. Tetapi TensorFlow juga membolehkan kita mengambil input semasa dijalankan supaya grafik pengiraan dapat bersifat dinamik. Ini mungkin dilakukan dengan bantuan Pemegang Tempat dan Pembolehubah.

Sebenarnya, Pemegang Tempat tidak mengandungi data apa pun dan mesti diberi input yang sah semasa waktu proses dan seperti yang diharapkan, tanpa input, mereka akan menghasilkan ralat.

Pemegang Tempat boleh diistilahkan sebagai perjanjian dalam grafik bahawa input pasti akan diberikan pada waktu berjalan. Berikut adalah contoh Pemegang Tempat:

import tensorflow sebagai tf
# Dua tempat letak
x = tf. pemegang tempat (tf.terapung32)
y = tf. pemegang tempat (tf.terapung32)
# Menetapkan operasi pendaraban w.r.t. a & b ke simpul mul
z = x * y
# Buat sesi
sesi = tf.Sesi ()
# Lulus nilai untuk placeholder
hasil = sesi.jalankan (z, x: [2, 5], y: [3, 7])
cetak ('Mengalikan x dan y:', hasil)

Apabila kita menjalankan contoh ini, kita akan melihat output berikut:

Sekarang kita mempunyai pengetahuan mengenai Pemegang Tempat, mari kita beralih ke Pemboleh ubah. Kami tahu bahawa output persamaan boleh berubah untuk set input yang sama dari masa ke masa. Jadi, apabila kita melatih pemboleh ubah model kita, ia dapat mengubah tingkah lakunya dari masa ke masa. Dalam senario ini, pemboleh ubah membolehkan kita menambahkan parameter yang dapat dilatih ini ke grafik komputasi kita. Pemboleh ubah boleh didefinisikan sebagai berikut:

x = tf.Pembolehubah ([5.2], dtype = tf.terapung32)

Dalam persamaan di atas, x adalah pemboleh ubah yang diberikan nilai awalnya dan jenis data. Sekiranya kita tidak memberikan jenis data, ia akan disimpulkan oleh TensorFlow dengan nilai awalnya. Rujuk jenis data TensorFlow di sini.

Tidak seperti pemalar, kita perlu memanggil fungsi Python untuk memulakan semua pemboleh ubah grafik:

init = tf.global_variables_initializer ()
sesi.lari (init)

Pastikan untuk menjalankan fungsi TensorFlow di atas sebelum kita menggunakan grafik kita.

Regresi Linear dengan TensorFlow

Linear Regression adalah salah satu algoritma yang paling biasa digunakan untuk menjalin hubungan dalam data berterusan yang diberikan. Hubungan antara titik koordinat, katakan x dan y, disebut a hipotesis. Apabila kita bercakap mengenai Regresi Linear, hipotesis adalah garis lurus:

y = mx + c

Di sini, m adalah cerun garis dan di sini, ia adalah vektor yang mewakili berat. c adalah pekali malar (pintasan-y) dan di sini, ia mewakili Berat sebelah. Berat dan berat sebelah disebut parameter model.

Regresi linier membolehkan kita menganggarkan nilai berat dan bias sehingga kita mempunyai minimum fungsi kos. Akhirnya, x adalah pemboleh ubah bebas dalam persamaan dan y adalah pemboleh ubah bersandar. Sekarang, marilah kita mula membina model linear di TensorFlow dengan coretan kod ringkas yang akan kami jelaskan:

import tensorflow sebagai tf
# Pemboleh ubah untuk cerun parameter (W) dengan nilai awal sebagai 1.1
W = tf.Pembolehubah ([1.1], tf.terapung32)
# Pemboleh ubah untuk bias (b) dengan nilai awal sebagai -1.1
b = tf.Pembolehubah ([- 1.1], tf.terapung32)
# Pemegang tempat untuk memberikan input atau pemboleh ubah bebas, dilambangkan dengan x
x = tf.pemegang tempat (tf.terapung32)
# Persamaan Garisan atau Regresi Linear
linear_model = W * x + b
# Memulakan semua pemboleh ubah
sesi = tf.Sesi ()
init = tf.global_variables_initializer ()
sesi.lari (init)
# Laksanakan model regresi
cetak (sesi.jalankan (linear_model x: [2, 5, 7, 9]))

Di sini, kami melakukan apa yang kami jelaskan sebelumnya, mari kita ringkaskan di sini:

Apabila kita menjalankan contoh ini, kita akan melihat output berikut:

Coretan kod ringkas hanya memberikan idea asas tentang bagaimana kita dapat membina model regresi. Tetapi kami masih perlu melakukan beberapa langkah lagi untuk menyelesaikan model yang kami bina:

Fungsi Kehilangan dan Pengesahan Model

Untuk mengesahkan model, kita harus mempunyai ukuran bagaimana penyimpangan output semasa dari output yang diharapkan. Terdapat pelbagai fungsi kehilangan yang boleh digunakan di sini untuk pengesahan tetapi kita akan melihat salah satu kaedah yang paling biasa, Jumlah Kesalahan Kuadrat atau SSE.

Persamaan untuk SSE diberikan sebagai:

E = 1/2 * (t - y) 2

Di sini:

Sekarang, mari kita tulis coretan kod bersambung ke coretan terakhir untuk mencerminkan nilai kerugian:

y = tf.pemegang tempat (tf.terapung32)
ralat = linear_model - y
squared_errors = tf.segi empat sama (ralat)
kerugian = tf.kurangkan_sum (kesalahan kuadrat)
cetak (sesi.lari (kerugian, x: [2, 5, 7, 9], y: [2, 4, 6, 8]))

Apabila kita menjalankan contoh ini, kita akan melihat output berikut:

Jelas, nilai kerugian sangat rendah untuk model regresi linier yang diberikan.

Kesimpulannya

Dalam pelajaran ini, kami melihat salah satu pakej pembelajaran mendalam dan pembelajaran Mesin yang paling popular, TensorFlow. Kami juga membuat model regresi linier yang mempunyai ketepatan yang sangat tinggi.

Konfigurasikan Ubuntu 18.04 LTS sebagai Pelayan Cache Pakej Ubuntu
Sekiranya anda menjalankan banyak mesin Ubuntu di rangkaian peribadi anda, maka kemungkinan banyak orang akan memuat turun pakej Ubuntu yang sama. Mua...
Memasang pelayan NIS di Ubuntu 18.04 LTS
Bentuk lengkap NIS adalah Network Information Server. Pelayan NIS menyimpan semua maklumat pengguna dalam pangkalan data. Pelanggan NIS boleh mengguna...
Pasang Alat Pembangun dan IDE Terkini di Ubuntu menggunakan Ubuntu Make
Ubuntu Make adalah utiliti baris perintah untuk memasang versi terkini alat dan IDE pembangun (i.e PHPStorm, WebStorm, PyCharm, Android Studio, Eclips...