
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create machine learning models
/ 15
Use the model
/ 15
Save and Load Models
/ 15
Explore Callbacks
/ 15
Exercise 1
/ 15
Exercise 2
/ 15
Exercise 3
/ 10
TensorFlow adalah library machine learning (ML) open source yang canggih dan portabel, yang dikembangkan oleh Google dan dapat digunakan dengan set data yang sangat besar. Di lab ini, Anda akan membuat dan melatih model computer vision untuk mengenali berbagai item pakaian menggunakan TensorFlow Vertex AI Workbench.
TensorFlow menyediakan framework komputasi untuk membangun model ML. TensorFlow menyediakan berbagai toolkit yang memungkinkan Anda membuat model di tingkat abstraksi yang Anda inginkan. Di lab ini, Anda akan menggunakan tf.keras, API tingkat tinggi untuk membangun dan melatih jaringan neural guna mengklasifikasi gambar di TensorFlow.
Jaringan neural adalah model yang terinspirasi oleh otak manusia. Jaringan ini tersusun atas banyak lapisan, dengan setidaknya satu di antaranya tersembunyi, yang terdiri dari unit atau neuron sederhana yang terhubung dan diikuti oleh sejumlah nonlinearitas.
Sebuah node di jaringan neural biasanya membutuhkan beberapa nilai input dan menghasilkan satu nilai output. Neuron ini menerapkan fungsi aktivasi (transformasi nonlinear) ke sejumlah nilai input yang tertimbang untuk menghitung nilai output-nya.
Untuk mendapatkan informasi selengkapnya tentang jaringan neural, lihat Jaringan Neural: Struktur.
Di lab ini, Anda akan mempelajari cara:
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer, yang dimulai saat Anda mengklik Start Lab, akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab praktik ini dapat Anda gunakan untuk melakukan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
Di Konsol Google Cloud, pada Navigation menu (), klik Vertex AI > Workbench.
Cari instance
Antarmuka JupyterLab untuk instance Workbench Anda akan terbuka di tab browser baru.
Dari menu Launcher, di bagian Other, pilih Terminal.
Periksa apakah lingkungan Python Anda sudah dikonfigurasi. Salin dan tempel perintah berikut di terminal.
Contoh output:
pip3
, jalankan perintah berikut di terminal.Pylint adalah alat yang memeriksa error dalam kode Python, serta menandai masalah sintaksis dan gaya dalam kode sumber Python Anda.
pylint
.requirements.txt
:Lingkungan Anda berhasil disiapkan.
Klik ikon + di sebelah kiri Workbench untuk membuka Launcher baru.
Dari menu Launcher, di bagian Notebook, pilih Python3.
Anda akan melihat notebook Jupyter baru. Untuk mendapatkan informasi selengkapnya tentang cara menggunakan notebook Jupyter, lihat dokumentasi Notebook Jupyter.
logging
dan google-cloud-logging
untuk Cloud Logging. Pada sel pertama, tambahkan kode berikut:tensorflow
untuk melatih dan mengevaluasi model. Namai sebagai tf
untuk memudahkan. Tambahkan kode berikut ke sel pertama.numpy
guna mengurai data untuk tujuan proses debug. Namai sebagai np
untuk memudahkan. Tambahkan kode berikut ke sel pertama.tensorflow_datasets
guna mengintegrasikan set data. TensorFlow Datasets adalah sekumpulan set data yang siap digunakan dengan TensorFlow.Untuk menjalankan sel ini, klik tombol Run atau tekan Shift + Enter.
Simpan notebook. Klik File > Save. Namai filenya sebagai model.ipynb
, lalu klik OK.
Anda akan melatih jaringan neural untuk mengklasifikasi gambar pakaian dari sebuah set data yang disebut Fashion MNIST.
Set data ini berisi 70.000 item pakaian dari 10 kategori berbeda. Gambar menunjukkan setiap potong pakaian dalam resolusi rendah (28x28 piksel), seperti terlihat di sini:
Di lab ini, 60.000 gambar akan digunakan untuk melatih jaringan dan 10.000 gambar akan digunakan untuk mengevaluasi seberapa akurat jaringan tersebut belajar mengklasifikasi gambar.
Data Fashion MNIST tersedia di set data tensorflow(tfds).
Untuk memuat data Fashion MNIST, Anda akan menggunakan fungsi tfds.load()
.
Dalam kode di atas, tetapkan argumen split
untuk menentukan bagian set data yang akan dimuat. Tetapkan as_supervised
ke True
untuk memastikan bahwa tf.data.Dataset
yang dimuat memiliki struktur 2-tuple (input, label)
.
ds_train dan ds_test merupakan jenis tf.data.Dataset
. ds_train memiliki 60.000 gambar yang akan digunakan untuk melatih model. ds_test memiliki 10.000 gambar yang akan digunakan untuk mengevaluasi model.
tfds.load()
dan argumennya, lihat panduan.Seperti apa tampilan nilai tersebut?
32
.Tetapkan ukuran tumpukan dengan menambahkan kode berikut ke model.ipynb
:
Kode yang ditampilkan di bawah menggunakan fungsi map()
pada tf.data.Dataset
untuk menerapkan normalisasi ke gambar di ds_train
dan ds_test
. Karena nilai pikselnya berjenis tf.uint8
, fungsi tf.cast
digunakan untuk mengonversi nilai tersebut ke tf.float32
, lalu membaginya dengan 255.0
. Set data ini juga dikonversi menjadi beberapa batch dengan memanggil metode batch()
dengan BATCH_SIZE
sebagai argumennya.
tf.data.Dataset
di sini.Tambahkan kode berikut ke bagian akhir file:
Tambahkan kode berikut ke bagian akhir file:
Di bagian ini, Anda akan mendesain model menggunakan TensorFlow.
Lihat berbagai jenis lapisan dan parameter yang digunakan dalam arsitektur model ini:
Sequential: Menentukan URUTAN lapisan di jaringan neural.
Flatten: Bentuk gambar (28x28), artinya nilai berbentuk matriks persegi. Lapisan flatten mengambil matriks persegi tersebut dan mengubahnya menjadi vektor satu dimensi.
Dense: Menambahkan lapisan neuron.
Setiap lapisan neuron memerlukan fungsi aktivasi untuk menentukan apakah neuron perlu diaktifkan atau tidak. Dari banyak opsi yang tersedia, lab ini menggunakan fungsi berikut:
Relu
secara efektif berarti jika X>0 menampilkan X, sebaliknya menampilkan 0. Fungsi ini meneruskan nilai 0 atau yang lebih besar ke lapisan berikutnya dalam jaringan.Softmax
mengambil serangkaian nilai, dan secara efektif memilih nilai terbesar agar Anda tidak perlu mengurutkan untuk menemukan nilai yang paling besar. Misalnya, jika output lapisan terakhir adalah [0.1, 0.1, 0.05, 0.1, 9.5, 0.1, 0.05, 0.05, 0.05], softmax akan menampilkan [0,0,0,0,1,0,0,0,0].Di bagian ini, pertama-tama Anda akan mengompilasi model dengan fungsi pengoptimal dan kerugian. Selanjutnya, Anda akan melatih model tersebut berdasarkan data dan label pelatihan Anda.
Tujuannya adalah agar model mencari tahu hubungan antara data pelatihan dan labelnya. Setelah pelatihan selesai, model Anda harus melihat gambar pakaian yang baru yang menyerupai data pelatihan Anda dan membuat prediksi tentang kelas yang mencakup pakaian tersebut.
Pengoptimal merupakan satu dari dua argumen yang diperlukan untuk mengompilasi model tf.keras. Optimizer
(pengoptimal) adalah algoritma yang memodifikasi atribut jaringan neural, seperti bobot dan kecepatan pembelajaran. Algoritma ini membantu mengurangi kerugian dan meningkatkan akurasi.
tf.keras
, di sini.Loss
(kerugian) menunjukkan performa model dengan angka. Makin baik performa model, makin kecil angka kerugian yang ditampilkan. Begitu pula sebaliknya.
tf.keras
di sini.Perhatikan parameter metrics=
. Parameter ini memungkinkan TensorFlow melaporkan akurasi pelatihan setelah setiap epoch dengan memeriksa hasil yang diprediksi berdasarkan jawaban yang diketahui (label). Parameter ini pada dasarnya melaporkan seberapa efektif jalannya pelatihan.
Model.fit akan melatih model untuk sejumlah epoch yang sudah ditetapkan.
Klik Check my progress untuk memverifikasi tujuan.
Saat sel notebook dijalankan, Anda akan melihat kerugian dan akurasi dilaporkan setelah setiap epoch (atau pass) pelatihan. Perhatikan bahwa dengan makin bertambahnya epoch (atau pass), akurasi meningkat:
Contoh output (nilai Anda mungkin sedikit berbeda, abaikan pesan peringatan):
Untuk output # Values before normalization
, terlihat bahwa nilai minimum dan maksimum berada dalam rentang [0, 255]
. Setelah normalisasi, Anda dapat melihat semua nilai berada dalam rentang [0, 1]
.
Seiring berjalannya pelatihan, kerugian menurun dan akurasi meningkat.
Setelah model selesai dilatih, nilai akurasi akan terlihat di ujung epoch terakhir. Nilai tersebut mungkin mendekati 0.8846 seperti di atas (akurasi Anda mungkin berbeda).
Hal ini menunjukkan bahwa jaringan neural tersebut 89% akurat dalam mengklasifikasi data pelatihan. Dengan kata lain, pada 89% kesempatan, jaringan neural ini berhasil menemukan kecocokan pola antara gambar dan label. Tidak istimewa, tetapi juga tidak buruk mengingat pelatihan hanya dijalankan sebanyak lima epoch pada jaringan neural yang kecil.
Namun, bagaimana performa model saat dijalankan pada data yang belum dilihatnya?
Set pengujian dapat membantu menjawab pertanyaan ini. Panggil model.evaluate
, teruskan kedua set pengujian, dan model akan melaporkan kerugian untuk setiap set.
Evaluasi set pengujian:
Jika men-scroll hingga ke bagian bawah output, Anda dapat melihat hasil evaluasi di baris terakhir.
Model ini melaporkan akurasi .8708 pada set pengujian (ds_test
) yang berarti akurasinya sekitar 87%. (Nilai Anda mungkin sedikit berbeda).
Sesuai dugaan, saat dijalankan pada data yang belum diketahui, model tersebut kurang akurat dibandingkan ketika dijalankan pada data yang telah digunakan untuk melatihnya.
Sembari menggunakan TensorFlow lebih lanjut, Anda akan mempelajari cara meningkatkan akurasi ini.
Klik Check my progress untuk memverifikasi tujuan.
Progres model dapat disimpan selama dan setelah pelatihan. Artinya, model dapat melanjutkan dari posisi terakhir saat pelatihan dihentikan sehingga Anda dapat menghindari waktu pelatihan yang lama. Dengan menyimpan model, Anda dapat membagikannya dan orang lain dapat mencipta ulang hasil kerja Anda. Untuk latihan pertama ini, Anda akan menambahkan kode yang diperlukan untuk menyimpan dan memuat model.
SavedModel
dan Keras
. Format TensorFlow SavedModel
merupakan format file default di TF2.x. Namun, model dapat disimpan dalam format Keras
. Anda akan mempelajari lebih lanjut cara menyimpan model dalam kedua format file ini.Kode di atas menunjukkan cara menyimpan model dalam dua format berbeda dan memuat kembali model yang tersimpan. Anda dapat memilih format apa pun sesuai dengan kasus penggunaan Anda. Baca lebih lanjut fungsionalitas ini di Dokumentasi TensorFlow untuk "Menyimpan dan memuat model".
Di bagian akhir output, Anda akan melihat dua set ringkasan model. Set pertama menunjukkan ringkasan setelah model disimpan dalam format SavedModel
. Set kedua menunjukkan ringkasan setelah model disimpan dalam format h5
.
Anda dapat melihat bahwa kedua ringkasan model tersebut identik karena kita pada dasarnya menyimpan model yang sama dalam dua format berbeda.
Klik Check my progress untuk memverifikasi tujuan.
Sebelumnya, saat melatih model, Anda telah melihat bahwa, seiring berlangsungnya pelatihan, kerugian model berkurang dan akurasinya meningkat. Setelah mencapai akurasi dan kerugian pelatihan yang diinginkan, Anda mungkin masih perlu menunggu sebentar lagi hingga pelatihan selesai.
Anda mungkin berpikir, "Bukankah lebih baik jika pelatihan dapat dihentikan saat model mencapai nilai akurasi yang diinginkan?"
Misalnya, jika akurasi 95% dirasa cukup, dan model dapat mencapainya setelah 3 epoch pelatihan, mengapa harus menunggu hingga selesainya beberapa epoch lagi?
Jawabannya adalah: Callback!
Callback adalah alat yang efektif untuk menyesuaikan perilaku model Keras selama pelatihan, evaluasi, atau inferensi. Anda dapat menetapkan callback untuk menghentikan pelatihan segera setelah model mencapai akurasi yang diinginkan pada set pelatihan.
Coba kode berikut untuk melihat apa yang terjadi jika Anda menetapkan callback untuk menghentikan pelatihan saat akurasi mencapai 84%:
Buka Launcher, lalu pilih Python3 untuk membuat notebook Jupyter baru.
Simpan file itu sebagai callback_model.ipynb
.
Tempel kode berikut ke sel pertama callback_model.ipynb
:
Tekan Ctrl + S atau buka File > Save Notebook untuk menyimpan perubahan.
Jalankan kode dengan mengklik tombol Run atau menekan Shift + Enter.
Lihat bahwa pelatihan dibatalkan setelah beberapa epoch.
Klik Check my progress untuk memverifikasi tujuan.
Di bagian ini, Anda akan bereksperimen dengan berbagai lapisan jaringan.
Dalam Latihan ini, Anda akan mempelajari lapisan yang ada di model Anda. Apa yang terjadi saat Anda mengubah jumlah neuron?
Buka Launcher, lalu pilih Python3 untuk membuat notebook Jupyter baru.
Simpan file itu sebagai updated_model.ipynb
.
Tempel kode berikut ke sel pertama updated_model.ipynb
:
Buka bagian # Define the model
, lalu ubah 64 menjadi 128 neuron:
Tekan Ctrl + S atau buka File > Save Notebook untuk menyimpan perubahan.
Jalankan kode dengan mengklik tombol Run atau menekan Shift + Enter.
Apa saja hasil yang Anda peroleh untuk kerugian, waktu pelatihan, dll.? Kira-kira apa penyebabnya?
Saat jumlah neuron ditingkatkan menjadi 128, Anda harus melakukan lebih banyak penghitungan. Hal ini akan memperlambat proses pelatihan. Dalam kasus ini, peningkatan tersebut berdampak positif karena model menjadi lebih akurat. Namun, tidak selalu 'makin banyak, makin baik'. Anda dapat mencapai titik penurunan hasil dengan sangat cepat.
Klik Check my progress untuk memverifikasi tujuan.
Pertimbangkan efek lapisan tambahan dalam jaringan. Apa yang akan terjadi jika Anda menambahkan lapisan tambahan antara kedua lapisan padat itu?
updated_model.ipynb
, tambahkan lapisan di bagian # Define the model
.Ganti definisi model Anda dengan kode berikut:
Tekan Ctrl + S atau buka File > Save Notebook untuk menyimpan perubahan.
Jalankan kode dengan mengklik tombol Run atau menekan Shift + Enter.
Jawaban: Tidak ada dampak yang signifikan -- karena data ini relatif sederhana. Untuk data yang jauh lebih kompleks, lapisan tambahan kerap diperlukan.
Klik Check my progress untuk memverifikasi tujuan.
Sebelum melatih model, Anda telah menormalisasi nilai piksel ke rentang [0, 1]
. Apa dampak dari menghapus normalisasi sehingga nilai tersebut berada dalam rentang [0, 255] seperti aslinya dalam set data?
# Define, load and configure data
, hapus fungsi map baik yang diterapkan ke set data pelatihan maupun pengujian.[0, 255]
.updated_model.ipynb
akhir Anda akan terlihat seperti ini:Tekan Ctrl + S atau buka File > Save Notebook untuk menyimpan perubahan.
Jalankan kode dengan mengklik tombol Run atau menekan Shift + Enter.
Output yang diharapkan untuk # Print out max value to see the changes
Setelah menyelesaikan sejumlah epoch, Anda dapat melihat perbedaan akurasi tanpa normalisasi.
Kira-kira apa penyebab perubahan akurasi tersebut?
Klik Check my progress untuk memverifikasi tujuan.
Apa yang terjadi jika Anda menghapus lapisan Flatten()
, dan mengapa?
Silakan mencobanya:
# Define the model
, hapus tf.keras.layers.Flatten()
:updated_model.ipynb
.Anda mendapatkan error terkait bentuk data tersebut. Hal ini sudah diperkirakan.
Detail error tersebut mungkin tidak tampak jelas untuk saat ini, tetapi hal itu memperkuat prinsip utama bahwa lapisan pertama dalam jaringan Anda harus memiliki bentuk yang sama dengan data Anda. Saat ini, gambar input memiliki bentuk 28x28, dan 28 lapisan dari 28 neuron tidaklah memungkinkan. Oleh karena itu, akan lebih masuk akal untuk meratakan 28x28 itu menjadi 784x1.
Alih-alih menulis semua kode untuk menangani hal itu sendiri, Anda dapat menambahkan lapisan Flatten()
di awal. Ketika dimuat ke dalam model, array tersebut akan otomatis diratakan untuk Anda.
Perhatikan lapisan (output) terakhir. Mengapa ada 10 neuron di lapisan terakhir? Apa yang terjadi jika jumlah neuron tidak 10?
Cari tahu dengan melatih jaringan menggunakan 5 neuron.
# Define the model
dengan kode berikut untuk mengurungkan perubahan yang Anda buat di bagian sebelumnya:updated_model.ipynb
.Apa yang terjadi: Anda mendapatkan error begitu model menemukan nilai yang tidak diharapkan.
Prinsip utama lainnya -- jumlah neuron di lapisan terakhir harus sama dengan jumlah kelas yang Anda klasifikasi. Dalam kasus ini, jumlah tersebut adalah digit 0-9, jadi ada 10 kelas. Oleh karena itu, lapisan terakhir Anda juga harus memiliki 10 neuron.
Selamat! Di lab ini, Anda telah mempelajari cara mendesain, mengompilasi, melatih, dan mengevaluasi model Tensorflow. Anda juga telah mempelajari cara menyimpan dan memuat model serta menulis callback Anda sendiri untuk menyesuaikan perilaku selama pelatihan. Anda juga telah menyelesaikan serangkaian latihan untuk memandu Anda bereksperimen dengan berbagai lapisan di jaringan.
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui 12 September 2024
Lab Terakhir Diuji 12 September 2024
Hak cipta 2025 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.
Konten ini tidak tersedia untuk saat ini
Kami akan memberi tahu Anda melalui email saat konten tersedia
Bagus!
Kami akan menghubungi Anda melalui email saat konten tersedia
One lab at a time
Confirm to end all existing labs and start this one