Dalam codelab ini, Anda akan melatih model untuk membuat prediksi dari data numerik yang menjelaskan sekumpulan mobil. Show
Latihan ini akan menunjukkan langkah-langkah umum untuk melatih berbagai jenis model, tetapi akan menggunakan set data kecil dan model sederhana (dangkal). Tujuan utamanya adalah membantu Anda memahami istilah, konsep, dan sintaksis dasar seputar model pelatihan dengan TensorFlow.js dan menyediakan batu loncatan untuk eksplorasi dan pembelajaran lebih lanjut. Karena kita melatih model untuk memprediksi bilangan berkelanjutan, tugas ini terkadang disebut sebagai tugas . Kita akan melatih model dengan menampilkan banyak contoh input disertai dengan output yang benar. Ini disebut sebagai pembelajaran yang diawasi. Hal yang akan Anda buatAnda akan membuat halaman web yang menggunakan TensorFlow.js untuk melatih model di browser. Dengan mempertimbangkan “Tenaga kuda” pada sebuah mobil, model ini akan memprediksi “Mil per Galon” (MPG) untuk mobil tersebut. Untuk melakukannya, Anda akan:
Hal yang akan Anda pelajari
Hal yang akan Anda perlukan
Membuat halaman HTML dan menyertakan JavaScriptSalin kode berikut ke file html yang dipanggil 6
Membuat file JavaScript untuk kode
Catatan: Jika Anda berada di kios CodeLab, sebaiknya gunakan glitch.com untuk menyelesaikan codelab ini. Kami telah menyiapkan project awal untuk Anda remix yang memuat tensorflow.js. Catatan: Petunjuk penyiapan ini (dan tutorial selengkapnya) berfokus pada pemuatan file melalui tag skrip. Banyak developer JavaScript memilih menggunakan npm untuk menginstal dependensi dan bundler untuk mem-build project mereka. Jika Anda termasuk developer di atas, Anda juga dapat menginstal tensorflow.js dan tfjs-vis dari NPM. Melakukan pengujianSetelah Anda mendapatkan file HTML dan JavaScript, uji file tersebut. Buka file index.html di browser dan buka konsol devtools. Jika semuanya berfungsi, akan ada dua variabel global yang dibuat dan tersedia di konsol devtools:
Buka alat developer browser, di sana Anda akan melihat pesan yang bertuliskan 9 dalam output konsol. Jika demikian, Anda siap melanjutkan ke langkah berikutnya.Sebagai langkah pertama, mari kita muat, format, dan visualisasikan data yang ingin digunakan untuk melatih model. Kami akan memuat set data "mobil" dari file JSON yang telah kami hosting untuk Anda. Set data ini berisi berbagai fitur tentang setiap mobil yang diberikan. Untuk tutorial ini, kami hanya ingin mengekstrak data tentang Tenaga kuda dan Mil Per Galon. Tambahkan kode berikut ke file 0 Anda
Tindakan ini juga akan menghapus entri yang tidak memiliki mil per galon atau tenaga kuda yang ditentukan. Mari kita petakan data ini dalam diagram sebar untuk melihat tampilannya. 0 Anda.
Saat Anda memuat ulang halaman. Anda akan melihat panel di sisi kiri halaman dengan diagram sebar yang berisi data. Tampilannya akan terlihat seperti berikut. Panel ini dikenal sebagai visor dan disediakan oleh tfjs-vis. Panel ini menyediakan tempat yang nyaman untuk menampilkan visualisasi. Umumnya saat menangani data, sebaiknya cari cara untuk melihat data Anda dan membersihkannya jika perlu. Dalam hal ini, kita harus menghapus entri tertentu dari 2 yang tidak memiliki semua kolom wajib diisi. Memvisualisasikan data dapat memberikan gambaran tentang apakah ada struktur pada data yang dapat dipelajari model.Kita dapat melihat dari pemetaan data di atas bahwa ada korelasi negatif antara tenaga kuda dan MPG, yaitu saat tenaga kuda naik, mobil umumnya mendapatkan lebih sedikit mil per galon. Ingat: Jika tidak ada struktur (pola) dalam data (yaitu data bersifat acak), model tidak akan benar-benar dapat mempelajari apa pun. Membuat konsep tugasData input kita sekarang akan terlihat seperti ini.
Tujuan kita adalah melatih model yang akan mengambil satu angka, Tenaga kuda, dan mempelajari cara memprediksi satu angka, Mil per Galon. Ingatlah pemetaan one-to-one tersebut, karena akan penting untuk bagian berikutnya. Kita akan memasukkan contoh ini, tenaga kuda dan MPG, ke jaringan neural yang akan mempelajari formula (atau fungsi) untuk memprediksi MPG dengan tenaga kuda tertentu dari contoh ini. Berdasarkan contoh ini, pembelajaran yang kita dapatkan jawabannya disebut Pembelajaran yang Diawasi. Di bagian ini, kita akan menuliskan kode untuk menjelaskan arsitektur model. Arsitektur model juga bisa dianggap sebagai "fungsi yang akan dijalankan model saat dieksekusi", atau "algoritme yang akan digunakan model untuk menghitung jawabannya". Model ML adalah algoritme yang mengambil input dan menghasilkan output. Ketika menggunakan jaringan neural, algoritme adalah sekumpulan lapisan neuron dengan 'bobot' (angka) yang mengatur output-nya. Proses pelatihan mempelajari nilai yang cocok untuk bobot tersebut. Tambahkan fungsi berikut kefile 0 Anda untuk menentukan arsitektur model.
Ini adalah salah satu model yang paling sederhana yang dapat kita tentukan di tensorflow.js, mari sedikit kita uraikan setiap barisnya. Membuat instance model
Tindakan ini akan membuat instance objek . Model ini karena input-nya mengalir langsung ke output-nya. Jenis model lainnya dapat memiliki cabang, atau bahkan beberapa input dan output, tetapi dalam banyak kasus, model Anda akan berurutan. Model berurutan juga memiliki . Menambahkan lapisan
Tindakan ini menambahkan lapisan input ke jaringan, yang secara otomatis terhubung ke lapisan 6 dengan satu unit tersembunyi. Lapisan 6 adalah jenis lapisan yang mengalikan input-nya dengan matriks (disebut bobot), lalu menambahkan angka (disebut bias) ke hasilnya. Karena ini adalah lapisan pertama jaringan, kita perlu menentukan 8. 8 adalah 0 karena kita memiliki angka 1 sebagai input (tenaga kuda mobil tertentu). 2 menetapkan seberapa besar matriks bobot dalam lapisan. Dengan menyetelnya ke 1 di sini, artinya akan ada 1 bobot untuk setiap fitur input data.Catatan: Lapisan padat memiliki istilah bias secara default, sehingga kita tidak perlu menetapkan useBias ke benar (true). Kita akan menghilangkannya dari panggilan lebih lanjut ke 3
Kode di atas menghasilkan lapisan output. Kita menetapkan 2 ke 1 karena ingin menghasilkan output angka 1.Catatan: Dalam contoh ini, karena lapisan tersembunyi memiliki 1 unit, sebenarnya kita tidak perlu menambahkan lapisan output akhir di atas (yaitu, kita dapat menggunakan lapisan tersembunyi sebagai lapisan output). Namun, dengan menentukan lapisan output terpisah, kita dapat mengubah jumlah unit dalam lapisan tersembunyi sekaligus mempertahankan pemetaan one-to-one input dan output. Membuat instanceTambahkan kode berikut ke fungsi 7 yang telah kita tentukan sebelumnya.
Tindakan ini akan membuat instance model dan menampilkan ringkasan lapisan di halaman web. Untuk mendapatkan manfaat performa TensorFlow.js yang membuat model machine learning pelatihan menjadi praktis, kita perlu melakukan konversi data menjadi . Kita juga akan melakukan sejumlah transformasi pada data yang merupakan praktik terbaik, yaitu pengacakan dan . Tambahkan kode berikut ke file 0 Anda 0Mari uraikan apa yang terjadi di sini. Mengacak data 1Di sini, kita mengacak urutan contoh yang akan kita masukkan ke algoritme pelatihan. Pengacakan itu penting karena biasanya selama pelatihan, set data dibagi menjadi subset yang lebih kecil, yang disebut batch, tempat model dilatih. Pengacakan membantu setiap batch memiliki berbagai data dari seluruh distribusi data. Dengan melakukannya, kita membantu model:
Praktik Terbaik 1: Anda harus selalu mengacak data sebelum menyerahkannya ke algoritme pelatihan di TensorFlow.js Melakukan konversi ke tensor 2Di sini, kita membuat dua array. Satu untuk contoh input (entri tenaga kuda), dan satu lagi untuk nilai output yang benar (yang dikenal sebagai label dalam machine learning). Kemudian kita mengonversi setiap data array ke tensor 2d. Tensor akan memiliki bentuk 9. Di sini, kita memiliki contoh 0 dan setiap contoh memiliki 1 fitur input (tenaga kuda).Menormalisasi data 3Selanjutnya, kita akan melakukan praktik terbaik lainnya untuk pelatihan machine learning. Kita menormalisasi data. Di sini, kita menormalisasi data menjadi rentang numerik 2 menggunakan . Normalisasi penting untuk dilakukan karena bagian internal dari banyak model machine learning yang akan Anda build dengan tensorflow.js dirancang agar dapat berfungsi dengan angka yang tidak terlalu besar. Rentang umum untuk menormalisasi data agar menyertakan 3 atau 4. Anda akan lebih berhasil dalam melatih model jika sudah terbiasa menormalisasi data ke beberapa rentang yang wajar.Praktik Terbaik 2: Anda harus selalu mempertimbangkan untuk menormalisasi data sebelum melakukan pelatihan. Beberapa set data dapat dipelajari tanpa normalisasi, tetapi menormalisasi data sering kali menghilangkan seluruh kelas masalah yang akan mencegah pembelajaran yang efektif. Anda dapat menormalisasi data sebelum mengubahnya menjadi tensor. Itu akan kita lakukan setelahnya karena kita dapat memanfaatkan vektorisasi di TensorFlow.js untuk melakukan operasi penskalaan min-maks tanpa menulis secara eksplisit untuk loop. Mengembalikan data dan batas normalisasi 4Kita ingin mempertahankan nilai yang digunakan untuk normalisasi selama pelatihan, sehingga kita dapat membatalkan normalisasi output agar mengembalikannya ke skala awal dan agar kita dapat menormalisasi data input mendatang dengan cara yang sama. Dengan instance model yang dibuat dan data yang direpresentasikan sebagai tensor, kita memiliki semua hal yang diperlukan untuk memulai proses pelatihan. Salin fungsi berikut ke file 0 Anda. 5Mari bahas secara mendetail. Bersiap untuk pelatihan 6Kita harus 'mengompilasi' model sebelum melatihnya. Untuk melakukannya, kita harus menentukan sejumlah hal yang sangat penting:
7Selanjutnya, kita memilih ukuran batch dan sejumlah iterasi pelatihan:
Memulai loop pelatihan 8 1 adalah fungsi yang kita panggil untuk memulai loop pelatihan. Ini adalah fungsi asinkron, sehingga kita mengembalikan promise yang diberikannya agar pemanggil dapat menentukan kapan pelatihan selesai.Untuk memantau progres pelatihan, kita meneruskan beberapa callback ke 1. Kita menggunakan untuk membuat fungsi yang memetakan diagram untuk metrik 'kerugian' dan 'grk' yang telah ditentukan sebelumnya.Merangkum pemahamanSekarang kita harus memanggil fungsi yang telah kita tentukan dari fungsi 7. Tambahkan kode berikut ke bagian bawah fungsi 7 Anda 9Saat Anda memuat ulang halaman, setelah beberapa detik Anda akan melihat grafik berikut yang diperbarui. Ini dibuat oleh callback yang telah kita buat sebelumnya. Grafik ini menampilkan kerugian dan grk, yang dirata-ratakan di seluruh set data, di akhir setiap iterasi pelatihan. Saat melatih model, kita ingin melihat kerugian menurun. Dalam hal ini, karena metrik kita adalah ukuran error, kita juga ingin melihatnya menurun. Jika Anda ingin memahami prinsipnya saat pelatihan, baca panduan kami atau tonton video dari 3blue1bOLD ini. Setelah model dilatih, kita ingin membuat beberapa prediksi. Mari kita evaluasi model dengan melihat apa yang diprediksi untuk rentang yang sama dengan jumlah tenaga kuda dari rendah hingga tinggi. Tambahkan fungsi berikut ke file script.js Anda 0Beberapa hal yang perlu diperhatikan dalam fungsi di atas. 1Kita membuat 100 'contoh' baru untuk dimasukkan ke model. Model.predict adalah cara kita memasukkan contoh tersebut ke dalam model. Perhatikan bahwa contoh tersebut harus memiliki bentuk yang mirip ( 9) seperti saat kita melakukan pelatihan. 2Untuk mengembalikan data ke rentang asli (bukan 0-1), kita menggunakan nilai yang dihitung saat melakukan normalisasi, tetapi hanya membalikkan operasi. 3adalah metode yang dapat kita gunakan untuk mendapatkan 8 nilai yang disimpan dalam tensor. Dengan cara ini, kita dapat memproses nilai tersebut dalam JavaScript reguler. Ini adalah versi sinkron dari metode yang umumnya lebih disukai.Terakhir, kita menggunakan tfjs-vis untuk memetakan data asli dan prediksi dari model. Tambahkan kode berikut ke fungsi 7 Anda 4Muat ulang halaman dan Anda akan melihat sesuatu seperti berikut setelah model menyelesaikan pelatihan. Selamat! Anda baru saja melatih model machine learning yang sederhana. Saat ini model tersebut hanya melakukan apa yang dikenal sebagai regresi linear, yang mencoba menyesuaikan garis dengan tren yang ada dalam data input. Langkah-langkah dalam melatih model machine learning meliputi: Meringkas tugas:
Menyiapkan data:
Mem-build dan menjalankan model:
Mengevaluasi model Anda
5Hal baru yang paling penting tentang lapisan tersembunyi ini adalah lapisan tersebut memiliki fungsi aktivasi non-linear, dalam hal ini aktivasi . Untuk mempelajari lebih lanjut fungsi aktivasi, baca artikel ini. |