From 63aea85bca3f0945094a01df6ebe3a9aed8361e3 Mon Sep 17 00:00:00 2001 From: "localizeflow[bot]" Date: Wed, 8 Jul 2026 16:45:12 +0000 Subject: [PATCH] chore(i18n): sync translations with latest source changes (chunk 1/1, 19 changes) --- translations/ms/.co-op-translator.json | 37 +- translations/ms/CONTRIBUTING.md | 29 ++ translations/ms/examples/README.md | 46 +- .../ms/lessons/0-course-setup/how-to-run.md | 40 +- .../TransferLearningTF.ipynb | 127 +++--- translations/ms/lessons/5-NLP/README.md | 56 +-- translations/sw/.co-op-translator.json | 37 +- translations/sw/CONTRIBUTING.md | 29 ++ translations/sw/examples/README.md | 68 +-- .../sw/lessons/0-course-setup/how-to-run.md | 52 +-- .../TransferLearningTF.ipynb | 145 +++--- translations/sw/lessons/5-NLP/README.md | 94 ++-- translations/tl/.co-op-translator.json | 26 +- translations/tl/CONTRIBUTING.md | 29 ++ translations/tl/examples/README.md | 56 +-- .../tl/lessons/0-course-setup/how-to-run.md | 46 +- .../TransferLearningTF.ipynb | 133 +++--- translations/tl/lessons/5-NLP/README.md | 72 +-- .../tl/lessons/sketchnotes/LICENSE.md | 428 +++++++++++++++--- 19 files changed, 1022 insertions(+), 528 deletions(-) create mode 100644 translations/ms/CONTRIBUTING.md create mode 100644 translations/sw/CONTRIBUTING.md create mode 100644 translations/tl/CONTRIBUTING.md diff --git a/translations/ms/.co-op-translator.json b/translations/ms/.co-op-translator.json index e3d14582..b9cab65f 100644 --- a/translations/ms/.co-op-translator.json +++ b/translations/ms/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "ms" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T16:44:49+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "ms" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T16:12:41+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "ms" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "ms", + "failure_date": "2026-07-08T16:31:02+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "etc/CODE_OF_CONDUCT.md": { "original_hash": "c06b12caf3c901eb3156e3dd5b0aea56", "translation_date": "2025-08-29T12:02:57+00:00", @@ -54,8 +73,8 @@ "language_code": "ms" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:32:48+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T16:25:55+00:00", "source_file": "examples/README.md", "language_code": "ms" }, @@ -66,8 +85,8 @@ "language_code": "ms" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T04:12:04+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T16:26:18+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "ms" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "ms" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T16:22:15+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "ms" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-29T11:49:04+00:00", @@ -330,8 +355,8 @@ "language_code": "ms" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-29T11:58:10+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T16:26:48+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "ms" }, diff --git a/translations/ms/CONTRIBUTING.md b/translations/ms/CONTRIBUTING.md new file mode 100644 index 00000000..cb0d3254 --- /dev/null +++ b/translations/ms/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Menyumbang kepada AI-For-Beginners + +Terima kasih atas minat anda untuk menyumbang kepada AI-For-Beginners! Kami mengalu-alukan terjemahan, pembetulan pelajaran, dan pembetulan format. + +## Perjanjian Lesen Penyumbang Microsoft (CLA) + +Projek ini mengalu-alukan sumbangan dan cadangan. Kebanyakan sumbangan memerlukan anda bersetuju dengan Perjanjian Lesen Penyumbang (CLA) yang menyatakan bahawa anda mempunyai hak untuk, dan benar-benar memberikan kami hak untuk menggunakan sumbangan anda. Untuk maklumat lanjut, lawati [https://cla.microsoft.com](https://cla.microsoft.com). + +Apabila anda menyerahkan permintaan tarik, sebuah bot CLA akan secara automatik menentukan sama ada anda perlu menyediakan CLA dan menghiasi PR dengan sewajarnya (contohnya, label, komen). Ikuti sahaja arahan yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali sahaja merentasi semua repositori yang menggunakan CLA kami. + +## Cara Menyumbang + +### 1. Memperbaiki Salah Ejaan / Kesalahan Kod +Jika anda menjumpai salah ejaan atau pepijat dalam mana-mana buku nota Jupyter atau fail markdown pelajaran: +1. Fork repositori tersebut. +2. Betulkan salah ejaan atau pautan rosak. +3. Hantar Permintaan Tarik dengan penerangan yang jelas tentang pembetulan. + +### 2. Menyerahkan Terjemahan +Kami mengalu-alukan terjemahan pelajaran ke dalam bahasa lain! Sila letakkan terjemahan di bawah direktori `translations/` menggunakan nama folder sedia ada di situ (contohnya `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +Untuk maklumat lanjut, sila lihat [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md). + +--- + + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. + \ No newline at end of file diff --git a/translations/ms/examples/README.md b/translations/ms/examples/README.md index eacc111e..36874047 100644 --- a/translations/ms/examples/README.md +++ b/translations/ms/examples/README.md @@ -1,31 +1,31 @@ # Contoh AI Mesra Pemula -Selamat datang! Direktori ini mengandungi contoh mudah dan berdiri sendiri untuk membantu anda memulakan dengan AI dan pembelajaran mesin. Setiap contoh direka untuk mesra pemula dengan komen terperinci dan penjelasan langkah demi langkah. +Selamat datang! Direktori ini mengandungi contoh mudah dan berdiri sendiri untuk membantu anda memulakan dengan AI dan pembelajaran mesin. Setiap contoh direka untuk mesra pemula dengan komen terperinci dan penerangan langkah demi langkah. ## 📚 Gambaran Keseluruhan Contoh | Contoh | Penerangan | Kesukaran | Prasyarat | -|--------|------------|-----------|-----------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | Program AI pertama anda - pengenalan corak yang mudah | ⭐ Pemula | Asas Python | -| [Simple Neural Network](../../../examples/02-simple-neural-network.py) | Bina rangkaian neural dari awal | ⭐⭐ Pemula+ | Python, matematik asas | -| [Image Classifier](./03-image-classifier.ipynb) | Klasifikasi imej dengan model yang telah dilatih | ⭐⭐ Pemula+ | Python, numpy | -| [Text Sentiment](../../../examples/04-text-sentiment.py) | Analisis sentimen teks (positif/negatif) | ⭐⭐ Pemula+ | Python | +|---------|-------------|------------|---------------| +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | Program AI pertama anda - pengenalan corak mudah | ⭐ Pemula | Asas Python | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Membangunkan rangkaian neural dari asas | ⭐⭐ Pemula+ | Python, matematik asas | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | Klasifikasi imej dengan model pra-latih | ⭐⭐ Pemula+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | Analisis sentimen teks (positif/negatif) | ⭐⭐ Pemula+ | Python | ## 🚀 Memulakan ### Prasyarat -Pastikan anda telah memasang Python (disarankan versi 3.8 atau lebih tinggi). Pasang pakej yang diperlukan: +Pastikan anda memasang Python (disyorkan 3.8 atau lebih tinggi). Pasang pakej yang diperlukan: ```bash -# For Python scripts +# Untuk skrip Python pip install numpy -# For Jupyter notebooks (image classifier) +# Untuk buku nota Jupyter (pengelasan imej) pip install jupyter numpy pillow tensorflow ``` -Atau gunakan persekitaran conda dari kurikulum utama: +Atau gunakan persekitaran conda daripada kurikulum utama: ```bash conda env create --name ai4beg --file ../environment.yml @@ -34,35 +34,35 @@ conda activate ai4beg ### Menjalankan Contoh -**Untuk skrip Python (.py files):** +**Untuk skrip Python (.py):** ```bash python 01-hello-ai-world.py ``` -**Untuk Jupyter notebooks (.ipynb files):** +**Untuk nota Jupyter (.ipynb):** ```bash jupyter notebook 03-image-classifier.ipynb ``` ## 📖 Laluan Pembelajaran -Kami mengesyorkan mengikuti contoh-contoh ini mengikut urutan: +Kami mengesyorkan mengikuti contoh mengikut urutan: 1. **Mulakan dengan "Hello AI World"** - Pelajari asas pengenalan corak -2. **Bina Rangkaian Neural Mudah** - Fahami cara rangkaian neural berfungsi -3. **Cuba Pengklasifikasi Imej** - Lihat AI beraksi dengan imej sebenar +2. **Bina Rangkaian Neural Mudah** - Fahami bagaimana rangkaian neural berfungsi +3. **Cuba Pengelas Imej** - Lihat AI beraksi dengan imej sebenar 4. **Analisis Sentimen Teks** - Terokai pemprosesan bahasa semula jadi ## 💡 Petua untuk Pemula -- **Baca komen kod dengan teliti** - Ia menerangkan apa yang dilakukan oleh setiap baris -- **Bereksperimen!** - Cuba ubah nilai dan lihat apa yang berlaku -- **Jangan risau jika tidak memahami semuanya** - Pembelajaran memerlukan masa +- **Baca komen kod dengan teliti** - Ia menerangkan apa yang dilakukan setiap baris +- **Eksperimen!** - Cuba ubah nilai dan lihat apa yang berlaku +- **Jangan risau jika tidak memahami semuanya** - Pembelajaran mengambil masa - **Tanya soalan** - Gunakan [Papan Perbincangan](https://github.com/microsoft/AI-For-Beginners/discussions) ## 🔗 Langkah Seterusnya -Selepas melengkapkan contoh-contoh ini, terokai kurikulum penuh: +Selepas menyiapkan contoh ini, terokai kurikulum penuh: - [Pengenalan kepada AI](../lessons/1-Intro/README.md) - [Rangkaian Neural](../lessons/3-NeuralNetworks/README.md) - [Penglihatan Komputer](../lessons/4-ComputerVision/README.md) @@ -70,7 +70,7 @@ Selepas melengkapkan contoh-contoh ini, terokai kurikulum penuh: ## 🤝 Menyumbang -Mendapati contoh-contoh ini berguna? Bantu kami memperbaikinya: +Mendapati contoh ini berguna? Bantu kami memperbaikinya: - Laporkan isu atau cadangkan penambahbaikan - Tambah lebih banyak contoh untuk pemula - Perbaiki dokumentasi dan komen @@ -81,5 +81,7 @@ Mendapati contoh-contoh ini berguna? Bantu kami memperbaikinya: --- -**Penafian**: -Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. + \ No newline at end of file diff --git a/translations/ms/lessons/0-course-setup/how-to-run.md b/translations/ms/lessons/0-course-setup/how-to-run.md index 96ee57b7..5ce00c23 100644 --- a/translations/ms/lessons/0-course-setup/how-to-run.md +++ b/translations/ms/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ # Cara Menjalankan Kod -Kurikulum ini mengandungi banyak contoh dan makmal yang boleh dilaksanakan yang anda ingin jalankan. Untuk melakukan ini, anda memerlukan keupayaan untuk melaksanakan kod Python dalam Jupyter Notebooks yang disediakan sebagai sebahagian daripada kurikulum ini. Anda mempunyai beberapa pilihan untuk menjalankan kod: +Kurikulum ini mengandungi banyak contoh dan makmal yang boleh dilaksanakan yang anda ingin jalankan. Untuk melakukan ini, anda perlu mempunyai keupayaan untuk melaksanakan kod Python dalam Jupyter Notebooks yang disediakan sebagai sebahagian daripada kurikulum ini. Anda mempunyai beberapa pilihan untuk menjalankan kod: ## Jalankan secara tempatan di komputer anda -Untuk menjalankan kod secara tempatan di komputer anda, pemasangan Python diperlukan. Satu cadangan adalah untuk memasang **[miniconda](https://conda.io/en/latest/miniconda.html)** - ia adalah pemasangan yang agak ringan yang menyokong pengurus pakej `conda` untuk pelbagai **persekitaran maya** Python. +Untuk menjalankan kod secara tempatan di komputer anda, pemasangan Python diperlukan. Satu cadangan adalah memasang **[miniconda](https://conda.io/en/latest/miniconda.html)** - ia adalah pemasangan yang agak ringan yang menyokong pengurus pakej `conda` untuk pelbagai **persekitaran maya** Python. -Selepas anda memasang miniconda, klon repositori dan buat persekitaran maya untuk digunakan dalam kursus ini: +Selepas anda memasang miniconda, klon repositori dan buat persekitaran maya untuk digunakan bagi kursus ini: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -19,13 +19,13 @@ conda activate ai4beg Kurikulum ini paling baik digunakan apabila dibuka dalam [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) dengan [Sambungan Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Nota**: Setelah anda klon dan buka direktori dalam VS Code, ia akan secara automatik mencadangkan anda memasang sambungan Python. Anda juga perlu memasang miniconda seperti yang diterangkan di atas. +> **Nota**: Setelah anda mengklon dan membuka direktori dalam VS Code, ia akan secara automatik mencadangkan anda memasang sambungan Python. Anda juga perlu memasang miniconda seperti yang diterangkan di atas. -> **Nota**: Jika VS Code mencadangkan anda untuk buka semula repositori dalam bekas, anda harus tolak ini untuk menggunakan pemasangan Python tempatan. +> **Nota**: Jika VS Code mencadangkan anda untuk membuka semula repositori dalam kontena, anda harus menolak ini untuk menggunakan pemasangan Python tempatan. ### Menggunakan Jupyter dalam Pelayar -Anda juga boleh menggunakan persekitaran Jupyter dari pelayar pada komputer anda sendiri. Baik Jupyter klasik dan JupyterHub menyediakan persekitaran pembangunan yang mudah dengan auto-selesaian, sorotan kod, dan lain-lain. +Anda juga boleh menggunakan persekitaran Jupyter dari pelayar pada komputer anda sendiri. Kedua-dua Jupyter klasik dan JupyterHub menyediakan persekitaran pembangunan yang mudah dengan auto-selesaian, penyorotan kod, dan sebagainya. Untuk memulakan Jupyter secara tempatan, pergi ke direktori kursus, dan laksanakan: @@ -36,36 +36,36 @@ atau ```bash jupyterhub ``` -Anda kemudian boleh navigasi ke mana-mana fail `.ipynb`, bukanya dan mula bekerja. +Anda kemudian boleh melayari ke mana-mana fail `.ipynb`, membukanya dan mula bekerja. -### Menjalankan dalam bekas +### Menjalankan dalam kontena -Satu alternatif kepada pemasangan Python adalah menjalankan kod dalam bekas. Oleh kerana repositori kami membekalkan folder `.devcontainer` khas yang memberi arahan bagaimana untuk membina bekas untuk repo ini, VS Code menawarkan peluang untuk membuka semula kod dalam bekas. Ini akan memerlukan pemasangan Docker, dan juga lebih kompleks, jadi kami mengesyorkan ini kepada pengguna yang lebih berpengalaman. +Salah satu alternatif kepada pemasangan Python adalah menjalankan kod dalam kontena. Oleh kerana repositori kami menyediakan folder `.devcontainer` khas yang mengarahkan bagaimana untuk membina kontena untuk repo ini, VS Code menawarkan peluang untuk membuka semula kod dalam kontena. Ini akan memerlukan pemasangan Docker, dan juga lebih kompleks, jadi kami mencadangkan ini kepada pengguna yang lebih berpengalaman. ## Menjalankan di Awan -Jika anda tidak mahu memasang Python secara tempatan, dan mempunyai akses kepada beberapa sumber awan - satu alternatif yang baik adalah menjalankan kod di awan. Terdapat beberapa cara anda boleh melakukan ini: +Jika anda tidak mahu memasang Python secara tempatan, dan mempunyai akses kepada beberapa sumber awan - alternatif yang baik adalah menjalankan kod di awan. Terdapat beberapa cara anda boleh melakukan ini: -* Menggunakan **[GitHub Codespaces](https://github.com/features/codespaces)**, iaitu persekitaran maya yang dicipta untuk anda di GitHub, boleh diakses melalui antaramuka pelayar VS Code. Jika anda mempunyai akses ke Codespaces, anda hanya perlu klik butang **Code** dalam repo, mulakan codespace, dan mula menjalankan dengan pantas. -* Menggunakan **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) menawarkan sumber pengkomputeran percuma yang disediakan di awan untuk orang seperti anda menguji kod di GitHub. Terdapat butang di halaman depan untuk membuka repositori dalam Binder - ini akan membawa anda dengan cepat ke laman binder, yang akan membina bekas asas dan memulakan antaramuka web Jupyter untuk anda tanpa gangguan. +* Menggunakan **[GitHub Codespaces](https://github.com/features/codespaces)**, yang merupakan persekitaran maya yang dicipta untuk anda di GitHub, boleh diakses melalui antara muka pelayar VS Code. Jika anda mempunyai akses ke Codespaces, anda hanya perlu klik butang **Code** dalam repo, mulakan codespace, dan mula menjalankan dengan cepat. +* Menggunakan **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) menawarkan sumber pengkomputeran percuma yang disediakan di awan untuk orang seperti anda menguji kod di GitHub. Terdapat butang di halaman utama untuk membuka repositori dalam Binder - ini akan dengan cepat membawa anda ke laman Binder, yang akan membina kontena asas dan memulakan antara muka web Jupyter untuk anda dengan lancar. -> **Nota**: Untuk mengelakkan penyalahgunaan, Binder menghadkan akses kepada beberapa sumber web. Ini mungkin menghalang beberapa kod daripada berfungsi, yang mengambil model dan/atau set data dari Internet awam. Anda mungkin perlu mencari jalan penyelesaian. Juga, sumber pengkomputeran yang disediakan oleh Binder adalah agak asas, jadi latihan akan lambat, terutamanya dalam pelajaran yang lebih kompleks kemudian. +> **Nota**: Untuk mengelakkan penyalahgunaan, Binder mempunyai akses ke beberapa sumber web yang disekat. Ini mungkin menghalang beberapa kod daripada berfungsi, yang mengambil model dan/atau set data dari Internet awam. Anda mungkin perlu mencari jalan penyelesaian. Juga, sumber pengkomputeran yang disediakan oleh Binder agak asas, jadi latihan akan menjadi perlahan, terutamanya dalam pelajaran yang lebih kompleks kemudian. ## Menjalankan di Awan dengan GPU -Beberapa pelajaran kemudian dalam kurikulum ini akan sangat mendapat manfaat daripada sokongan GPU. Latihan model, sebagai contoh, boleh menjadi sangat lambat jika tidak. Terdapat beberapa pilihan yang boleh anda ikuti, terutamanya jika anda mempunyai akses ke awan sama ada melalui [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), atau melalui institusi anda: +Sesetengah pelajaran kemudian dalam kurikulum ini akan sangat mendapat manfaat daripada sokongan GPU. Latihan model, sebagai contoh, boleh menjadi sangat perlahan jika tidak. Terdapat beberapa pilihan yang anda boleh ikuti, terutamanya jika anda mempunyai akses ke awan sama ada melalui [Azure untuk Pelajar](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), atau melalui institusi anda: -* Buat [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) dan sambungkan kepadanya melalui Jupyter. Anda boleh klon repo terus ke mesin itu, dan mula belajar. VM siri NC mempunyai sokongan GPU. +* Cipta [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) dan sambung ke sana melalui Jupyter. Anda boleh mengklon repo terus ke mesin tersebut, dan mula belajar. VM siri NC mempunyai sokongan GPU. -> **Nota**: Sesetengah langganan, termasuk Azure for Students, tidak menyediakan sokongan GPU secara automatik. Anda mungkin perlu memohon teras GPU tambahan dengan permintaan sokongan teknikal. +> **Nota**: Sesetengah langganan, termasuk Azure untuk Pelajar, tidak menyediakan sokongan GPU secara langsung. Anda mungkin perlu memohon tambahan teras GPU dengan permintaan sokongan teknikal. -* Buat [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) dan kemudian gunakan ciri Notebook di situ. [Video ini](https://azure-for-academics.github.io/quickstart/azureml-papers/) menunjukkan cara untuk klon repositori ke dalam notebook Azure ML dan mula menggunakannya. +* Cipta [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) dan kemudian gunakan ciri Notebook di sana. [Video ini](https://azure-for-academics.github.io/quickstart/azureml-papers/) menunjukkan cara mengklon repositori ke dalam notebook Azure ML dan mula menggunakannya. -Anda juga boleh menggunakan Google Colab, yang datang dengan sokongan GPU percuma, dan memuat naik Jupyter Notebooks di sana untuk melaksanakannya satu persatu. +Anda juga boleh menggunakan Google Colab, yang disertakan dengan sokongan GPU percuma, dan memuat naik Jupyter Notebooks ke sana untuk menjalankannya satu persatu. --- -**Penafian**: -Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya hendaklah dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index 89a7af21..7cb48b03 100644 --- a/translations/ms/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -6,9 +6,9 @@ "source": [ "# Model pra-latih dan pembelajaran pemindahan\n", "\n", - "Melatih CNN boleh mengambil masa yang lama, dan banyak data diperlukan untuk tugas tersebut. Walau bagaimanapun, sebahagian besar masa dihabiskan untuk mempelajari penapis tahap rendah terbaik yang digunakan oleh rangkaian untuk mengekstrak corak daripada imej. Satu persoalan semula jadi timbul - bolehkah kita menggunakan rangkaian neural yang telah dilatih pada satu set data dan menyesuaikannya untuk mengklasifikasikan imej yang berbeza tanpa proses latihan penuh?\n", + "Latihan CNN boleh mengambil masa yang lama, dan banyak data diperlukan untuk tugas itu. Walau bagaimanapun, sebahagian besar masa digunakan untuk mempelajari penapis tahap rendah terbaik yang digunakan oleh rangkaian untuk mengekstrak corak dari imej. Soalan semula jadi timbul - bolehkah kita menggunakan rangkaian neural yang dilatih pada satu set data dan menyesuaikannya untuk mengklasifikasikan imej yang berbeza tanpa proses latihan penuh?\n", "\n", - "Pendekatan ini dipanggil **pembelajaran pemindahan**, kerana kita memindahkan sebahagian pengetahuan daripada satu model rangkaian neural kepada yang lain. Dalam pembelajaran pemindahan, kita biasanya bermula dengan model pra-latih, yang telah dilatih pada set data imej yang besar, seperti **ImageNet**. Model-model tersebut sudah mampu melakukan tugas yang baik dalam mengekstrak ciri-ciri berbeza daripada imej umum, dan dalam banyak kes, hanya dengan membina pengklasifikasi di atas ciri-ciri yang diekstrak tersebut boleh menghasilkan keputusan yang baik.\n" + "Pendekatan ini dipanggil **pembelajaran pemindahan**, kerana kita memindahkan pengetahuan daripada satu model rangkaian neural ke model yang lain. Dalam pembelajaran pemindahan, kita biasanya bermula dengan model pra-latih, yang telah dilatih pada set data imej yang besar, seperti **ImageNet**. Model-model tersebut sudah boleh melakukan kerja yang baik mengekstrak ciri-ciri yang berbeza daripada imej generik, dan dalam banyak kes hanya membina pengelasan di atas ciri-ciri yang diekstrak itu boleh memberikan hasil yang baik.\n" ] }, { @@ -31,9 +31,9 @@ "source": [ "## Dataset Kucing vs. Anjing\n", "\n", - "Dalam unit ini, kita akan menyelesaikan masalah kehidupan sebenar untuk mengklasifikasikan imej kucing dan anjing. Untuk tujuan ini, kita akan menggunakan [Dataset Kucing vs. Anjing Kaggle](https://www.kaggle.com/c/dogs-vs-cats), yang juga boleh dimuat turun [dari Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", + "Dalam unit ini, kita akan menyelesaikan masalah sebenar mengklasifikasikan imej kucing dan anjing. Oleh itu, kita akan menggunakan [Dataset Kucing vs. Anjing Kaggle](https://www.kaggle.com/c/dogs-vs-cats), yang juga boleh dimuat turun [dari Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", "\n", - "Mari kita muat turun dataset ini dan ekstraknya ke dalam direktori `data` (proses ini mungkin mengambil masa!):\n" + "Mari muat turun dataset ini dan ekstrak ke dalam direktori `data` (proses ini mungkin mengambil masa!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Malangnya, terdapat beberapa fail imej yang rosak dalam set data. Kita perlu melakukan pembersihan pantas untuk memeriksa fail yang rosak. Supaya tidak mengganggu tutorial ini, kami telah memindahkan kod untuk mengesahkan set data ke dalam modul.\n" + "Malangnya, terdapat beberapa fail imej yang rosak dalam set data. Kita perlu membuat pembersihan cepat untuk memeriksa fail yang rosak. Untuk tidak merosakkan tutorial ini, kami memindahkan kod untuk mengesahkan set data ke dalam modul.\n" ] }, { @@ -333,13 +333,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Memuatkan Dataset\n", + "## Memuatkan Set Data\n", "\n", - "Dalam contoh sebelumnya, kita memuatkan dataset yang telah tersedia dalam Keras. Sekarang kita akan berurusan dengan dataset kita sendiri, yang perlu dimuatkan dari direktori imej.\n", + "Dalam contoh sebelum ini, kami memuatkan set data yang dibina dalam Keras. Kini kami akan mengendalikan set data kami sendiri, yang perlu dimuatkan dari direktori imej.\n", "\n", - "Dalam kehidupan sebenar, saiz dataset imej boleh menjadi sangat besar, dan kita tidak boleh bergantung kepada semua data untuk dimuatkan ke dalam memori. Oleh itu, dataset sering diwakili sebagai **generator** yang boleh mengembalikan data dalam minibatch yang sesuai untuk latihan.\n", + "Dalam kehidupan sebenar, saiz set data imej boleh menjadi agak besar, dan tidak semua data boleh dimuatkan ke dalam memori. Oleh itu, set data sering diwakili sebagai **generator** yang boleh mengembalikan data dalam minibatch yang sesuai untuk latihan.\n", "\n", - "Untuk menangani klasifikasi imej, Keras menyertakan fungsi khas `image_dataset_from_directory`, yang boleh memuatkan imej dari subdirektori yang mewakili kelas yang berbeza. Fungsi ini juga menguruskan penskalaan imej, dan ia juga boleh membahagikan dataset kepada subset latihan dan ujian:\n" + "Untuk mengendalikan klasifikasi imej, Keras menyertakan fungsi khas `image_dataset_from_directory`, yang boleh memuatkan imej dari subdirektori yang sepadan dengan kelas yang berbeza. Fungsi ini juga menguruskan penskalaan imej, dan ia juga boleh membahagikan set data kepada subset latihan dan ujian:\n" ] }, { @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Adalah penting untuk menetapkan nilai `seed` yang sama untuk kedua-dua panggilan, kerana ia mempengaruhi pembahagian imej antara dataset latihan dan ujian.\n", + "Adalah penting untuk menetapkan nilai `seed` yang sama untuk kedua-dua panggilan, kerana ia mempengaruhi pembahagian imej antara dataset latih dan uji.\n", "\n", - "Dataset secara automatik mengambil nama kelas daripada direktori, dan anda boleh mengaksesnya jika diperlukan dengan memanggil:\n" + "Dataset secara automatik mengambil nama kelas dari direktori, dan anda boleh mengaksesnya jika perlu dengan memanggil:\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dataset yang telah kami peroleh boleh terus dihantar ke fungsi `fit` untuk melatih model. Ia mengandungi kedua-dua imej dan label yang sepadan, yang boleh diulang menggunakan struktur berikut:\n" + "Set data yang telah kami peroleh boleh terus disalurkan ke fungsi `fit` untuk melatih model. Ia mengandungi kedua-dua imej dan label yang sepadan, yang boleh diproses menggunakan konstruk berikut:\n" ] }, { @@ -453,7 +453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **Nota**: Semua imej dalam set data diwakili sebagai tensor titik terapung dengan julat 0-255. Sebelum menghantarnya ke rangkaian neural, kita perlu menskalakan nilai-nilai tersebut ke dalam julat 0-1. Apabila memplot imej, kita sama ada perlu melakukan perkara yang sama, atau menukar nilai kepada jenis `int` (yang kita lakukan dalam kod di atas), untuk menunjukkan kepada `matplotlib` bahawa kita ingin memplot imej asal yang tidak diskalakan.\n" + "> **Nota**: Semua imej dalam set data diwakili sebagai tensor titik apungan dengan julat 0-255. Sebelum menghantarnya ke rangkaian neural, kita perlu menskala nilai-nilai tersebut ke dalam julat 0-1. Apabila memplot imej, kita sama ada perlu melakukan perkara yang sama, atau menukar nilai kepada jenis `int` (yang kami lakukan dalam kod di atas), supaya `matplotlib` tahu bahawa kita ingin memplot imej asal yang tidak diskalakan.\n" ] }, { @@ -462,7 +462,7 @@ "source": [ "## Model pra-latih\n", "\n", - "Untuk banyak tugas klasifikasi imej, seseorang boleh menemui model rangkaian neural pra-latih. Banyak model tersebut tersedia dalam ruang nama `keras.applications`, dan lebih banyak lagi model boleh didapati di Internet. Mari kita lihat bagaimana model VGG-16 yang paling mudah boleh dimuatkan dan digunakan:\n" + "Untuk banyak tugasan klasifikasi imej, seseorang boleh mencari model rangkaian neural pra-latih. Banyak model tersebut tersedia di dalam ruang nama `keras.applications`, dan lebih banyak model boleh didapati di Internet. Mari kita lihat bagaimana model VGG-16 yang paling mudah boleh dimuat dan digunakan:\n" ] }, { @@ -497,7 +497,17 @@ } ], "source": [ - "vgg = keras.applications.VGG16()\n", + "# SHA-256 of VGG16 weights (with top)\n", + "VGG16_WEIGHTS_SHA256 = '64373286793e3c8b2b4e3219cbf3544bce2f55ab4682710a29f5e7af8f5e4f61'\n", + "\n", + "_weights_path = keras.utils.get_file(\n", + " 'vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " 'https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " file_hash=VGG16_WEIGHTS_SHA256,\n", + " hash_algorithm='sha256',\n", + ")\n", + "\n", + "vgg = keras.applications.VGG16(weights=_weights_path)\n", "inp = keras.applications.vgg16.preprocess_input(x_sample[:1])\n", "\n", "res = vgg(inp)\n", @@ -511,9 +521,9 @@ "metadata": {}, "source": [ "Terdapat beberapa perkara penting di sini:\n", - "* Sebelum memberikan input kepada mana-mana rangkaian pra-latih, ia perlu diproses terlebih dahulu dengan cara tertentu. Ini dilakukan dengan memanggil fungsi `preprocess_input` yang sepadan, yang menerima sekumpulan imej dan mengembalikan bentuk yang telah diproses. Dalam kes VGG-16, imej-imej dinormalisasi, dan beberapa nilai purata yang telah ditetapkan untuk setiap saluran ditolak. Ini kerana VGG-16 pada asalnya dilatih dengan pra-pemprosesan ini.\n", - "* Rangkaian neural digunakan pada kumpulan input, dan kita menerima sebagai hasilnya sekumpulan tensor 1000-elemen yang menunjukkan kebarangkalian setiap kelas. Kita boleh mencari nombor kelas yang paling mungkin dengan memanggil `argmax` pada tensor ini.\n", - "* Hasil yang diperoleh adalah [nombor kelas `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Untuk memahami hasil ini, kita juga boleh menggunakan fungsi `decode_predictions`, yang mengembalikan n kelas teratas bersama dengan nama mereka.\n" + "* Sebelum menyerahkan input kepada mana-mana rangkaian yang telah dilatih, ia perlu diproses terlebih dahulu dengan cara tertentu. Ini dilakukan dengan memanggil fungsi `preprocess_input` yang sepadan, yang menerima satu kumpulan imej, dan mengembalikan bentuk yang telah diproses. Dalam kes VGG-16, imej-imej dinormalisasi, dan beberapa nilai purata yang telah ditetapkan untuk setiap saluran ditolak. Ini kerana VGG-16 asalnya dilatih dengan pemprosesan awal ini.\n", + "* Rangkaian neural digunakan pada kumpulan input, dan kita menerima sebagai hasilnya satu kumpulan tensor 1000-elemen yang menunjukkan kebarangkalian setiap kelas. Kita boleh mencari nombor kelas yang paling mungkin dengan memanggil `argmax` pada tensor ini.\n", + "* Hasil yang diperoleh adalah [nombor kelas `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Untuk memahami hasil ini, kita juga boleh menggunakan fungsi `decode_predictions`, yang mengembalikan n kelas teratas berserta nama mereka.\n" ] }, { @@ -599,7 +609,7 @@ "source": [ "## Pengiraan GPU\n", "\n", - "Rangkaian neural mendalam, seperti VGG-16 dan seni bina moden lain memerlukan kuasa pengiraan yang agak besar untuk dijalankan. Adalah masuk akal untuk menggunakan pecutan GPU, jika ia tersedia. Nasib baik, Keras secara automatik mempercepatkan pengiraan pada GPU jika ia tersedia. Kita boleh memeriksa sama ada Tensorflow boleh menggunakan GPU dengan kod berikut:\n" + "Rangkaian neural dalam, seperti VGG-16 dan seni bina moden lain memerlukan kuasa pengiraan yang banyak untuk dijalankan. Adalah masuk akal untuk menggunakan pecutan GPU, jika ia tersedia. Nasib baik, Keras secara automatik mempercepatkan pengiraan pada GPU jika ia tersedia. Kita boleh periksa jika Tensorflow boleh menggunakan GPU dengan menggunakan kod berikut:\n" ] }, { @@ -626,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Mengekstrak Ciri-ciri VGG\n", "\n", - "Jika kita ingin menggunakan VGG-16 untuk mengekstrak ciri-ciri daripada imej kita, kita memerlukan model tanpa lapisan klasifikasi akhir. Kita boleh memulakan model VGG-16 tanpa lapisan atas menggunakan kod ini:\n" + "## Mengekstrak ciri VGG\n", + "\n", + "Jika kita ingin menggunakan VGG-16 untuk mengekstrak ciri dari imej kita, kita memerlukan model tanpa lapisan klasifikasi akhir. Kita boleh membina model VGG-16 tanpa lapisan atas menggunakan kod ini:\n" ] }, { @@ -680,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dimensi tensor ciri adalah 7x7x512, tetapi untuk memvisualisasikannya, kita perlu mengubah bentuknya kepada bentuk 2D.\n", + "Dimensi tensor ciri adalah 7x7x512, tetapi untuk memvisualisasikannya kami perlu mengubah bentuknya kepada 2D.\n", "\n", - "Sekarang mari kita cuba lihat sama ada ciri-ciri tersebut boleh digunakan untuk mengklasifikasikan imej. Kita akan secara manual mengambil sebahagian imej (50 minibatch, dalam kes ini), dan pra-kira vektor ciri mereka. Kita boleh menggunakan API **dataset** Tensorflow untuk melakukannya. Fungsi `map` mengambil dataset dan menggunakan fungsi lambda yang diberikan untuk mengubahnya. Kita menggunakan mekanisme ini untuk membina dataset baru, `ds_features_train` dan `ds_features_test`, yang mengandungi ciri-ciri yang diekstrak oleh VGG sebagai ganti imej asal.\n" + "Sekarang mari cuba lihat jika ciri-ciri tersebut boleh digunakan untuk mengklasifikasi imej. Mari ambil secara manual sebahagian kecil imej (50 minibatch, dalam kes kami), dan kira sebelumnya vektor ciri mereka. Kami boleh menggunakan API **dataset** Tensorflow untuk melakukan itu. Fungsi `map` mengambil dataset dan menggunakan fungsi lambda yang diberikan untuk menukarnya. Kami menggunakan mekanisme ini untuk membina dataset baru, `ds_features_train` dan `ds_features_test`, yang mengandungi ciri yang diekstrak oleh VGG dan bukannya imej asal.\n" ] }, { @@ -712,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kami menggunakan pembinaan `.take(50)` untuk mengehadkan saiz dataset, bagi mempercepatkan demonstrasi kami. Sudah tentu, anda boleh menjalankan eksperimen ini pada dataset penuh.\n", + "Kami menggunakan konstruksi `.take(50)` untuk mengehadkan saiz set data, bagi mempercepatkan demonstrasi kami. Sudah tentu anda boleh melakukan eksperimen ini pada set data penuh.\n", "\n", - "Sekarang kita mempunyai dataset dengan ciri-ciri yang telah diekstrak, kita boleh melatih pengklasifikasi padat yang ringkas untuk membezakan antara kucing dan anjing. Rangkaian ini akan mengambil vektor ciri dengan bentuk (7,7,512), dan menghasilkan satu output yang mewakili sama ada anjing atau kucing. Oleh kerana ini adalah klasifikasi binari, kami menggunakan fungsi pengaktifan `sigmoid` dan kehilangan `binary_crossentropy`.\n" + "Kini selepas kami mempunyai set data dengan ciri yang diekstrak, kami boleh melatih klasifikasi padat yang mudah untuk membezakan antara kucing dan anjing. Rangkaian ini akan mengambil vektor ciri berbentuk (7,7,512), dan menghasilkan satu output yang merupakan sama ada anjing atau kucing. Oleh kerana ini adalah klasifikasi binari, kami menggunakan fungsi pengaktifan `sigmoid` dan kerugian `binary_crossentropy`.\n" ] }, { @@ -743,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hasilnya sangat baik, kita dapat membezakan antara kucing dan anjing dengan kebarangkalian hampir 95%! Namun, kita hanya menguji pendekatan ini pada sebahagian kecil daripada semua imej, kerana pengekstrakan ciri secara manual nampaknya memakan banyak masa.\n", + "Keputusannya hebat, kita boleh membezakan antara kucing dan anjing dengan kebarangkalian hampir 95%! Walau bagaimanapun, kami hanya menguji pendekatan ini pada subset semua imej kerana pengekstrakan ciri secara manual kelihatan mengambil masa yang lama.\n", "\n", "## Pembelajaran pemindahan menggunakan satu rangkaian VGG\n", "\n", - "Kita juga boleh mengelakkan daripada pra-pengiraan ciri secara manual dengan menggunakan rangkaian VGG-16 asal sepenuhnya semasa latihan, dengan menambah pengekstrak ciri ke rangkaian kita sebagai lapisan pertama.\n", + "Kita juga boleh mengelakkan pengiraan ciri secara manual dengan menggunakan rangkaian VGG-16 asal sepenuhnya semasa latihan, dengan menambah pengekstrak ciri ke rangkaian kita sebagai lapisan pertama.\n", "\n", - "Keindahan seni bina Keras adalah model VGG-16 yang telah kita definisikan di atas juga boleh digunakan sebagai lapisan dalam rangkaian neural yang lain! Kita hanya perlu membina rangkaian dengan pengelas padat di atasnya, dan kemudian melatih keseluruhan rangkaian menggunakan propagasi balik.\n" + "Keindahan seni bina Keras adalah model VGG-16 yang telah kami definisikan di atas juga boleh digunakan sebagai lapisan dalam rangkaian neural lain! Kita hanya perlu membina rangkaian dengan pengkelasan padat di atasnya, dan kemudian melatih keseluruhan rangkaian menggunakan penyebaran belakang.\n" ] }, { @@ -793,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Model ini kelihatan seperti rangkaian klasifikasi hujung ke hujung, yang mengambil imej dan mengembalikan kelas. Namun, perkara yang mencabar ialah kita mahu VGG16 bertindak sebagai pengekstrak ciri, dan bukan untuk dilatih semula. Oleh itu, kita perlu **membekukan berat pengekstrak ciri konvolusi**. Kita boleh mengakses lapisan pertama rangkaian dengan memanggil `model.layers[0]`, dan kita hanya perlu menetapkan sifat `trainable` kepada `False`.\n", + "Model ini kelihatan seperti rangkaian klasifikasi hujung-ke-hujung, yang mengambil imej dan mengembalikan kelas. Walau bagaimanapun, perkara yang sukar ialah kita mahu VGG16 bertindak sebagai pengekstrak ciri, dan tidak dilatih semula. Oleh itu, kita perlu **membekukan berat pengekstrak ciri konvolusi**. Kita boleh mengakses lapisan pertama rangkaian dengan memanggil `model.layers[0]`, dan kita hanya perlu menetapkan sifat `trainable` kepada `False`.\n", "\n", - "> **Nota**: Pembekuan berat pengekstrak ciri diperlukan, kerana jika tidak, lapisan pengklasifikasi yang tidak terlatih boleh merosakkan berat asal yang telah dilatih sebelumnya bagi pengekstrak konvolusi.\n", + "> **Nota**: Pembekuan berat pengekstrak ciri diperlukan, kerana jika tidak, lapisan pengklasifikasi yang tidak dilatih boleh merosakkan berat asal pralatih pengekstrak konvolusi.\n", "\n", - "Anda boleh perhatikan bahawa walaupun jumlah keseluruhan parameter dalam rangkaian kita adalah sekitar 15 juta, kita hanya melatih 25k parameter. Semua parameter lain bagi penapis konvolusi peringkat atas telah dilatih sebelumnya. Ini adalah baik, kerana kita dapat melaras parameter yang lebih kecil dengan jumlah contoh yang lebih sedikit.\n", + "Anda boleh perhatikan bahawa walaupun jumlah keseluruhan parameter dalam rangkaian kita adalah sekitar 15 juta, kita hanya melatih 25k parameter. Semua parameter lain bagi penapis konvolusi peringkat atas adalah pralatih. Itu bagus, kerana kita dapat melaras semula bilangan parameter yang lebih kecil dengan bilangan contoh yang lebih kecil.\n", "\n", - "Kita akan melatih rangkaian kita sekarang dan melihat sejauh mana prestasi yang boleh dicapai. Jangka masa latihan mungkin agak lama, dan jangan risau jika pelaksanaan kelihatan seperti terhenti untuk beberapa waktu.\n" + "Kita akan melatih rangkaian kita sekarang dan melihat sejauh mana kualitinya. Jangka masa yang agak panjang dijangka, dan jangan risau jika pelaksanaan kelihatan beku untuk seketika.\n" ] }, { @@ -824,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nampaknya kita telah memperoleh pengklasifikasi kucing vs. anjing yang cukup tepat!\n", + "Nampaknya kita telah memperoleh pengklasifikasi kucing vs. anjing yang cukup tepat! \n", "\n", "## Menyimpan dan Memuat Model\n", "\n", - "Setelah kita melatih model, kita boleh menyimpan seni bina model dan berat yang telah dilatih ke dalam fail untuk kegunaan masa depan:\n" + "Setelah kita melatih model, kita boleh menyimpan seni bina model dan berat latihan ke fail untuk kegunaan masa hadapan:\n" ] }, { @@ -852,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kita kemudian boleh memuatkan model dari fail pada bila-bila masa. Anda mungkin mendapati ia berguna sekiranya eksperimen seterusnya merosakkan model - anda tidak perlu memulakan semula dari awal.\n" + "Kita kemudian boleh memuatkan model dari fail pada bila-bila masa. Anda mungkin mendapati ia berguna sekiranya eksperimen seterusnya memusnahkan model itu - anda tidak perlu memulakan semula dari awal.\n" ] }, { @@ -868,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Penalaan Halus Pemindahan Pembelajaran\n", + "## Pemindahan pembelajaran penalaan halus\n", "\n", - "Dalam bahagian sebelumnya, kita telah melatih lapisan pengklasifikasi terakhir untuk mengklasifikasikan imej dalam dataset kita sendiri. Walau bagaimanapun, kita tidak melatih semula pengekstrak ciri, dan model kita bergantung pada ciri-ciri yang telah dipelajari oleh model daripada data ImageNet. Jika objek anda kelihatan berbeza daripada imej biasa dalam ImageNet, gabungan ciri ini mungkin tidak berfungsi dengan baik. Oleh itu, adalah masuk akal untuk mula melatih lapisan konvolusi juga.\n", + "Dalam bahagian sebelumnya, kami telah melatih lapisan pengelasan akhir untuk mengklasifikasikan imej dalam set data kami sendiri. Walau bagaimanapun, kami tidak melatih semula pengekstrak ciri, dan model kami bergantung pada ciri-ciri yang telah dipelajari model pada data ImageNet. Jika objek anda berbeza secara visual dari imej ImageNet biasa, gabungan ciri ini mungkin tidak berfungsi dengan baik. Oleh itu adalah masuk akal untuk mula melatih lapisan konvolusional juga.\n", "\n", - "Untuk melakukannya, kita boleh membuka kunci parameter penapis konvolusi yang sebelum ini kita bekukan.\n", + "Untuk melakukan itu, kita boleh membuka beku parameter penapis konvolusional yang telah kita bekukan sebelum ini. \n", "\n", - "> **Nota:** Adalah penting untuk anda membekukan parameter terlebih dahulu dan menjalankan beberapa epoch latihan untuk menstabilkan berat dalam lapisan pengklasifikasi. Jika anda terus memulakan latihan rangkaian hujung-ke-hujung dengan parameter yang tidak dibekukan, ralat besar berkemungkinan akan merosakkan berat pra-latih dalam lapisan konvolusi.\n", + "> **Nota:** Adalah penting bahawa anda membekukan parameter terlebih dahulu dan melaksanakan beberapa epoch latihan untuk menstabilkan berat dalam lapisan pengelasan. Jika anda terus mula melatih rangkaian hujung-ke-hujung dengan parameter yang tidak dibekukan, ralat besar mungkin memusnahkan berat yang telah dipra-latih dalam lapisan konvolusional.\n", "\n", - "Model VGG-16 konvolusi kita terletak di dalam lapisan pertama, dan ia sendiri terdiri daripada banyak lapisan. Kita boleh melihat strukturnya:\n" + "Model VGG-16 konvolusional kami terletak di dalam lapisan pertama, dan ia terdiri daripada banyak lapisan itu sendiri. Kita boleh melihat strukturnya: \n" ] }, { @@ -945,7 +956,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kita boleh nyahbekukan semua lapisan asas konvolusi:\n" + "Kita boleh membuka beku semua lapisan asas konvolusi:\n" ] }, { @@ -961,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Walau bagaimanapun, mencairkan kesemuanya sekaligus bukanlah idea yang terbaik. Kita boleh mula dengan mencairkan hanya beberapa lapisan akhir konvolusi, kerana ia mengandungi corak tahap tinggi yang relevan untuk imej kita. Sebagai contoh, untuk memulakan, kita boleh membekukan semua lapisan kecuali 4 yang terakhir:\n" + "Walau bagaimanapun, mencairkan kesemuanya sekaligus bukanlah idea yang terbaik. Kita boleh mula dengan mencairkan hanya beberapa lapisan akhir konvolusi, kerana ia mengandungi corak tahap tinggi yang relevan untuk imej kita. Sebagai contoh, untuk permulaan, kita boleh membekukan semua lapisan kecuali 4 yang terakhir: \n" ] }, { @@ -1000,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Perhatikan bahawa bilangan parameter yang boleh dilatih meningkat dengan ketara, tetapi ia masih sekitar 50% daripada semua parameter.\n", + "Perhatikan bahawa bilangan parameter yang boleh dilatih meningkat dengan ketara, tetapi masih sekitar 50% daripada semua parameter.\n", "\n", - "Selepas proses unfreezing, kita boleh menjalankan beberapa lagi epoch latihan (dalam contoh kita, kita hanya akan lakukan satu sahaja). Anda juga boleh memilih kadar pembelajaran yang lebih rendah untuk meminimumkan kesan terhadap berat yang telah dilatih sebelumnya. Walau bagaimanapun, walaupun dengan kadar pembelajaran yang rendah, anda boleh menjangkakan ketepatan akan menurun pada permulaan latihan, sebelum akhirnya mencapai tahap yang sedikit lebih tinggi berbanding dengan kes berat yang tetap.\n", + "Selepas membuka kunci, kita boleh melakukan beberapa epoch latihan lagi (dalam contoh kami, kami akan melakukan hanya satu). Anda juga boleh memilih kadar pembelajaran yang lebih rendah, untuk meminimumkan kesan ke atas berat yang telah dilatih terlebih dahulu. Walau bagaimanapun, walaupun dengan kadar pembelajaran yang rendah, anda boleh menjangkakan ketepatan akan menurun pada permulaan latihan, sehingga akhirnya mencapai tahap yang sedikit lebih tinggi daripada kes berat yang tetap.\n", "\n", - "> **Nota:** Latihan ini berlaku dengan lebih perlahan, kerana kita perlu menyebarkan kecerunan kembali melalui banyak lapisan dalam rangkaian!\n" + "> **Nota:** Latihan ini berlaku lebih perlahan, kerana kita perlu menyebarkan kecerunan kembali melalui banyak lapisan rangkaian!\n" ] }, { @@ -1028,9 +1039,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kita berkemungkinan mencapai ketepatan latihan yang lebih tinggi kerana kita menggunakan rangkaian yang lebih berkuasa dengan lebih banyak parameter, tetapi ketepatan pengesahan mungkin tidak meningkat sebanyak itu.\n", + "Kami mungkin akan mencapai ketepatan latihan yang lebih tinggi, kerana kami menggunakan rangkaian yang lebih berkuasa dengan lebih banyak parameter, tetapi ketepatan pengesahan tidak akan meningkat sebanyak itu.\n", "\n", - "Jangan ragu untuk membuka kunci beberapa lapisan tambahan dalam rangkaian dan latih lebih lanjut, untuk melihat sama ada anda boleh mencapai ketepatan yang lebih tinggi!\n" + "Jangan ragu untuk membuka beberapa lapisan rangkaian lagi dan melatih lebih banyak, untuk melihat jika anda dapat mencapai ketepatan yang lebih tinggi!\n" ] }, { @@ -1039,7 +1050,7 @@ "source": [ "## Model penglihatan komputer lain\n", "\n", - "VGG-16 adalah salah satu seni bina penglihatan komputer yang paling mudah. Keras menyediakan banyak lagi rangkaian yang telah dilatih sebelumnya. Antara yang paling kerap digunakan adalah seni bina **ResNet**, yang dibangunkan oleh Microsoft, dan **Inception** oleh Google. Sebagai contoh, mari kita terokai seni bina model ResNet-50 yang paling mudah (ResNet adalah keluarga model dengan kedalaman berbeza, anda boleh cuba bereksperimen dengan ResNet-152 jika anda ingin melihat bagaimana rupa model yang sangat mendalam):\n" + "VGG-16 adalah salah satu seni bina penglihatan komputer yang paling mudah. Keras menyediakan banyak lagi rangkaian pralatih. Yang paling kerap digunakan di antara mereka ialah seni bina **ResNet**, yang dibangunkan oleh Microsoft, dan **Inception** oleh Google. Sebagai contoh, mari kita terokai seni bina model ResNet-50 yang paling mudah (ResNet adalah keluarga model dengan kedalaman berbeza, anda boleh cuba bereksperimen dengan ResNet-152 jika anda ingin melihat bagaimana rupa model yang sangat dalam):\n" ] }, { @@ -1441,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Seperti yang anda lihat, model ini mengandungi blok binaan yang sama seperti biasa: lapisan konvolusi, lapisan pengumpulan, dan pengklasifikasi padat di akhir. Kita boleh menggunakan model ini dengan cara yang sama seperti kita menggunakan VGG-16 untuk pembelajaran pemindahan. Anda boleh mencuba bereksperimen dengan kod di atas, menggunakan model ResNet yang berbeza sebagai model asas, dan melihat bagaimana ketepatan berubah.\n", + "Seperti yang anda lihat, model ini mengandungi blok binaan yang sama yang biasa: lapisan konvolusional, lapisan pengumpulan dan pengklasifikasi padat akhir. Kita boleh menggunakan model ini dengan cara yang sama seperti kita menggunakan VGG-16 untuk pembelajaran pemindahan. Anda boleh mencuba bereksperimen dengan kod di atas, menggunakan model ResNet yang berbeza sebagai model asas, dan melihat bagaimana ketepatan berubah.\n", "\n", - "## Penormalan Kumpulan\n", + "## Normalisasi Kumpulan\n", "\n", - "Rangkaian ini mengandungi satu lagi jenis lapisan: **Penormalan Kumpulan**. Idea penormalan kumpulan adalah untuk membawa nilai yang mengalir melalui rangkaian neural ke julat yang betul. Biasanya, rangkaian neural berfungsi dengan baik apabila semua nilai berada dalam julat [-1,1] atau [0,1], dan itulah sebabnya kita menskalakan/menormalkan data input kita dengan sewajarnya. Walau bagaimanapun, semasa latihan rangkaian yang mendalam, ia boleh berlaku bahawa nilai menjadi jauh di luar julat ini, yang menjadikan latihan bermasalah. Lapisan penormalan kumpulan mengira purata dan sisihan piawai untuk semua nilai dalam minibatch semasa, dan menggunakannya untuk menormalkan isyarat sebelum menghantarnya melalui lapisan rangkaian neural. Ini secara signifikan meningkatkan kestabilan rangkaian yang mendalam.\n" + "Rangkaian ini mengandungi satu lagi jenis lapisan: **Normalisasi Kumpulan**. Idea normalisasi kumpulan adalah untuk membawa nilai-nilai yang mengalir melalui rangkaian neural ke dalam julat yang betul. Biasanya rangkaian neural berfungsi dengan baik apabila semua nilai berada dalam julat [-1,1] atau [0,1], dan itulah sebabnya kita menskala/mennormalisasi data input kita dengan sewajarnya. Walau bagaimanapun, semasa latihan rangkaian yang dalam, boleh terjadi nilai-nilai menjadi jauh dari julat ini, yang menjadikan latihan bermasalah. Lapisan normalisasi kumpulan mengira purata dan sisihan piawai untuk semua nilai dalam minibatch semasa, dan menggunakan mereka untuk menormalisasi isyarat sebelum menyalurkannya melalui lapisan rangkaian neural. Ini meningkatkan kestabilan rangkaian dalam dengan ketara.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Pengajaran\n", + "## Kesimpulan\n", "\n", - "Dengan menggunakan pembelajaran pemindahan, kami dapat dengan cepat membangunkan pengklasifikasi untuk tugas pengelasan objek khusus kami dan mencapai ketepatan yang tinggi. Walau bagaimanapun, contoh ini tidak sepenuhnya adil kerana rangkaian asal VGG-16 telah dilatih terlebih dahulu untuk mengenali kucing dan anjing, jadi kami hanya menggunakan semula kebanyakan corak yang sudah ada dalam rangkaian tersebut. Anda boleh menjangkakan ketepatan yang lebih rendah untuk objek yang lebih eksotik dan khusus domain, seperti butiran pada barisan pengeluaran di kilang, atau daun pokok yang berbeza.\n", + "Dengan menggunakan pembelajaran pemindahan, kami dapat dengan cepat menyediakan pengklasifikasi untuk tugas pengelasan objek tersuai kami, dan mencapai ketepatan yang tinggi. Namun, contoh ini tidak sepenuhnya adil, kerana rangkaian VGG-16 asal telah dilatih terlebih dahulu untuk mengenali kucing dan anjing, dan oleh itu kami hanya menggunakan semula kebanyakan corak yang sudah ada dalam rangkaian tersebut. Anda boleh menjangkakan ketepatan yang lebih rendah pada objek khusus domain yang lebih eksotik, seperti butiran pada barisan pengeluaran di kilang, atau daun pokok yang berbeza.\n", "\n", - "Anda dapat melihat bahawa tugas yang lebih kompleks yang sedang kami selesaikan sekarang memerlukan kuasa pengkomputeran yang lebih tinggi, dan tidak dapat diselesaikan dengan mudah menggunakan CPU. Dalam unit seterusnya, kami akan cuba menggunakan pelaksanaan yang lebih ringan untuk melatih model yang sama dengan sumber pengkomputeran yang lebih rendah, yang menghasilkan ketepatan yang hanya sedikit lebih rendah.\n" + "Anda boleh lihat bahawa tugas yang lebih kompleks yang sedang kami selesaikan kini memerlukan kuasa pengkomputeran yang lebih tinggi, dan tidak boleh diselesaikan dengan mudah pada CPU. Dalam unit seterusnya, kami akan cuba menggunakan pelaksanaan yang lebih ringan untuk melatih model yang sama menggunakan sumber pengkomputeran yang lebih rendah, yang menghasilkan ketepatan hanya sedikit lebih rendah.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.\n" + "---\n\n\n**Penafian**:\nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.\n\n" ] } ], @@ -1484,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-29T13:37:57+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "ms" } }, "nbformat": 4, diff --git a/translations/ms/lessons/5-NLP/README.md b/translations/ms/lessons/5-NLP/README.md index a09c1c67..d94fe575 100644 --- a/translations/ms/lessons/5-NLP/README.md +++ b/translations/ms/lessons/5-NLP/README.md @@ -1,26 +1,26 @@ -# Pemprosesan Bahasa Semula Jadi +# Pemprosesan Bahasa Semulajadi -![Ringkasan tugas NLP dalam bentuk doodle](../../../../translated_images/ms/ai-nlp.b22dcb8ca4707cea.webp) +![Ringkasan tugas NLP dalam lakaran](../../../../translated_images/ms/ai-nlp.b22dcb8ca4707cea.webp) -Dalam bahagian ini, kita akan memberi tumpuan kepada penggunaan Rangkaian Neural untuk menangani tugas-tugas berkaitan dengan **Pemprosesan Bahasa Semula Jadi (NLP)**. Terdapat banyak masalah NLP yang kita mahu komputer dapat selesaikan: +Dalam bahagian ini, kita akan menumpukan pada penggunaan Rangkaian Neural untuk mengendalikan tugas berkaitan dengan **Pemprosesan Bahasa Semulajadi (NLP)**. Terdapat banyak masalah NLP yang kita mahu komputer dapat selesaikan: -* **Klasifikasi teks** adalah masalah klasifikasi biasa yang melibatkan urutan teks. Contohnya termasuk mengklasifikasikan e-mel sebagai spam atau bukan spam, atau mengkategorikan artikel kepada sukan, perniagaan, politik, dan sebagainya. Selain itu, semasa membangunkan bot sembang, kita sering perlu memahami apa yang pengguna ingin sampaikan -- dalam kes ini kita berurusan dengan **klasifikasi niat**. Selalunya, dalam klasifikasi niat, kita perlu menangani banyak kategori. -* **Analisis sentimen** adalah masalah regresi biasa, di mana kita perlu memberikan nombor (sentimen) yang menunjukkan sejauh mana positif/negatif makna sesuatu ayat. Versi yang lebih maju daripada analisis sentimen ialah **analisis sentimen berasaskan aspek** (ABSA), di mana kita memberikan sentimen bukan kepada keseluruhan ayat, tetapi kepada bahagian-bahagian tertentu daripadanya (aspek), contohnya *Di restoran ini, saya suka masakannya, tetapi suasananya sangat teruk*. -* **Pengecaman Entiti Bernama** (NER) merujuk kepada masalah mengekstrak entiti tertentu daripada teks. Sebagai contoh, kita mungkin perlu memahami bahawa dalam frasa *Saya perlu terbang ke Paris esok* perkataan *esok* merujuk kepada TARIKH, dan *Paris* adalah LOKASI. -* **Pengekstrakan kata kunci** adalah serupa dengan NER, tetapi kita perlu mengekstrak perkataan yang penting kepada makna ayat secara automatik, tanpa latihan awal untuk jenis entiti tertentu. -* **Pengelompokan teks** boleh berguna apabila kita mahu mengumpulkan ayat-ayat yang serupa, contohnya, permintaan yang serupa dalam perbualan sokongan teknikal. -* **Menjawab soalan** merujuk kepada keupayaan model untuk menjawab soalan tertentu. Model menerima petikan teks dan soalan sebagai input, dan ia perlu memberikan tempat dalam teks di mana jawapan kepada soalan itu terkandung (atau, kadangkala, menjana teks jawapan). -* **Penjanaan teks** adalah keupayaan model untuk menjana teks baharu. Ia boleh dianggap sebagai tugas klasifikasi yang meramalkan huruf/perkataan seterusnya berdasarkan beberapa *teks permulaan*. Model penjanaan teks yang maju, seperti GPT-3, mampu menyelesaikan tugas NLP lain seperti klasifikasi menggunakan teknik yang dipanggil [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) atau [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Peringkasan teks** adalah teknik apabila kita mahu komputer "membaca" teks panjang dan meringkaskannya dalam beberapa ayat. +* **Pengelasan teks** adalah masalah pengelasan tipikal berkaitan urutan teks. Contohnya termasuk mengklasifikasikan mesej e-mel sebagai spam vs. bukan spam, atau mengkategorikan artikel sebagai sukan, perniagaan, politik, dll. Juga, apabila membangunkan bot sembang, kita sering perlu memahami apa yang pengguna ingin sampaikan -- dalam kes ini kita mengendalikan **pengelasan niat**. Sering kali, dalam pengelasan niat kita perlu menangani banyak kategori. +* **Analisis sentimen** adalah masalah regresi tipikal, di mana kita perlu memberikan nombor (sentimen) yang sesuai dengan betapa positif/negatif makna sesuatu ayat. Versi analisis sentimen yang lebih maju ialah **analisis sentimen berasaskan aspek** (ABSA), di mana kita memberikan sentimen bukan kepada keseluruhan ayat, tetapi kepada bahagian-bahagiannya yang berbeza (aspek), contohnya *Di restoran ini, saya suka masakan, tetapi suasananya teruk*. +* **Pengenalan Entiti Bernama** (NER) merujuk kepada masalah mengekstrak entiti tertentu dari teks. Contohnya, kita mungkin perlu memahami bahawa dalam frasa *Saya perlu terbang ke Paris esok* perkataan *esok* merujuk kepada TARIKH, dan *Paris* adalah LOKASI. +* **Pengekstrakan kata kunci** adalah serupa dengan NER, tetapi kita perlu mengekstrak perkataan penting kepada makna ayat secara automatik, tanpa latihan awal untuk jenis entiti tertentu. +* **Pengkelasan teks** boleh berguna apabila kita mahu mengelompokkan ayat-ayat yang serupa, contohnya, permintaan serupa dalam perbualan sokongan teknikal. +* **Menjawab soalan** merujuk kepada keupayaan model untuk menjawab soalan tertentu. Model menerima petikan teks dan soalan sebagai input, dan ia perlu menyediakan tempat dalam teks di mana jawapan kepada soalan itu terkandung (atau, kadang-kadang, menjana teks jawapan). +* **Penjanaan teks** ialah keupayaan model untuk menghasilkan teks baru. Ia boleh dianggap sebagai tugas pengelasan yang meramalkan huruf/kata seterusnya berdasarkan *prompt teks*. Model penjanaan teks canggih, seperti GPT-3, mampu menyelesaikan tugas NLP lain seperti pengelasan menggunakan teknik yang dipanggil [programming prompt](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) atau [kejuruteraan prompt](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) +* **Rumusan teks** ialah teknik apabila kita mahu komputer "membaca" teks panjang dan merumuskannya dalam beberapa ayat. * **Terjemahan mesin** boleh dilihat sebagai gabungan pemahaman teks dalam satu bahasa, dan penjanaan teks dalam bahasa lain. -Pada mulanya, kebanyakan tugas NLP diselesaikan menggunakan kaedah tradisional seperti tatabahasa. Sebagai contoh, dalam terjemahan mesin, penghurai digunakan untuk mengubah ayat asal kepada pokok sintaks, kemudian struktur semantik tahap tinggi diekstrak untuk mewakili makna ayat, dan berdasarkan makna ini serta tatabahasa bahasa sasaran, hasilnya dijana. Kini, banyak tugas NLP lebih berkesan diselesaikan menggunakan rangkaian neural. +Pada mulanya, kebanyakan tugas NLP diselesaikan menggunakan kaedah tradisional seperti tatabahasa. Contohnya, dalam terjemahan mesin parser digunakan untuk menukar ayat awal menjadi pokok sintaksis, kemudian struktur semantik tahap tinggi diekstrak untuk mewakili makna ayat, dan berdasarkan makna ini dan tatabahasa bahasa sasaran hasil dijana. Kini, banyak tugas NLP diselesaikan dengan lebih berkesan menggunakan rangkaian neural. -> Banyak kaedah NLP klasik dilaksanakan dalam perpustakaan Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Terdapat [Buku NLTK](https://www.nltk.org/book/) yang hebat tersedia dalam talian yang merangkumi cara pelbagai tugas NLP boleh diselesaikan menggunakan NLTK. +> Banyak kaedah NLP klasik dilaksanakan dalam perpustakaan Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Terdapat [Buku NLTK](https://www.nltk.org/book/) hebat yang tersedia dalam talian yang merangkumi bagaimana tugas NLP yang berbeza boleh diselesaikan menggunakan NLTK. -Dalam kursus ini, kita akan memberi tumpuan kepada penggunaan Rangkaian Neural untuk NLP, dan kita akan menggunakan NLTK jika diperlukan. +Dalam kursus kami, kami akan lebih menumpukan pada penggunaan Rangkaian Neural untuk NLP, dan kami akan menggunakan NLTK apabila perlu. -Kita telah mempelajari tentang penggunaan rangkaian neural untuk menangani data tabular dan imej. Perbezaan utama antara jenis data tersebut dan teks ialah teks adalah urutan dengan panjang berubah-ubah, manakala saiz input dalam kes imej diketahui terlebih dahulu. Walaupun rangkaian konvolusi boleh mengekstrak corak daripada data input, corak dalam teks lebih kompleks. Contohnya, kita boleh mempunyai penafian yang dipisahkan daripada subjek oleh banyak perkataan (contohnya, *Saya tidak suka oren*, berbanding *Saya tidak suka oren besar yang berwarna-warni dan sedap*), dan itu masih perlu ditafsirkan sebagai satu corak. Oleh itu, untuk menangani bahasa, kita perlu memperkenalkan jenis rangkaian neural baharu, seperti *rangkaian berulang* dan *transformer*. +Kami sudah belajar tentang penggunaan rangkaian neural untuk mengendalikan data tabular dan imej. Perbezaan utama antara jenis data tersebut dan teks ialah teks adalah urutan dengan panjang berubah-ubah, manakala saiz input dalam kes imej diketahui terlebih dahulu. Walaupun rangkaian konvolusi boleh mengekstrak corak daripada data input, corak dalam teks adalah lebih kompleks. Contohnya, kita boleh mempunyai penafian yang dipisahkan dari subjek dengan kata-kata sewenang-wenangnya (contoh *Saya tidak suka oren*, berbanding *Saya tidak suka oren besar berwarna-warni yang sedap itu*), dan itu harus tetap ditafsirkan sebagai satu corak. Oleh itu, untuk mengendalikan bahasa kita perlu memperkenalkan jenis rangkaian neural baru, seperti *rangkaian berulang* dan *transformer*. ## Pasang Perpustakaan @@ -28,7 +28,7 @@ Jika anda menggunakan pemasangan Python tempatan untuk menjalankan kursus ini, a **Untuk PyTorch** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.txt ``` **Untuk TensorFlow** ```bash @@ -40,12 +40,12 @@ pip install -r requirements-tf.txt ## Amaran GPU Dalam bahagian ini, dalam beberapa contoh kita akan melatih model yang agak besar. -* **Gunakan Komputer Berkemampuan GPU**: Adalah disarankan untuk menjalankan buku nota anda pada komputer yang dilengkapi GPU untuk mengurangkan masa menunggu semasa bekerja dengan model besar. -* **Kekangan Memori GPU**: Menjalankan pada GPU mungkin menyebabkan situasi di mana anda kehabisan memori GPU, terutamanya semasa melatih model besar. -* **Penggunaan Memori GPU**: Jumlah memori GPU yang digunakan semasa latihan bergantung pada pelbagai faktor, termasuk saiz minibatch. -* **Kurangkan Saiz Minibatch**: Jika anda menghadapi masalah memori GPU, pertimbangkan untuk mengurangkan saiz minibatch dalam kod anda sebagai penyelesaian yang mungkin. -* **Pelepasan Memori GPU TensorFlow**: Versi lama TensorFlow mungkin tidak melepaskan memori GPU dengan betul semasa melatih beberapa model dalam satu kernel Python. Untuk mengurus penggunaan memori GPU dengan berkesan, anda boleh mengkonfigurasi TensorFlow untuk memperuntukkan memori GPU hanya apabila diperlukan. -* **Penyertaan Kod**: Untuk menetapkan TensorFlow supaya memperuntukkan memori GPU hanya apabila diperlukan, sertakan kod berikut dalam buku nota anda: +* **Gunakan Komputer yang Mempunyai GPU**: Adalah disyorkan untuk menjalankan notebook anda pada komputer yang dilengkapi GPU untuk mengurangkan masa menunggu apabila bekerja dengan model besar. +* **Keterbatasan Memori GPU**: Menjalankan pada GPU mungkin membawa kepada situasi di mana anda kehabisan memori GPU, terutamanya apabila melatih model besar. +* **Penggunaan Memori GPU**: Jumlah memori GPU yang digunakan semasa latihan bergantung kepada pelbagai faktor, termasuk saiz minibatch. +* **Minimakan Saiz Minibatch**: Jika anda menghadapi masalah memori GPU, pertimbangkan untuk mengurangkan saiz minibatch dalam kod anda sebagai penyelesaian potensi. +* **Pelepasan Memori GPU oleh TensorFlow**: Versi lama TensorFlow mungkin tidak melepaskan memori GPU dengan betul apabila melatih beberapa model dalam satu kernel Python. Untuk menguruskan penggunaan memori GPU dengan berkesan, anda boleh mengkonfigurasi TensorFlow untuk mengalokasikan memori GPU hanya apabila perlu. +* **Penyertaan Kod**: Untuk menetapkan TensorFlow agar memanjangkan pengalokasian memori GPU hanya apabila diperlukan, sertakan kod berikut dalam notebook anda: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,13 +53,13 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Jika anda berminat untuk mempelajari NLP dari perspektif ML klasik, lawati [siri pelajaran ini](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) +Jika anda berminat untuk belajar tentang NLP dari perspektif ML klasik, lawati [suite pelajaran ini](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ## Dalam Bahagian Ini -Dalam bahagian ini kita akan mempelajari tentang: +Dalam bahagian ini kita akan belajar tentang: * [Mewakili teks sebagai tensor](13-TextRep/README.md) -* [Perwakilan Perkataan](14-Emdeddings/README.md) +* [Penggantungan Perkataan](14-Emdeddings/README.md) * [Pemodelan Bahasa](15-LanguageModeling/README.md) * [Rangkaian Neural Berulang](16-RNN/README.md) * [Rangkaian Generatif](17-GenerativeNetworks/README.md) @@ -67,5 +67,7 @@ Dalam bahagian ini kita akan mempelajari tentang: --- -**Penafian**: -Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. + \ No newline at end of file diff --git a/translations/sw/.co-op-translator.json b/translations/sw/.co-op-translator.json index 8ed28d8e..990c1ed1 100644 --- a/translations/sw/.co-op-translator.json +++ b/translations/sw/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "sw" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T16:45:07+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "sw" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T16:17:02+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "sw" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "sw", + "failure_date": "2026-07-08T16:44:37+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.", + "translator_version": "0.20.0", + "failure_policy_version": 1 + } + }, "etc/CODE_OF_CONDUCT.md": { "original_hash": "c06b12caf3c901eb3156e3dd5b0aea56", "translation_date": "2025-08-25T21:06:19+00:00", @@ -54,8 +73,8 @@ "language_code": "sw" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:33:09+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T16:39:18+00:00", "source_file": "examples/README.md", "language_code": "sw" }, @@ -66,8 +85,8 @@ "language_code": "sw" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T04:20:07+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T16:39:45+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "sw" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "sw" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T16:25:35+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "sw" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-25T20:57:37+00:00", @@ -330,8 +355,8 @@ "language_code": "sw" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-25T20:48:39+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T16:40:16+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "sw" }, diff --git a/translations/sw/CONTRIBUTING.md b/translations/sw/CONTRIBUTING.md new file mode 100644 index 00000000..d6628e8d --- /dev/null +++ b/translations/sw/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Kuchangia AI-Kwa-Wananchi + +Asante kwa kuonesha nia ya kuchangia AI-Kwa-Wananchi! Tunakaribisha tafsiri, marekebisho ya masomo, na marekebisho ya uundaji. + +## Makubaliano ya Leseni ya Mchangiaji ya Microsoft (CLA) + +Mradi huu unakaribisha michango na mapendekezo. Michango mingi inahitaji ukubaliane na Makubaliano ya Leseni ya Mchangiaji (CLA) yanayosema kuwa una haki ya, na kwa kweli unatupa, haki za kutumia mchango wako. Kwa maelezo, tembelea [https://cla.microsoft.com](https://cla.microsoft.com). + +Unapowasilisha ombi la kuvuta, bot wa CLA otomatiki ataamua ikiwa unatakiwa kutoa CLA na kupamba PR ipasavyo (mfano, lebo, maoni). Fuata tu maelekezo yaliyotolewa na bot. Utahitaji kufanya hivi mara moja tu kwa hifadhidata zote zinazotumia CLA yetu. + +## Jinsi ya Kuchangia + +### 1. Marekebisho ya Makosa ya Kielelezo / Makosa ya Nambari +Ikiwa utapata kosa la kielelezo au hitilafu katika daftari lolote la Jupyter au faili ya masomo ya markdown: +1. Fanya fork hifadhidata. +2. Rekebisha kosa la kielelezo au kiungo kilichovunjika. +3. Wasilisha Ombi la Kuvuta (Pull Request) lenye maelezo wazi ya marekebisho. + +### 2. Kusambaza Tafsiri +Tunakaribisha tafsiri za masomo katika lugha nyingine! Tafadhali weka tafsiri chini ya saraka ya `translations/` ukitumia majina ya folda zilizopo (mfano `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +Kwa maelezo zaidi, ona [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md). + +--- + + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/examples/README.md b/translations/sw/examples/README.md index 83ea0067..9eb2862e 100644 --- a/translations/sw/examples/README.md +++ b/translations/sw/examples/README.md @@ -1,31 +1,31 @@ -# Mifano ya AI kwa Wanaoanza +# Mifano Rahisi ya AI Kwa Waanzilishi -Karibu! Hii ni orodha ya mifano rahisi, inayojitegemea ili kukusaidia kuanza na AI na ujifunzaji wa mashine. Kila mfano umeundwa kuwa rafiki kwa wanaoanza, ukiwa na maelezo ya kina na maelekezo ya hatua kwa hatua. +Karibu! Saraka hii ina mifano rahisi, huru inayokusaidia kuanza na AI na mashine kujifunza. Kila mfano umeundwa kwa urafiki kwa wanaoanza ikiwa na maelezo ya kina na ufafanuzi hatua kwa hatua. ## 📚 Muhtasari wa Mifano -| Mfano | Maelezo | Ugumu | Mahitaji ya awali | -|-------|---------|-------|-------------------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | Programu yako ya kwanza ya AI - utambuzi rahisi wa mifumo | ⭐ Msingi | Msingi wa Python | -| [Simple Neural Network](../../../examples/02-simple-neural-network.py) | Jenga mtandao wa neva kutoka mwanzo | ⭐⭐ Msingi+ | Python, hesabu za msingi | -| [Image Classifier](./03-image-classifier.ipynb) | Tambua picha kwa kutumia modeli iliyofunzwa awali | ⭐⭐ Msingi+ | Python, numpy | -| [Text Sentiment](../../../examples/04-text-sentiment.py) | Changanua hisia za maandishi (chanya/hasira) | ⭐⭐ Msingi+ | Python | +| Mfano | Maelezo | Ugumu | Masharti | +|---------|-------------|------------|---------------| +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | Programu yako ya kwanza ya AI - utambuzi rahisi wa mifumo | ⭐ Maanzilishi | Misingi ya Python | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Tengeneza mtandao wa neva kutoka mwanzo | ⭐⭐ Maanzilishi+ | Python, hisabati ya msingi | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | Tengeneza waainishi wa picha kwa kutumia mfano uliobobea | ⭐⭐ Maanzilishi+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | Changanua hisia za maandishi (zaki/ hasi) | ⭐⭐ Maanzilishi+ | Python | -## 🚀 Kuanza +## 🚀 Kuanzisha -### Mahitaji ya awali +### Masharti -Hakikisha una Python imewekwa (inayopendekezwa ni 3.8 au zaidi). Weka pakiti zinazohitajika: +Hakikisha umeweka Python (3.8 au juu zaidi inapendekezwa). Toshea vifurushi vinavyohitajika: ```bash -# For Python scripts +# Kwa maandishi ya Python pip install numpy -# For Jupyter notebooks (image classifier) +# Kwa daftari za Jupyter (kipanga picha) pip install jupyter numpy pillow tensorflow ``` -Au tumia mazingira ya conda kutoka kwenye mtaala mkuu: +Au tumia mazingira ya conda kutoka mtaala mkuu: ```bash conda env create --name ai4beg --file ../environment.yml @@ -34,52 +34,54 @@ conda activate ai4beg ### Kuendesha Mifano -**Kwa faili za Python (.py):** +**Kwa ajili ya faili za Python (.py):** ```bash python 01-hello-ai-world.py ``` -**Kwa Jupyter notebooks (.ipynb):** +**Kwa ajili ya daftari za Jupyter (.ipynb):** ```bash jupyter notebook 03-image-classifier.ipynb ``` ## 📖 Njia ya Kujifunza -Tunapendekeza ufuate mifano kwa mpangilio: +Tunapendekeza kufuata mifano kwa mpangilio: 1. **Anza na "Hello AI World"** - Jifunze misingi ya utambuzi wa mifumo 2. **Jenga Mtandao Rahisi wa Neva** - Elewa jinsi mitandao ya neva inavyofanya kazi -3. **Jaribu Image Classifier** - Tazama AI ikifanya kazi na picha halisi -4. **Changanua Hisia za Maandishi** - Gusa uchakataji wa lugha asilia +3. **Jaribu Waainishi wa Picha** - Tazama AI ikifanya kazi kwa picha halisi +4. **Changanua Hisia za Maandishi** - Gundua usindikaji wa lugha asilia -## 💡 Vidokezo kwa Wanaoanza +## 💡 Vidokezo kwa Waanzilishi -- **Soma maoni ya kificho kwa makini** - Yanatoa maelezo ya kila mstari -- **Jaribu!** - Badilisha thamani na uone kinachotokea -- **Usijali kuhusu kuelewa kila kitu** - Kujifunza ni mchakato +- **Soma maelezo ya msimbo kwa makini** - Yanaeleza kila mstari hutenda nini +- **Jaribu mabadiliko!** - Badilisha thamani na uone kinachotokea +- **Usijali kuelewa kila kitu** - Kujifunza kunachukua muda - **Uliza maswali** - Tumia [Bodi ya Majadiliano](https://github.com/microsoft/AI-For-Beginners/discussions) ## 🔗 Hatua Zifuatazo -Baada ya kukamilisha mifano hii, gundua mtaala kamili: +Baada ya kukamilisha mifano hii, chunguza mtaala mzima: - [Utangulizi wa AI](../lessons/1-Intro/README.md) - [Mitandao ya Neva](../lessons/3-NeuralNetworks/README.md) -- [Uchambuzi wa Picha](../lessons/4-ComputerVision/README.md) -- [Uchakataji wa Lugha Asilia](../lessons/5-NLP/README.md) +- [Utambuzi wa Kompyuta](../lessons/4-ComputerVision/README.md) +- [Usindikaji wa Lugha Asilia](../lessons/5-NLP/README.md) ## 🤝 Kuchangia -Umeona mifano hii inasaidia? Saidia kuiboresha: -- Ripoti matatizo au pendekeza maboresho -- Ongeza mifano zaidi kwa wanaoanza -- Boresha nyaraka na maoni +Umeona mifano hii ni msaada? Tusaidie kuiboresha: +- Ripoti matatizo au mapendekezo ya maboresho +- Ongeza mifano zaidi kwa waanzilishi +- Boresheni nyaraka na maelezo --- -*Kumbuka: Kila mtaalamu alikuwa mwanzoni. Kujifunza kunafurahisha! 🎓* +*Kumbuka: Kila mtaalamu alikuwa mwanzo. Furahia kujifunza! 🎓* --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, inashauriwa kutumia huduma ya tafsiri ya kibinadamu ya kitaalamu. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/lessons/0-course-setup/how-to-run.md b/translations/sw/lessons/0-course-setup/how-to-run.md index 66841141..12655e0e 100644 --- a/translations/sw/lessons/0-course-setup/how-to-run.md +++ b/translations/sw/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ # Jinsi ya Kuendesha Msimbo -Mtaala huu una mifano mingi inayoweza kutekelezwa na maabara ambazo ungependa kuendesha. Ili kufanya hivi, unahitaji uwezo wa kutekeleza msimbo wa Python katika Jupyter Notebooks zinazotolewa kama sehemu ya mtaala huu. Una chaguzi kadhaa za kuendesha msimbo: +Mtaala huu una mifano mingi inayoweza kutekelezwa na maabara ambazo ungependa kuendesha. Ili kufanya hivyo, unahitaji uwezo wa kutekeleza msimbo wa Python katika Jupyter Notebooks zinazotolewa kama sehemu ya mtaala huu. Una chaguzi kadhaa za kuendesha msimbo: -## Endesha kwa karibu kwenye kompyuta yako +## Endesha kwa ndani kwenye kompyuta yako -Ili kuendesha msimbo kwa karibu kwenye kompyuta yako, usakinishaji wa Python unahitajika. Moja ya mapendekezo ni kusakinisha **[miniconda](https://conda.io/en/latest/miniconda.html)** - ni usakinishaji mzito mdogo unaounga mkono meneja wa pakiti `conda` kwa **mazingira pepe** tofauti za Python. +Ili kuendesha msimbo kwa ndani kwenye kompyuta yako, unahitaji kuwa na usakinishaji wa Python. Moja ya mapendekezo ni kusakinisha **[miniconda](https://conda.io/en/latest/miniconda.html)** - ni usakinishaji mwepesi unaounga mkono meneja wa vifurushi `conda` kwa mazingira mbalimbali ya Python **virtual environments**. -Baada ya kusakinisha miniconda, tengeneza nakala ya hazina na unda mazingira pepe yatakayotumika kwa kozi hii: +Baada ya kusakinisha miniconda, nakili (clone) hifadhidata na unda mazingira ya virtual yatakayotumika kwa kozi hii: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,19 +15,19 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Kutumia Visual Studio Code na Ongezeko la Python +### Kutumia Visual Studio Code na Virutubisho vya Python -Mtaala huu unatumika vyema unapoifungua katika [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) pamoja na [Ongezeko la Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Mtaala huu unatumika vizuri zaidi unapoufungua katika [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) ukiwa na [Virutubisho vya Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Kumbuka**: Mara tu unapochukua nakala na kufungua saraka katika VS Code, itapendekeza kiotomati kusakinisha ongezeko la Python. Pia utahitaji kusakinisha miniconda kama ilivyoelezwa hapo juu. +> **Kumbuka**: Mara baada ya kunakili na kufungua saraka katika VS Code, itapendekeza moja kwa moja kusakinisha virutubisho vya Python. Pia utahitaji kusakinisha miniconda kama ilivyoelezwa hapo juu. -> **Kumbuka**: Ikiwa VS Code itapendekeza kufungua tena hazina katika chombo (container), unapaswa kukataa ili kutumia usakinishaji wa Python wenyewe wenyewe. +> **Kumbuka**: Ikiwa VS Code itakupendekeza kufungua hifadhidata upya ndani ya kontena, unapaswa kukataa hii ili kutumia usakinishaji wa Python kwa ndani. ### Kutumia Jupyter katika Kivinjari -Unaweza pia kutumia mazingira ya Jupyter kutoka kwa kivinjari kwenye kompyuta yako mwenyewe. Jupyter wa kawaida na JupyterHub zote hutoa mazingira mazuri ya maendeleo yenye ukamilishaji wa kiotomatiki, kuangazia msimbo, n.k. +Unaweza pia kutumia mazingira ya Jupyter kutoka kivinjari kwenye kompyuta yako mwenyewe. Jupyter wa kawaida na JupyterHub zote zinatoa mazingira mazuri ya maendeleo yenye utimilifu wa nira (auto-completion), muonekano wa msimbo, n.k. -Kuanza Jupyter kwa karibu, nenda kwenye saraka ya kozi, na tekereza: +Ili kuanza Jupyter kwa ndani, nenda kwenye saraka ya kozi, na tekeleza: ```bash jupyter notebook @@ -36,36 +36,36 @@ au ```bash jupyterhub ``` -Kisha unaweza kuvinjari kwenye faili yoyote za `.ipynb`, uzifungue na kuanza kufanya kazi. +Kisha unaweza kuvinjari faili yoyote ya `.ipynb`, ufungue na kuanza kufanya kazi. -### Kuendesha katika chombo (container) +### Kuendesha katika kontena -Mbali na usakinishaji wa Python, utaratibu mwingine ni kuendesha msimbo katika chombo. Kwa kuwa hazina yetu hutoa folda maalum ya `.devcontainer` inayofundisha jinsi ya kujenga chombo kwa ajili ya hazina hii, VS Code hutoa fursa ya kufungua tena msimbo katika chombo. Hii itahitaji usakinishaji wa Docker, na pia itakuwa na ngumu zaidi, kwa hivyo tunapendekeza hii kwa watumiaji waliobobea zaidi. +Njia mbadala ya usakinishaji wa Python ni kuendesha msimbo katika kontena. Kwa kuwa hifadhidata yetu ina jalada maalum `.devcontainer` linaloelekeza jinsi ya kujenga kontena kwa ajili ya repository hii, VS Code inatoa fursa ya kufungua upya msimbo ndani ya kontena. Hii itahitaji usakinishaji wa Docker, na pia itakuwa ngumu zaidi, kwa hiyo tunapendekeza hii kwa watumiaji wenye uzoefu zaidi. -## Kuendesha katika Wingu +## Kuendesha kwenye Wingu -Ikiwa hutaki kusakinisha Python kwa karibu, na una upatikanaji wa baadhi ya rasilimali za wingu - chaguo zuri ni kuendesha msimbo katika wingu. Kuna njia kadhaa unazoweza kufanya hivi: +Ikiwa hutaki kusakinisha Python kwa ndani, na una upatikanaji wa rasilimali za wingu - njia nzuri ni kuendesha msimbo kwenye wingu. Kuna njia kadhaa unazoweza kutumia kufanya hivi: -* Kutumia **[GitHub Codespaces](https://github.com/features/codespaces)**, ambacho ni mazingira pepe yaliyoandaliwa kwa ajili yako kwenye GitHub, yanayoweza kufikiwa kupitia kiolesura cha kivinjari cha VS Code. Ikiwa una upatikanaji wa Codespaces, unaweza kubofya tu kitufe cha **Code** katika hazina, anza codespace, na kuanza kufanya kazi mara moja. -* Kutumia **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) hutoa rasilimali za kompyuta bure mtandaoni kwa watu kama wewe kujaribu msimbo wa GitHub. Kuna kitufe katika ukurasa wa mwanzo kufungua hazina katika Binder - hii itakupeleka haraka kwenye tovuti ya binder, ambayo itajenga chombo cha msingi na kuanzisha kiolesura cha mtandao cha Jupyter kwa urahisi. +* Kutumia **[GitHub Codespaces](https://github.com/features/codespaces)**, ambayo ni mazingira halisi yaliyoundwa kwa ajili yako kwenye GitHub, yanayopatikana kupitia kiolesura cha kivinjari cha VS Code. Ikiwa una upatikanaji wa Codespaces, unaweza kubofya tu kitufe cha **Code** katika repo, anza codespace, na uanze kuendesha mara moja. +* Kutumia **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) hutoa rasilimali za kompyuta bure zinazotolewa kwenye wingu kwa watu kama wewe kujaribu msimbo wa GitHub. Kuna kitufe kwenye ukurasa wa mwanzo cha kufungua repository kwenye Binder - hii itakupeleka haraka kwenye tovuti ya binder, ambayo itajenga kontena la msingi na kuanzisha kiolesura cha wavuti cha Jupyter kwako kwa urahisi. -> **Kumbuka**: Ili kuzuia matumizi mabaya, Binder ina rasilimali za wavuti zilizo vizuiziwa. Hii inaweza kuzuia baadhi ya misimbo kufanya kazi, ambayo hupakua mifano na/au seti za data kutoka mtandao wa umma. Huenda ukahitaji kupata njia mbadala. Pia, rasilimali za kompyuta zinazotolewa na Binder ni za msingi, hivyo mafunzo yatachukua muda mrefu, hasa katika masomo ya baadaye yenye ugumu zaidi. +> **Kumbuka**: Ili kuzuia matumizi mabaya, Binder ina upatikanaji wa baadhi ya rasilimali za wavuti zilizozuiwa. Hii inaweza kuzuia baadhi ya misimbo kufanya kazi, ambayo hupakua mifano na/au seti za data kutoka kwenye mtandao wa umma. Huenda utahitaji kutafuta mbinu mbadala. Pia, rasilimali za kompyuta zinazotolewa na Binder ni za kawaida tu, kwa hiyo mafunzo yatakuwa polepole, hasa katika mafunzo ya baadaye, magumu zaidi. -## Kuendesha katika Wingu na GPU +## Kuendesha kwenye Wingu kwa GPU -Baadhi ya masomo ya baadaye katika mtaala huu yatanufaika sana na msaada wa GPU. Mafunzo ya mfano, kwa mfano, yanaweza kuwa polepole sana vinginevyo. Kuna chaguzi kadhaa unazoweza kufuata, hasa ikiwa una upatikanaji wa wingu kupitia [Azure kwa Wanafunzi](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), au kupitia taasisi yako: +Baadhi ya masomo ya baadaye katika mtaala huu yangefaidika sana na msaada wa GPU. Mafunzo ya mifano, kwa mfano, yanaweza kuwa polepole sana vinginevyo. Kuna chaguzi kadhaa unazoweza kufuata, hasa ikiwa una upatikanaji wa wingu kupitia [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), au kupitia taasisi yako: -* Unda [Mashine Pepe ya Sayansi ya Data](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) na uungane nayo kupitia Jupyter. Kisha unaweza kuunda nakala ya hazina moja kwa moja kwenye mashine, na kuanza kujifunza. VMs za mfululizo wa NC zina msaada wa GPU. +* Unda [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) na uunganishe kupitia Jupyter. Kisha unaweza kunakili repo moja kwa moja kwenye mashine, na kuanza kujifunza. VMs za NC-series zina msaada wa GPU. -> **Kumbuka**: Baadhi ya usajili, ikiwa ni pamoja na Azure kwa Wanafunzi, hazitoi msaada wa GPU moja kwa moja. Huenda ukahitaji kuomba cores za GPU ziada kupitia ombi la msaada wa kiufundi. +> **Kumbuka**: Baadhi ya usajili, ikiwemo Azure for Students, haipati msaada wa GPU moja kwa moja. Huenda utahitaji kuomba cores za ziada za GPU kupitia ombi la msaada wa kiufundi. -* Unda [Eneo la Kazi la Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) kisha tumia kipengele cha Notebook pale. [Video hii](https://azure-for-academics.github.io/quickstart/azureml-papers/) inaonyesha jinsi ya kunakili hazina katika daftari la Azure ML na kuanza kuitumia. +* Unda [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) na kisha tumia kipengele cha Notebook hapo. [Video hii](https://azure-for-academics.github.io/quickstart/azureml-papers/) inaonyesha jinsi ya kunakili repository ndani ya Azure ML notebook na kuanza kuitumia. -Unaweza pia kutumia Google Colab, ambayo inakuja na msaada wa bure wa GPU, na kupakia Jupyter Notebooks pale kuzikamilisha moja moja. +Unaweza pia kutumia Google Colab, ambayo huja na msaada wa GPU bure, na kupakia Jupyter Notebooks huko ili kuzitekeleza mmoja mmoja. --- -**Kielezi cha Majumuisho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya awali katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo halali. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na watu inashauriwa. Hatuwajibiki kwa maelewano au ufafanuzi mbaya unaotokana na matumizi ya tafsiri hii. +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index 25b51b02..0bc02ed5 100644 --- a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Miundo iliyofunzwa awali na ujifunzaji wa kuhamisha\n", + "# Modeli zilizofunzwa awali na ujifunzaji wa usafirishaji\n", "\n", - "Kufundisha CNNs kunaweza kuchukua muda mwingi, na data nyingi inahitajika kwa kazi hiyo. Hata hivyo, muda mwingi hutumika kujifunza vichujio vya kiwango cha chini bora ambavyo mtandao unatumia kutoa mifumo kutoka kwa picha. Swali la asili linatokea - je, tunaweza kutumia mtandao wa neva uliyopewa mafunzo kwenye seti moja ya data na kuubadilisha ili kuainisha picha tofauti bila mchakato kamili wa mafunzo?\n", + "Kufunza CNN kunaweza kuchukua muda mwingi, na inahitajika data nyingi kwa kazi hiyo. Hata hivyo, sehemu kubwa ya muda hutumika kujifunza kichujio bora cha ngazi ya chini ambacho mtandao unatumia kutoa mifumo kutoka kwa picha. Swali la asili linatokea - je, tunaweza kutumia mtandao wa neva uliopigwa mafunzo kwenye seti moja ya data kisha kuubadilisha ili kukagua picha tofauti bila kupitia mchakato wa mafunzo kamili?\n", "\n", - "Mbinu hii inaitwa **ujifunzaji wa kuhamisha**, kwa sababu tunahamisha maarifa fulani kutoka kwa mfano mmoja wa mtandao wa neva kwenda mwingine. Katika ujifunzaji wa kuhamisha, kwa kawaida tunaanza na mfano uliyopewa mafunzo awali, ambao umefundishwa kwenye seti kubwa ya data ya picha, kama vile **ImageNet**. Miundo hiyo tayari inaweza kufanya kazi nzuri ya kutoa vipengele tofauti kutoka kwa picha za kawaida, na mara nyingi kujenga kionainishaji juu ya vipengele hivyo vilivyotolewa kunaweza kutoa matokeo mazuri.\n" + "Mbinu hii huitwa **ujifunzaji wa usafirishaji**, kwa sababu tunasafirisha maarifa fulani kutoka kwa mfano mmoja wa mtandao wa neva hadi mwingine. Katika ujifunzaji wa usafirishaji, kawaida huanza na mfano uliofunzwa awali, ambao umefundishwa kwenye seti kubwa ya picha, kama vile **ImageNet**. Modeli hizo tayari zinaweza kufanya kazi nzuri kutoa sifa tofauti kutoka kwa picha za jumla, na katika kesi nyingi kujenga kikagua tu juu ya sifa hizo zilizotolewa kunaweza kutoa matokeo mazuri.\n" ] }, { @@ -29,11 +29,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Seti ya Paka dhidi ya Mbwa\n", + "## Seti ya Takwimu ya Paka dhidi ya Mbwa\n", "\n", - "Katika sehemu hii, tutashughulikia tatizo halisi la kuainisha picha za paka na mbwa. Kwa sababu hii, tutatumia [Seti ya Paka dhidi ya Mbwa ya Kaggle](https://www.kaggle.com/c/dogs-vs-cats), ambayo pia inaweza kupakuliwa [kutoka Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", + "Katika kitengo hiki, tutatatua tatizo halisi la kuainisha picha za paka na mbwa. Kwa sababu hii, tutatumia [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), ambayo pia inaweza kupakuliwa [kutoka Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", "\n", - "Hebu tupakue seti hii ya data na kuitoa kwenye saraka ya `data` (mchakato huu unaweza kuchukua muda!):\n" + "Hebu pakua seti hii ya takwimu na uifanye ichanue kwenye saraka ya `data` (mchakato huu unaweza kuchukua muda!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kwa bahati mbaya, kuna baadhi ya faili za picha zilizoharibika kwenye seti ya data. Tunahitaji kufanya usafishaji wa haraka ili kuangalia faili zilizoharibika. Ili kuepuka kuvuruga mafunzo haya, tumehamisha msimbo wa kuthibitisha seti ya data kwenye moduli.\n" + "Kwa bahati mbaya, kuna baadhi ya faili za picha zilizoharibika katika seti ya data. Tunahitaji kufanya usafi wa haraka ili kuangalia faili zilizoharibika. Ili kutoathiri mafunzo haya, tulibadilisha msimbo wa kuthibitisha seti ya data kuwa moduli.\n" ] }, { @@ -333,13 +333,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Kupakia Dataset\n", + "## Kupakia Dataseti\n", "\n", - "Katika mifano ya awali, tulikuwa tunapakia dataset ambazo zimejengwa ndani ya Keras. Sasa tunakaribia kushughulikia dataset yetu wenyewe, ambayo tunahitaji kupakia kutoka kwenye saraka ya picha.\n", + "Katika mifano iliyopita, tulikuwa tukipakia dataseti zilizojengwa ndani ya Keras. Sasa tuko karibu kushughulikia dataseti yetu wenyewe, ambayo tunahitaji kuipakia kutoka katika saraka ya picha.\n", "\n", - "Katika maisha halisi, ukubwa wa dataset za picha unaweza kuwa mkubwa sana, na mtu hawezi kutegemea data yote kuweza kutoshea kwenye kumbukumbu. Kwa hivyo, dataset mara nyingi huwakilishwa kama **generators** ambazo zinaweza kurudisha data kwa vikundi vidogo vinavyofaa kwa mafunzo.\n", + "Katika maisha halisi, ukubwa wa dataseti za picha unaweza kuwa mkubwa sana, na mtu hawezi kutegemea data zote kuweza kuendana ndani ya kumbukumbu. Kwa hivyo, dataseti mara nyingi huwakilishwa kama **janitors** zinazoweza kurudisha data katika minibatch zinazofaa kwa mafunzo.\n", "\n", - "Ili kushughulikia uainishaji wa picha, Keras inajumuisha kazi maalum `image_dataset_from_directory`, ambayo inaweza kupakia picha kutoka kwenye saraka ndogo zinazowakilisha madarasa tofauti. Kazi hii pia inashughulikia kupunguza ukubwa wa picha, na inaweza pia kugawanya dataset kuwa sehemu za mafunzo na majaribio:\n" + "Kushughulikia uainishaji wa picha, Keras inajumuisha kazi maalum `image_dataset_from_directory`, inayoweza kupakia picha kutoka saraka ndogo zinazolingana na madarasa tofauti. Kazi hii pia inahakikisha kupunguza ukubwa wa picha, na inaweza pia kugawanya dataseti katika sehemu za mafunzo na za mtihani:\n" ] }, { @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ni muhimu kuweka thamani sawa ya `seed` kwa miito yote miwili, kwa sababu inathiri mgawanyo wa picha kati ya seti ya mafunzo na seti ya majaribio.\n", + "Ni muhimu kuweka thamani sawa ya `seed` kwa simu zote mbili, kwa sababu inaathiri mgawanyo wa picha kati ya mafunzo na dataset ya majaribio.\n", "\n", - "Dataset huchukua majina ya madarasa moja kwa moja kutoka kwenye folda, na unaweza kuyapata ikiwa unahitaji kwa kuita:\n" + "Dataset huchukua majina ya darasa moja kwa moja kutoka kwenye saraka, na unaweza kuyapata ikiwa utahitaji kwa kupiga simu:\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Seti za data tulizopata zinaweza kupitishwa moja kwa moja kwenye kazi ya `fit` ili kufundisha modeli. Zinajumuisha picha na lebo zinazohusiana, ambazo zinaweza kurudiwa kwa kutumia ujenzi ufuatao:\n" + "Seti za data tulizozipata zinaweza kutumwa moja kwa moja kwenye kazi ya `fit` kufundisha modeli. Zinajumuisha picha na lebo zinazolingana, ambazo zinaweza kuzungushwa kwa kutumia muundo unaofuata:\n" ] }, { @@ -453,16 +453,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **Kumbuka**: Picha zote kwenye seti ya data zinawakilishwa kama tensors za nukta za kuelea zenye kiwango cha 0-255. Kabla ya kuzipitisha kwenye mtandao wa neva, tunahitaji kupunguza thamani hizo kuwa kiwango cha 0-1. Wakati wa kuchora picha, tunahitaji kufanya vivyo hivyo, au kubadilisha thamani kuwa aina ya `int` (ambayo tunafanya kwenye msimbo hapo juu), ili kuonyesha `matplotlib` kwamba tunataka kuchora picha ya asili isiyopunguzwa.\n" + "> **Kumbuka**: Picha zote katika seti ya data zinawakilishwa kama tensor za pointi nambari za kupepea zenye awamu ya 0-255. Kabla ya kuzipitisha kwenye mtandao wa neva, tunahitaji kupima upya thamani hizo katika awamu ya 0-1. Tunapochora picha, tunahitaji kufanya vivyo hivyo, au kubadilisha thamani kuwa aina ya `int` (ambayo tunafanya katika msimbo hapo juu), ili kuonyesha `matplotlib` kuwa tunataka kuchora picha halisi isiyopimwa upya.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Miundo iliyofunzwa awali\n", + "## Miundo Iliyoandaliwa Awali\n", "\n", - "Kwa kazi nyingi za uainishaji wa picha, mtu anaweza kupata miundo ya mtandao wa neva iliyofunzwa awali. Miundo mingi kati ya hiyo inapatikana ndani ya namespace ya `keras.applications`, na miundo mingine zaidi inaweza kupatikana kwenye Intaneti. Hebu tuone jinsi mfano rahisi wa VGG-16 unavyoweza kupakiwa na kutumika:\n" + "Kwa kazi nyingi za upangaji picha mtu anaweza kupata miundo ya mitandao ya neva iliyopangwa awali. Mengi ya miundo hiyo inapatikana ndani ya nafasi ya majina `keras.applications`, na miundo mingine mingi zaidi inaweza kupatikana mtandaoni. Tuaone jinsi mfano rahisi wa VGG-16 unaweza kupakuliwa na kutumiwa:\n" ] }, { @@ -497,7 +497,17 @@ } ], "source": [ - "vgg = keras.applications.VGG16()\n", + "# SHA-256 of VGG16 weights (with top)\n", + "VGG16_WEIGHTS_SHA256 = '64373286793e3c8b2b4e3219cbf3544bce2f55ab4682710a29f5e7af8f5e4f61'\n", + "\n", + "_weights_path = keras.utils.get_file(\n", + " 'vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " 'https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " file_hash=VGG16_WEIGHTS_SHA256,\n", + " hash_algorithm='sha256',\n", + ")\n", + "\n", + "vgg = keras.applications.VGG16(weights=_weights_path)\n", "inp = keras.applications.vgg16.preprocess_input(x_sample[:1])\n", "\n", "res = vgg(inp)\n", @@ -510,17 +520,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kuna mambo kadhaa muhimu hapa: \n", - "* Kabla ya kupitisha ingizo lolote kwenye mtandao uliokwisha funzwa, lazima liandaliwe kwa njia fulani. Hii inafanyika kwa kuita kazi ya `preprocess_input`, ambayo hupokea kundi la picha na kurudisha toleo lao lililoandaliwa. Kwa mfano wa VGG-16, picha zinasawazishwa, na thamani fulani ya wastani iliyotanguliwa kwa kila njia huondolewa. Hii ni kwa sababu VGG-16 ilifundishwa awali kwa kutumia maandalizi haya. \n", - "* Mtandao wa neva unatumika kwenye kundi la ingizo, na tunapokea kama matokeo kundi la tensors zenye vipengele 1000 vinavyoonyesha uwezekano wa kila darasa. Tunaweza kupata namba ya darasa lenye uwezekano mkubwa zaidi kwa kutumia `argmax` kwenye tensor hii. \n", - "* Matokeo yaliyopatikana ni [namba ya darasa la `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Ili kuelewa matokeo haya, tunaweza pia kutumia kazi ya `decode_predictions`, ambayo inarudisha madarasa ya juu zaidi n pamoja na majina yao. \n" + "Kuna mambo kadhaa muhimu hapa:\n", + "* Kabla ya kupitisha ingizo kwa mtandao wowote uliosoma mafunzo awali lazima uanze kuandaliwa kwa njia fulani. Hii hufanywa kwa kuita kazi inayohusiana ya `preprocess_input`, ambayo hupokea kundi la picha, na kurudisha toleo lililopangwa la picha hizo. Katika kesi ya VGG-16, picha huwekwa sawa (normalize), na thamani ya wastani iliyotangazwa kwa kila njia huondolewa. Hii ni kwa sababu VGG-16 ilifunzwa asili na maandalizi haya ya awali.\n", + "* Mtandao wa neva hutumika kwa kundi la ingizo, na tunapokea matokeo kama kundi la tensors lenye vipengele 1000 vinavyoonyesha uwezekano wa kila darasa. Tunaweza kupata nambari ya darasa inayowezekana zaidi kwa kuita `argmax` kwenye tensor hii.\n", + "* Matokeo yaliyopatikana ni [nambari ya darasa la `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Ili kuelewa matokeo haya vyema, pia tunaweza kutumia kazi ya `decode_predictions`, inayorejesha madarasa ya juu n pamoja na majina yao.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Hebu pia tuone usanifu wa mtandao wa VGG-16:\n" + "Tuwe pia tuone usanifu wa mtandao wa VGG-16:\n" ] }, { @@ -597,9 +607,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Mahesabu ya GPU\n", + "## Maunzi ya GPU\n", "\n", - "Mitandao ya neva ya kina, kama VGG-16 na usanifu mwingine wa kisasa zaidi, inahitaji nguvu kubwa ya kompyuta ili kuendesha. Inaleta maana kutumia kasi ya GPU ikiwa inapatikana. Kwa bahati nzuri, Keras huongeza kasi ya mahesabu kwenye GPU moja kwa moja ikiwa inapatikana. Tunaweza kuangalia kama Tensorflow inaweza kutumia GPU kwa kutumia msimbo ufuatao:\n" + "Mitandao ya neva ya kina, kama vile VGG-16 na miundo mingine ya kisasa inahitaji nguvu kubwa ya kompyuta kuendesha. Inafaa kutumia kuharakisha kwa GPU, ikiwa inapatikana. Kwa bahati nzuri, Keras huongeza kasi kwa automatiska maunzi kwenye GPU ikiwa inapatikana. Tunaweza kuangalia ikiwa Tensorflow inaweza kutumia GPU kwa kutumia msimbo ufuatao:\n" ] }, { @@ -626,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Kuchukua Sifa za VGG\n", "\n", - "Ikiwa tunataka kutumia VGG-16 kuchukua sifa kutoka kwenye picha zetu, tunahitaji mfano wa mtindo bila tabaka za mwisho za uainishaji. Tunaweza kuanzisha mtindo wa VGG-16 bila tabaka za juu kwa kutumia msimbo huu:\n" + "## Kutoa vipengele vya VGG\n", + "\n", + "Ikiwa tunataka kutumia VGG-16 kutoa vipengele kutoka kwa picha zetu, tunahitaji modeli bila tabaka za mwisho za upangaji. Tunaweza kuanzisha modeli ya VGG-16 bila tabaka za juu tukitumia msimbo huu:\n" ] }, { @@ -680,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vipimo vya tensor ya sifa ni 7x7x512, lakini ili kuweza kuiona tulilazimika kuibadilisha kuwa umbo la 2D.\n", + "Kigezo cha tensor ya kipengele ni 7x7x512, lakini kwa ajili ya kuionyesha tulilazimika kuibadilisha kuwa fomu ya 2D.\n", "\n", - "Sasa hebu tujaribu kuona kama sifa hizo zinaweza kutumika kuainisha picha. Hebu tuchukue sehemu fulani ya picha (vikundi vidogo 50, katika hali yetu), na tuhesabu vektori za sifa zao mapema. Tunaweza kutumia API ya **dataset** ya Tensorflow kufanya hivyo. Kazi ya `map` inachukua dataset na kutumia lambda-function iliyotolewa kubadilisha dataset hiyo. Tunatumia utaratibu huu kuunda dataset mpya, `ds_features_train` na `ds_features_test`, ambazo zina sifa zilizotolewa na VGG badala ya picha asili.\n" + "Sasa hebu tajaribu kuona kama vipengele hivyo vinaweza kutumika kuainisha picha. Hebu tuchukue sehemu fulani ya picha kwa mkono (minibatches 50, katika kesi yetu), na kuhesabu awali vekta zao za vipengele. Tunaweza tumia API ya Tensorflow **dataset** kufanya hivyo. Kazi ya `map` inachukua dataset na kutekeleza kipengele cha lambda kilichotolewa kubadilisha dataset hiyo. Tunatumia mfumo huu kuunda datasets mpya, `ds_features_train` na `ds_features_test`, ambazo zina vipengele vilivyotolewa na VGG badala ya picha asilia.\n" ] }, { @@ -712,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tulitumia ujenzi `.take(50)` kupunguza ukubwa wa seti ya data, ili kuharakisha maonyesho yetu. Bila shaka unaweza kufanya jaribio hili kwenye seti ya data kamili.\n", + "Tuli tumia ujenzi `.take(50)` kupunguza ukubwa wa seti ya data, ili kuharakisha maonyesho yetu. Bila shaka unaweza kufanya jaribio hili kwenye seti kamili ya data.\n", "\n", - "Sasa kwa kuwa tuna seti ya data yenye vipengele vilivyotolewa, tunaweza kufundisha kisainia rahisi cha mnene ili kutofautisha kati ya paka na mbwa. Mtandao huu utachukua vector ya vipengele yenye umbo (7,7,512), na kutoa matokeo moja yanayowakilisha aidha mbwa au paka. Kwa sababu ni uainishaji wa binary, tunatumia `sigmoid` kama kazi ya uanzishaji na `binary_crossentropy` kama hasara.\n" + "Sasa tuna seti ya data yenye vipengele vilivyotolewa, tunaweza kufundisha mchuja rahisi mnyoofu kutofautisha kati ya paka na mbwa. Mtandao huu utachukua vekta ya kipengele yenye umbo (7,7,512), na kutoa matokeo moja ambayo yanaendana na mbwa au paka. Kwa kuwa ni uainishaji wa binary, tunatumia kipengele cha uamsho `sigmoid` na hasara ya `binary_crossentropy`.\n" ] }, { @@ -743,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Matokeo ni mazuri, tunaweza kutofautisha kati ya paka na mbwa kwa uwezekano wa karibu 95%! Hata hivyo, tumepima mbinu hii tu kwenye sehemu ndogo ya picha zote, kwa sababu uchimbaji wa sifa kwa mikono unaonekana kuchukua muda mwingi.\n", + "Matokeo ni mazuri, tunaweza kutofautisha kati ya paka na mbwa kwa uwezekano wa karibu 95%! Hata hivyo, tumetumia mbinu hii tu kwenye sehemu ndogo ya picha zote, kwa sababu uchimbaji wa sifa kwa mikono unaonekana kuchukua muda mwingi.\n", "\n", - "## Kujifunza kwa uhamisho kwa kutumia mtandao mmoja wa VGG\n", + "## Kujifunza kwa uhamishaji kwa kutumia mtandao mmoja wa VGG\n", "\n", - "Tunaweza pia kuepuka uchimbaji wa sifa kwa mikono kwa kutumia mtandao wa awali wa VGG-16 kama mzima wakati wa mafunzo, kwa kuongeza kichimbaji cha sifa kwenye mtandao wetu kama safu ya kwanza.\n", + "Pia tunaweza kuepuka kuhesabu sifa kwa mikono kwa kutumia mtandao wa asili wa VGG-16 kwa ujumla wakati wa mafunzo, kwa kuongeza kichimbaji sifa kwenye mtandao wetu kama tabaka la kwanza.\n", "\n", - "Uzuri wa usanifu wa Keras ni kwamba mfano wa VGG-16 ambao tumeufafanua hapo juu unaweza pia kutumika kama safu katika mtandao mwingine wa neva! Tunachohitaji ni kujenga mtandao wenye kichanganuzi mnene juu yake, kisha kufundisha mtandao mzima kwa kutumia kurudi nyuma kwa kueneza.\n" + "Uzuri wa usanifu wa Keras ni kwamba mfano wa VGG-16 tulioutaja hapo juu pia unaweza kutumika kama tabaka katika mtandao mwingine wa neva! Tunahitaji tu kuunda mtandao wenye kichanganuzi mnene juu yake, kisha kufundisha mtandao mzima kwa kutumia ueneaji wa nyuma.\n" ] }, { @@ -793,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mtindo huu unaonekana kama mtandao wa uainishaji wa mwisho hadi mwisho, ambao unachukua picha na kurudisha darasa. Hata hivyo, jambo gumu ni kwamba tunataka VGG16 ifanye kazi kama kichanganuzi cha sifa, na si kufundishwa upya. Kwa hivyo, tunahitaji **kufungia uzito wa kichanganuzi cha sifa za convolutional**. Tunaweza kufikia safu ya kwanza ya mtandao kwa kuita `model.layers[0]`, na tunachohitaji ni kuweka mali ya `trainable` kuwa `False`.\n", + "Mfumo huu unaonekana kama mtandao wa uainishaji wa mwisho-mwisho, unaochukua picha na kurudisha darasa. Hata hivyo, kitu kigumu ni kwamba tunataka VGG16 itumike kama kivunja sifa, na isifundishwe upya. Kwa hivyo, tunahitaji **kukandamiza uzito wa kivunja sifa cha convolutional**. Tunaweza kufikia tabaka la kwanza la mtandao kwa kuita `model.layers[0]`, na tunahitaji tu kuweka mali ya `trainable` kuwa `False`.\n", "\n", - "> **Note**: Kufungia uzito wa kichanganuzi cha sifa ni muhimu, kwa sababu vinginevyo safu ya uainishaji isiyofundishwa inaweza kuharibu uzito wa awali wa kichanganuzi cha convolutional kilichofundishwa awali.\n", + "> **Kumbuka**: Kukandamiza uzito wa kivunja sifa ni muhimu, kwa sababu vinginevyo tabaka la klasifaya lisilofundishwa linaweza kuharibu uzito wa awali uliowekwa wa kivunja cha convolutional.\n", "\n", - "Unaweza kugundua kwamba ingawa jumla ya idadi ya vigezo katika mtandao wetu ni takriban milioni 15, tunafundisha tu vigezo 25,000. Vigezo vingine vyote vya vichujio vya convolutional vya kiwango cha juu vimefundishwa awali. Hii ni nzuri, kwa sababu tunaweza kurekebisha idadi ndogo ya vigezo kwa kutumia idadi ndogo ya mifano.\n", + "Unaweza kuona kwamba wakati jumla ya vigezo katika mtandao wetu ni takriban milioni 15, tunafunza vigezo 25k tu. Vigezo vingine vyote vya kichujio cha convolutional cha ngazi ya juu ni vilivyofundishwa awali. Hilo ni zuri, kwa sababu tunaweza kufanya marekebisho madogo kwa idadi ndogo ya vigezo kwa idadi ndogo ya mifano.\n", "\n", - "Sasa tutafundisha mtandao wetu na kuona jinsi tunavyoweza kufanikisha. Tarajia muda mrefu wa utekelezaji, na usijali ikiwa utekelezaji utaonekana kama umesimama kwa muda fulani.\n" + "Sasa tutafunza mtandao wetu na kuona jinsi tunavyoweza kufikia matokeo mazuri. Tarajia muda mrefu wa utekelezaji, na usijali kama utekelezaji utaonekana kusimama kwa muda.\n" ] }, { @@ -824,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Inaonekana tumepata kiondoa tofauti cha paka dhidi ya mbwa ambacho ni sahihi kwa kiasi kikubwa!\n", + "Inaonekana tumepata kisagaambazo sahihi kwa watu wa paka dhidi ya mbwa! \n", "\n", - "## Kuhifadhi na Kupakia Modeli\n", + "## Kuhifadhi na Kupakua Mfano\n", "\n", - "Baada ya kufundisha modeli, tunaweza kuhifadhi usanifu wa modeli na uzito uliofundishwa kwenye faili kwa matumizi ya baadaye:\n" + "Mara tu tunapomaliza kufundisha mfano, tunaweza kuhifadhi usanifu wa mfano na uzito uliopimwa kwenye faili kwa matumizi ya baadaye:\n" ] }, { @@ -852,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tunaweza kisha kupakia modeli kutoka kwenye faili wakati wowote. Unaweza kuona kuwa ni muhimu iwapo jaribio linalofuata litaharibu modeli - hutahitaji kuanza tena kutoka mwanzo.\n" + "Tunaweza kisha kupakia mfano kutoka kwa faili wakati wowote. Unaweza kuupata kuwa muhimu ikiwa jaribio lijalo litaangamiza mfano - hutakuwa na haja ya kuanza tena kabisa kutoka mwanzo.\n" ] }, { @@ -868,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Kurekebisha Kujifunza kwa Uhamisho\n", + "## Kufinyaza upendeleo wa kujifunza kwa uhamisho\n", "\n", - "Katika sehemu iliyopita, tulifundisha safu ya mwisho ya uainishaji ili kuainisha picha katika seti yetu ya data. Hata hivyo, hatukufundisha tena kipengele cha uchimbaji, na modeli yetu ilitegemea vipengele ambavyo modeli ilijifunza kutoka kwa data ya ImageNet. Ikiwa vitu vyako vinaonekana tofauti na picha za kawaida za ImageNet, mchanganyiko huu wa vipengele huenda usifanye kazi vizuri. Kwa hivyo, inafaa kuanza kufundisha tabaka za convolutional pia.\n", + "Katika sehemu iliyopita, tumejifunza kifuniko cha mwisho cha mchujo wa picha katika seti yetu ya data. Hata hivyo, hatukuponda tena kichujio cha sifa, na mfano wetu ulitegemea sifa ambazo mfano umejifunza kutoka kwa data ya ImageNet. Ikiwa vitu vyako vinaonekana tofauti na picha za kawaida za ImageNet, mchanganyiko huu wa sifa unaweza usifanye kazi vizuri kabisa. Hivyo inafaika kuanza kufundisha tabaka za convolution pia.\n", "\n", - "Ili kufanya hivyo, tunaweza kufungua vigezo vya kichujio cha convolutional ambavyo tulivifungia awali.\n", + "Ili kufanya hivyo, tunaweza kufungua tena vigezo vya kichuja cha convolution ambavyo tulikuwa tumefunga awali.\n", "\n", - "> **Note:** Ni muhimu kufungia vigezo kwanza na kufanya mazoezi kwa mizunguko kadhaa ili kuimarisha uzito katika safu ya uainishaji. Ikiwa utaanza mara moja kufundisha mtandao wa mwisho hadi mwisho na vigezo vilivyofunguliwa, makosa makubwa yanaweza kuharibu uzito uliowekwa awali katika tabaka za convolutional.\n", + "> **Kumbuka:** Ni muhimu kwamba ufungie vigezo kwanza na ufanye mizunguko kadhaa ya mafunzo ili kuimarisha uzito katika tabaka la uainishaji. Ikiwa utaanza mara moja kufundisha mtandao mzima ukiwa na vigezo visivyofunguliwa, makosa makubwa yanaweza kuharibu uzito uliojifunzwa awali katika tabaka za convolution.\n", "\n", - "Modeli yetu ya convolutional VGG-16 iko ndani ya safu ya kwanza, na yenyewe ina tabaka nyingi. Tunaweza kuangalia muundo wake:\n" + "Mfano wetu wa convolutional VGG-16 uko ndani ya tabaka la kwanza, na una tabaka nyingi ndani yake. Tunaweza kuangalia muundo wake:\n" ] }, { @@ -944,7 +955,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Tunaweza kufungua vifuniko vyote vya msingi wa convolutional:\n" + ] }, { "cell_type": "code", @@ -959,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Hata hivyo, kufungua zote kwa wakati mmoja si wazo bora. Tunaweza kwanza kufungua tabaka chache za mwisho za convolutions, kwa sababu zina mifumo ya juu inayohusiana na picha zetu. Kwa mfano, kuanza, tunaweza kufungia tabaka zote isipokuwa 4 za mwisho:\n" + "Hata hivyo, kuondoa kufungia zote kwa wakati mmoja si wazo bora. Tunaweza kwanza kuondoa kufungia tabaka za mwisho chache tu za convolutions, kwa sababu zinashikilia mifumo ya ngazi ya juu ambayo ni muhimu kwa picha zetu. Kwa mfano, kuanzia, tunaweza kufungia tabaka zote isipokuwa 4 za mwisho: \n" ] }, { @@ -998,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Angalia kwamba idadi ya vigezo vinavyoweza kufundishwa imeongezeka sana, lakini bado ni karibu 50% ya vigezo vyote.\n", + "Angalia kuwa idadi ya vigezo vinavyoweza kufunzwa imeongezeka kwa kiasi kikubwa, lakini bado ni karibu 50% ya vigezo vyote.\n", "\n", - "Baada ya kufungua tabaka zilizogandishwa, tunaweza kufanya mazoezi ya ziada kwa mizunguko michache zaidi (katika mfano wetu, tutafanya mzunguko mmoja tu). Unaweza pia kuchagua kiwango cha chini cha kujifunza, ili kupunguza athari kwa uzito uliokwisha funzwa awali. Hata hivyo, hata kwa kiwango cha chini cha kujifunza, unaweza kutarajia usahihi kushuka mwanzoni mwa mafunzo, hadi hatimaye kufikia kiwango kidogo cha juu kuliko katika hali ya uzito uliowekwa.\n", + "Baada ya kufungua kwa kuzuia, tunaweza kufanya mzunguko kadhaa zaidi wa mafunzo (katika mfano wetu, tutafanya mmoja tu). Pia unaweza kuchagua viwango vya ujifunzaji vya chini, ili kupunguza athari kwenye uzito uliopangwa awali. Hata hivyo, hata kwa kiwango cha ujifunzaji cha chini, unaweza kutarajia usahihi kupungua mwanzoni mwa mafunzo, hadi hatimaye kufikia kiwango kidogo cha juu kuliko katika kesi ya uzito wa kudumu.\n", "\n", - "> **Note:** Mafunzo haya huchukua muda mrefu zaidi, kwa sababu tunahitaji kueneza miteremko kurudi kupitia tabaka nyingi za mtandao!\n" + "> **Kumbuka:** Mafunzo haya hufanyika kwa taratibu zaidi, kwa sababu tunahitaji kusambaza gradi nyuma kupitia tabaka nyingi za mtandao!\n" ] }, { @@ -1026,18 +1039,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tuna uwezekano mkubwa wa kufikia usahihi wa juu zaidi wa mafunzo, kwa sababu tunatumia mtandao wenye nguvu zaidi na vigezo vingi, lakini usahihi wa uthibitishaji hautaongezeka sana.\n", + "Tunaweza kufanikisha usahihi wa mafunzo zaidi, kwa sababu tunatumia mtandao wenye nguvu zaidi na vigezo vingi, lakini usahihi wa uhakiki hautoongezeka sana.\n", "\n", - "Usisite kufungua tabaka chache zaidi za mtandao na kuendelea kufundisha, ili kuona kama unaweza kufikia usahihi wa juu zaidi!\n" + "Huna haja ya hofu kufungua safu chache zaidi za mtandao na kufundisha zaidi, ili kuona kama unaweza kupata usahihi mkubwa zaidi!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Miundo mingine ya maono ya kompyuta\n", + "## Mifano mingine ya kuona kwa kompyuta\n", "\n", - "VGG-16 ni mojawapo ya usanifu rahisi wa maono ya kompyuta. Keras inatoa mitandao mingine mingi iliyokwisha funzwa. Miongoni mwa mitandao inayotumika mara kwa mara ni usanifu wa **ResNet**, ulioendelezwa na Microsoft, na **Inception** kutoka Google. Kwa mfano, hebu tuchunguze usanifu wa modeli rahisi ya ResNet-50 (ResNet ni familia ya modeli zenye kina tofauti, unaweza kujaribu kufanya majaribio na ResNet-152 ikiwa unataka kuona jinsi modeli yenye kina kirefu inavyoonekana):\n" + "VGG-16 ni moja ya usanifu rahisi zaidi wa kuona kwa kompyuta. Keras inatoa mitandao mingi zaidi iliyofunzwa awali. Zinazotumika zaidi kati ya hizo ni usanifu wa **ResNet**, ulioandaliwa na Microsoft, na **Inception** na Google. Kwa mfano, hebu tuchunguze usanifu wa mfano rahisi wa ResNet-50 (ResNet ni familia ya mifano yenye kina tofauti, unaweza kujaribu kujaribu ResNet-152 ikiwa unataka kuona jinsi mfano wenye kina kina kweli unavyoonekana): \n" ] }, { @@ -1439,11 +1452,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kama unavyoona, mfano huu una vipengele vile vile vya msingi: tabaka za convolutional, tabaka za pooling, na tabaka ya mwisho ya classifier yenye msongamano. Tunaweza kutumia mfano huu kwa njia ile ile tulivyokuwa tunatumia VGG-16 kwa kujifunza kwa uhamisho. Unaweza kujaribu kufanya majaribio na msimbo hapo juu, ukitumia mifano tofauti ya ResNet kama mfano wa msingi, na kuona jinsi usahihi unavyobadilika.\n", + "Kama unavyoona, modeli ina vifungo vya ujenzi vinavyofahamika sawa: safu za kuunganisha (convolutional layers), safu za kuchukua sampuli (pooling layers) na mchakato wa mwisho wa mshalishaji mnene (dense classifier). Tunaweza kutumia modeli hii kwa njia moja tu kama tulivyokuwa tunatumia VGG-16 kwa kujifunza kwa uhamishaji (transfer learning). Unaweza kujaribu kufanya majaribio na msimbo hapo juu, ukitumia mifano tofauti ya ResNet kama modeli msingi, na kuona jinsi usahihi unavyobadilika.\n", "\n", - "## Uwekaji Kawaida wa Kundi\n", + "## Urejeshaji wa Kiwango cha Kawaida (Batch Normalization)\n", "\n", - "Mtandao huu una aina nyingine ya tabaka: **Uwekaji Kawaida wa Kundi**. Wazo la uwekaji kawaida wa kundi ni kuleta thamani zinazopita kwenye mtandao wa neva katika kiwango sahihi. Kwa kawaida, mitandao ya neva hufanya kazi vizuri zaidi wakati thamani zote ziko katika kiwango cha [-1,1] au [0,1], na ndiyo sababu tunapima/kawaida data yetu ya ingizo ipasavyo. Hata hivyo, wakati wa mafunzo ya mtandao wa kina, inaweza kutokea kwamba thamani zinatoka nje ya kiwango hiki kwa kiasi kikubwa, jambo ambalo linafanya mafunzo kuwa na changamoto. Tabaka ya uwekaji kawaida wa kundi huhesabu wastani na upotofu wa kawaida kwa thamani zote za kundi la sasa, na kuzitumia kuweka kawaida ishara kabla ya kuipitisha kupitia tabaka ya mtandao wa neva. Hii inaboresha kwa kiasi kikubwa uthabiti wa mitandao ya kina.\n" + "Mtandao huu una aina nyingine ya safu: **Urejeshaji wa Kiwango cha Kawaida (Batch Normalization)**. Wazo la urejeshaji wa kiwango cha kawaida ni kuleta thamani zinazopita kwenye mtandao wa neva katika vipindi vinavyofaa. Kawaida mitandao ya neva hufanya kazi vyema wakati thamani zote ziko katika anuwai ya [-1,1] au [0,1], na hiyo ndiyo sababu tunapima/kurejesha data yetu ya ingizo ipasavyo. Hata hivyo, wakati wa mafunzo ya mtandao mzito, inaweza kutokea thamani zikashuka sana nje ya anuwai hii, jambo ambalo hufanya mafunzo kuwa magumu. Safu ya urejeshaji wa kiwango cha kawaida huhesabu wastani na kiwango cha kawaida kwa thamani zote za kundi dogo la sasa, na kuzitumia kurejesha ishara kabla ya kuipitisha kupitia safu ya mtandao wa neva. Hii huongeza sana utulivu wa mitandao mizito.\n" ] }, { @@ -1452,16 +1465,16 @@ "source": [ "## Muhimu\n", "\n", - "Kwa kutumia kujifunza kwa uhamisho, tuliweza kuunda haraka kiondoaji kwa kazi yetu ya kuainisha vitu maalum, na kufanikisha usahihi wa hali ya juu. Hata hivyo, mfano huu haukuwa wa haki kabisa, kwa sababu mtandao wa awali wa VGG-16 ulifundishwa kutambua paka na mbwa, na hivyo tulikuwa tunatumia tena mifumo mingi ambayo tayari ilikuwepo kwenye mtandao. Unaweza kutarajia usahihi wa chini zaidi kwa vitu vya kipekee vya kikoa maalum, kama maelezo ya mstari wa uzalishaji kwenye kiwanda, au majani tofauti ya miti.\n", + "Kutumia ujifunzaji wa kuhamisha, tuliweza haraka kuunda mchanganuzi wa aina kwa kazi yetu maalum ya upangaji wa vitu, na kupata usahihi wa juu. Hata hivyo, mfano huu haukuwa wa haki kabisa, kwa sababu mtandao wa asili wa VGG-16 ulikuwa umefundishwa awali kutambua paka na mbwa, na hivyo basi tulikuwa tunatumia tena mifumo mingi iliyokuwepo tayari kwenye mtandao. Unaweza kutarajia usahihi mdogo kwa vitu vya aina maalum zaidi, kama vile maelezo kwenye mstari wa uzalishaji katika kiwanda, au majani tofauti ya mti.\n", "\n", - "Unaweza kuona kwamba kazi ngumu zaidi tunazotatua sasa zinahitaji nguvu kubwa ya kompyuta, na haziwezi kutatuliwa kwa urahisi kwenye CPU. Katika sehemu inayofuata, tutajaribu kutumia utekelezaji mwepesi zaidi ili kufundisha modeli hiyo hiyo kwa kutumia rasilimali za kompyuta za chini, ambayo matokeo yake ni usahihi kidogo tu wa chini.\n" + "Unaweza kuona kwamba kazi ngumu zaidi tunazozitatua sasa zinahitaji nguvu zaidi za kompyuta, na haziwezi kutatuliwa kwa urahisi kwenye CPU. Katika sehemu inayofuata, tuta jaribu kutumia utekelezaji mwepesi zaidi kufundisha mfano uleule kwa kutumia rasilimali za chini za kompyuta, jambo ambalo hutoa usahihi kidogo tu wa chini. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Kanusho**: \nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutokuelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.\n" + "---\n\n\n**Kionyozo**:\nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii.\n\n" ] } ], @@ -1482,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-29T13:39:14+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "sw" } }, "nbformat": 4, diff --git a/translations/sw/lessons/5-NLP/README.md b/translations/sw/lessons/5-NLP/README.md index a2e828da..0594327f 100644 --- a/translations/sw/lessons/5-NLP/README.md +++ b/translations/sw/lessons/5-NLP/README.md @@ -1,77 +1,73 @@ -# Usindikaji wa Lugha Asilia +# Uchanganuzi wa Lugha Asilia ![Muhtasari wa kazi za NLP katika mchoro](../../../../translated_images/sw/ai-nlp.b22dcb8ca4707cea.webp) -Katika sehemu hii, tutazingatia kutumia Mitandao ya Neural kushughulikia kazi zinazohusiana na **Usindikaji wa Lugha Asilia (NLP)**. Kuna matatizo mengi ya NLP ambayo tunataka kompyuta iweze kuyatatua: +Katika sehemu hii, tutazingatia kutumia Mitandao ya Neva kushughulikia kazi zinazohusiana na **Uchambuzi wa Lugha Asilia (NLP)**. Kuna matatizo mengi ya NLP tunayopenda kompyuta ziweze kuyatatua: -* **Uainishaji wa maandishi** ni tatizo la kawaida la uainishaji linalohusiana na mfuatano wa maandishi. Mifano ni pamoja na kuainisha barua pepe kama spam au si-spam, au kuainisha makala kama michezo, biashara, siasa, n.k. Pia, tunapounda roboti za mazungumzo, mara nyingi tunahitaji kuelewa kile mtumiaji alitaka kusema -- katika kesi hii tunashughulika na **uainishaji wa nia**. Mara nyingi, katika uainishaji wa nia tunahitaji kushughulikia kategoria nyingi. +* **Uainishaji wa maandishi** ni tatizo la kawaida la uainishaji linalohusiana na mfululizo wa maandishi. Mifano ni pamoja na kuainisha barua pepe kama taka au si taka, au kupangilia makala kama michezo, biashara, siasa, n.k. Pia, wakati wa kuendeleza roboti za mazungumzo, mara nyingi tunahitaji kuelewa kile mtumiaji alitaka kusema -- katika kesi hii tunashughulika na **uainishaji wa nia**. Mara nyingi, katika uainishaji wa nia tunahitaji kushughulikia makundi mengi. +* **Tathmini ya hisia** ni tatizo la kawaida la murejesho, ambapo tunahitaji kutoa nambari (hisia) inayolingana na jinsi maana ya sentensi ni chanya/negativi. Toleo la hali ya juu la tathmini ya hisia ni **tathmini ya hisia kwa misingi ya vipengele** (ABSA), ambapo tunahusisha hisia si kwa sentensi nzima, bali kwa sehemu tofauti za sentensi (vipengele), kwa mfano, *Katika mgahawa huu, nilipenda chakula, lakini mazingira yalikuwa mabaya*. +* **Utambuzi wa Vitu Vilivyopewa Majina** (NER) unahusu tatizo la kutoa vitu fulani kutoka kwa maandishi. Kwa mfano, tunaweza kuhitaji kuelewa kwamba katika kifungu *Nahitaji kuruka kwenda Paris kesho* neno *kesho* linahusu TAREHE, na *Paris* ni MAHALI. +* **Utoaji wa maneno muhimu** ni sawa na NER, lakini tunahitaji kutoa maneno muhimu kwa maana ya sentensi kwa njia ya moja kwa moja, bila mafunzo ya awali kwa aina maalum za vitu. +* **Kukusanya maandishi** kunaweza kuwa muhimu tunapotaka kuunganisha sentensi zinazofanana pamoja, kwa mfano, maombi yanayofanana katika mazungumzo ya msaada wa kiufundi. +* **Kujibu maswali** kunahusu uwezo wa mfano kujibu swali maalum. Mfano hupokea kipande cha maandishi na swali kama ingizo, na unahitaji kutoa sehemu katika maandishi ambapo jibu la swali linapatikana (au, wakati mwingine, kuzalisha maandishi ya jibu). +* **Uundaji wa maandishi** ni uwezo wa mfano kuzalisha maandishi mapya. Inaweza kuzingatiwa kama kazi ya uainishaji inayotabiri herufi/neno lijalo kulingana na *mwanzo wa maandishi*. Mifano ya hali ya juu ya uzalishaji wa maandishi, kama GPT-3, inaweza kutatua kazi nyingine za NLP kama uainishaji kwa kutumia mbinu inayoitwa [programu ya kuwezesha](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) au [ubunifu wa kuwezesha](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) +* **Kufupisha maandishi** ni mbinu tunapotaka kompyuta "ikusome" maandishi marefu na kuyafupisha kwa sentensi chache. +* **Tafsiri ya mashine** inaweza kuzingatiwa kama muunganiko wa kuelewa maandishi katika lugha moja, na kuzalisha maandishi katika nyingine. -* **Uchambuzi wa hisia** ni tatizo la kawaida la regression, ambapo tunahitaji kuhusisha namba (hisia) inayolingana na jinsi maana ya sentensi ilivyo chanya/mbaya. Toleo la juu zaidi la uchambuzi wa hisia ni **uchambuzi wa hisia kulingana na vipengele** (ABSA), ambapo tunahusisha hisia si kwa sentensi nzima, bali kwa sehemu zake tofauti (vipengele), mfano: *Katika mgahawa huu, nilipenda chakula, lakini mazingira yalikuwa mabaya*. +Hapo awali, kazi nyingi za NLP zilitatuliwa kwa kutumia mbinu za jadi kama sarufi. Kwa mfano, katika tafsiri ya mashine, wachambuzi walitumiwa kubadilisha sentensi ya awali kuwa mti wa sarufi, kisha miundo ya hali ya juu ya semantiki ilitolewa kuonyesha maana ya sentensi, na kutegemea maana hii na sarufi ya lugha lengwa matokeo yalizalishwa. Siku hizi, kazi nyingi za NLP hutatuliwa kwa ufanisi zaidi kwa kutumia mitandao ya neva. -* **Utambuzi wa Viumbe Vilivyotajwa** (NER) inahusu tatizo la kutoa viumbe fulani kutoka kwa maandishi. Kwa mfano, tunaweza kuhitaji kuelewa kwamba katika kifungu *Nahitaji kuruka kwenda Paris kesho* neno *kesho* linahusu TAREHE, na *Paris* ni MAHALI. +> Mbinu nyingi za jadi za NLP zimetekelezwa katika maktaba ya Python iitwayo [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Kuna [Kitabu cha NLTK](https://www.nltk.org/book/) kizuri kinachopatikana mtandaoni kinachoelezea jinsi kazi tofauti za NLP zinavyoweza kutatuliwa kwa kutumia NLTK. -* **Uchimbaji wa maneno muhimu** ni sawa na NER, lakini tunahitaji kutoa maneno muhimu kwa maana ya sentensi moja kwa moja, bila mafunzo ya awali kwa aina maalum za viumbe. +Katika kozi yetu, tutazingatia zaidi matumizi ya Mitandao ya Neva kwa NLP, na tutatumia NLTK pale itakapohitajika. -* **Kugawanya maandishi katika makundi** kunaweza kuwa muhimu tunapotaka kuunganisha sentensi zinazofanana, kwa mfano, maombi yanayofanana katika mazungumzo ya msaada wa kiufundi. - -* **Kujibu maswali** inahusu uwezo wa mfano kujibu swali maalum. Mfano hupokea kifungu cha maandishi na swali kama pembejeo, na inahitaji kutoa sehemu ya maandishi ambapo jibu la swali linapatikana (au, wakati mwingine, kutengeneza maandishi ya jibu). - -* **Uzalishaji wa maandishi** ni uwezo wa mfano kutengeneza maandishi mapya. Inaweza kuchukuliwa kama kazi ya uainishaji inayotabiri herufi/maneno yanayofuata kulingana na *msukumo wa maandishi*. Mifano ya juu ya uzalishaji wa maandishi, kama vile GPT-3, inaweza kutatua kazi nyingine za NLP kama uainishaji kwa kutumia mbinu inayoitwa [programu ya msukumo](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) au [uhandisi wa msukumo](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). - -* **Muhtasari wa maandishi** ni mbinu tunapotaka kompyuta "kusoma" maandishi marefu na kuyafupisha kwa sentensi chache. - -* **Tafsiri ya mashine** inaweza kuonekana kama mchanganyiko wa kuelewa maandishi kwa lugha moja, na uzalishaji wa maandishi kwa lugha nyingine. - -Hapo awali, kazi nyingi za NLP zilitatuliwa kwa kutumia mbinu za jadi kama sarufi. Kwa mfano, katika tafsiri ya mashine, vichanganuzi vilitumika kubadilisha sentensi ya awali kuwa mti wa sintaksia, kisha miundo ya juu ya kisemantiki ilitolewa ili kuwakilisha maana ya sentensi, na kulingana na maana hii na sarufi ya lugha lengwa, matokeo yalitengenezwa. Siku hizi, kazi nyingi za NLP zinatatuliwa kwa ufanisi zaidi kwa kutumia mitandao ya neural. - -> Mbinu nyingi za jadi za NLP zinatekelezwa katika maktaba ya Python inayoitwa [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Kuna [Kitabu cha NLTK](https://www.nltk.org/book/) kinachopatikana mtandaoni ambacho kinaelezea jinsi kazi tofauti za NLP zinaweza kutatuliwa kwa kutumia NLTK. - -Katika kozi yetu, tutazingatia zaidi kutumia Mitandao ya Neural kwa NLP, na tutatumia NLTK pale inapohitajika. - -Tayari tumejifunza kuhusu kutumia mitandao ya neural kushughulikia data ya jedwali na picha. Tofauti kuu kati ya aina hizo za data na maandishi ni kwamba maandishi ni mfuatano wa urefu unaobadilika, wakati saizi ya pembejeo katika picha inajulikana mapema. Wakati mitandao ya convolutional inaweza kutoa mifumo kutoka kwa data ya pembejeo, mifumo katika maandishi ni changamano zaidi. Kwa mfano, tunaweza kuwa na kukanusha kunakotenganishwa na somo kwa maneno mengi (mfano: *Sipendi machungwa*, dhidi ya *Sipendi yale machungwa makubwa yenye rangi nzuri na ladha*), na hiyo bado inapaswa kufasiriwa kama muundo mmoja. Kwa hivyo, ili kushughulikia lugha tunahitaji kuanzisha aina mpya za mitandao ya neural, kama vile *mitandao ya kurudiarudia* na *transformers*. +Tayari tumekuwa tukijifunza kuhusu matumizi ya mitandao ya neva kushughulikia data za jedwali na picha. Tofauti kuu kati ya aina hizi za data na maandishi ni kwamba maandishi ni mfuatano wa urefu unaobadilika, wakati ukubwa wa ingizo katika picha unajulikana mapema. Wakati mitandao ya convolutional inaweza kutoa mifumo kutoka kwa data ya ingizo, mifumo katika maandishi ni ngumu zaidi. Kwa mfano, tunaweza kuwa na kinyume kilichotengwa na somo kwa maneno mengi (mfano *Sipendi machungwa*, dhidi ya *Sipendi machungwa makubwa yenye rangi tofauti na ladha*), na hiyo bado inapaswa kufasiriwa kama mfumo mmoja. Hivyo, kushughulikia lugha tunahitaji kuanzisha aina mpya za mitandao ya neva, kama *mitandao inayorudia* na *transformers*. ## Sakinisha Maktaba -Ikiwa unatumia usakinishaji wa Python wa ndani kuendesha kozi hii, unaweza kuhitaji kusakinisha maktaba zote zinazohitajika kwa NLP kwa kutumia amri zifuatazo: +Ikiwa unatumia usakinishaji wa Python wa eneo lako kukamilisha kozi hii, unaweza kuhitaji kusakinisha maktaba zote zinazohitajika kwa NLP kwa kutumia amri zifuatazo: -**Kwa PyTorch** +**Kwa PyTorch** ```bash -pip install -r requirements-torch.txt -``` -**Kwa TensorFlow** +pip install -r requirements-pytorch.txt +``` +**Kwa TensorFlow** ```bash pip install -r requirements-tf.txt -``` +``` -> Unaweza kujaribu NLP na TensorFlow kwenye [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) +> Unaweza kujaribu NLP kwa TensorFlow kwenye [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) -## Onyo Kuhusu GPU +## Onyo la GPU -Katika sehemu hii, katika baadhi ya mifano tutakuwa tukifundisha mifano mikubwa. -* **Tumia Kompyuta Yenye GPU**: Inashauriwa kuendesha daftari zako kwenye kompyuta yenye GPU ili kupunguza muda wa kusubiri wakati wa kufanya kazi na mifano mikubwa. -* **Vikwazo vya Kumbukumbu ya GPU**: Kuendesha kwenye GPU kunaweza kusababisha hali ambapo kumbukumbu ya GPU inajaa, hasa wakati wa kufundisha mifano mikubwa. -* **Matumizi ya Kumbukumbu ya GPU**: Kiasi cha kumbukumbu ya GPU kinachotumika wakati wa mafunzo kinategemea mambo mbalimbali, ikiwa ni pamoja na ukubwa wa minibatch. -* **Punguza Ukubwa wa Minibatch**: Ikiwa unakutana na matatizo ya kumbukumbu ya GPU, fikiria kupunguza ukubwa wa minibatch katika msimbo wako kama suluhisho linalowezekana. -* **Utoaji wa Kumbukumbu ya GPU kwa TensorFlow**: Matoleo ya zamani ya TensorFlow yanaweza yasitoe kumbukumbu ya GPU ipasavyo wakati wa kufundisha mifano mingi ndani ya kernel moja ya Python. Ili kudhibiti matumizi ya kumbukumbu ya GPU kwa ufanisi, unaweza kusanidi TensorFlow kugawa kumbukumbu ya GPU tu inapohitajika. -* **Ujumuishaji wa Msimbo**: Ili kuweka TensorFlow kugawa kumbukumbu ya GPU tu inapohitajika, jumuisha msimbo ufuatao katika daftari zako: +Katika sehemu hii, katika baadhi ya mifano tutakuwa tukifundisha mifano mikubwa. +* **Tumia Kompyuta Yenye GPU**: Inashauriwa kuendesha daftari zako za kumbukumbu kwenye kompyuta yenye GPU ili kupunguza muda wa kusubiri wakati wa kufanya kazi na mifano mikubwa. +* **Mikwamo ya Kumbukumbu ya GPU**: Kuendesha kwenye GPU kunaweza kusababisha hali ambapo kumbukumbu ya GPU inakamilika, hasa wakati wa mafunzo ya mifano mikubwa. +* **Matumizi ya Kumbukumbu ya GPU**: Kiasi cha kumbukumbu ya GPU kinachotumiwa wakati wa mafunzo kinategemea mambo mbalimbali, ikiwa ni pamoja na ukubwa wa minibatch. +* **Punguza Ukubwa wa Minibatch**: Ikiwa unakutana na matatizo ya kumbukumbu ya GPU, fikiria kupunguza ukubwa wa minibatch katika msimbo wako kama suluhisho linalowezekana. +* **Uachishaji wa Kumbukumbu ya GPU kwa TensorFlow**: Matoleo ya zamani ya TensorFlow huenda yasitoe kumbukumbu ya GPU ipasavyo wakati wa kufundisha mifano mingi ndani ya kiini kimoja cha Python. Ili kudhibiti matumizi ya kumbukumbu ya GPU kwa ufanisi, unaweza kusanidi TensorFlow ili itenge kumbukumbu ya GPU tu inapohitajika. +* **Ujumuishaji wa Msimbo**: Ili kuweka TensorFlow iyatengenie kumbukumbu ya GPU polepole tu inapohitajika, jumuisha msimbo ifuatayo katika daftari zako za kumbukumbu: ```python physical_devices = tf.config.list_physical_devices('GPU') if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) -``` +``` -Ikiwa una nia ya kujifunza kuhusu NLP kutoka mtazamo wa ML wa jadi, tembelea [hii seti ya masomo](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) +Ikiwa unavutiwa na kujifunza kuhusu NLP kutoka kwa mtazamo wa ML wa jadi, tembelea [mfululizo huu wa masomo](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) -## Katika Sehemu Hii +## Katika Sehemu Hii Katika sehemu hii tutajifunza kuhusu: -* [Kuwakilisha maandishi kama tensors](13-TextRep/README.md) -* [Uwakilishi wa Maneno](14-Emdeddings/README.md) -* [Uundaji wa Lugha](15-LanguageModeling/README.md) -* [Mitandao ya Neural ya Kurudiarudia](16-RNN/README.md) -* [Mitandao ya Kizazi](17-GenerativeNetworks/README.md) -* [Transformers](18-Transformers/README.md) +* [Kuonyesha maandishi kama tensors](13-TextRep/README.md) +* [Uingiliano wa Maneno](14-Emdeddings/README.md) +* [Mifano ya Lugha](15-LanguageModeling/README.md) +* [Mitandao ya Neva Inayorudia](16-RNN/README.md) +* [Mitandao Inazozalisha](17-GenerativeNetworks/README.md) +* [Transformers](18-Transformers/README.md) -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file +--- + + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/tl/.co-op-translator.json b/translations/tl/.co-op-translator.json index 3594d8b6..1005fe93 100644 --- a/translations/tl/.co-op-translator.json +++ b/translations/tl/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "tl" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T16:44:57+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "tl" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T16:15:01+00:00", @@ -54,8 +60,8 @@ "language_code": "tl" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:32:56+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T16:31:24+00:00", "source_file": "examples/README.md", "language_code": "tl" }, @@ -66,8 +72,8 @@ "language_code": "tl" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T04:17:01+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T16:31:48+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "tl" }, @@ -191,6 +197,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "tl" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T16:23:55+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "tl" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-28T02:31:15+00:00", @@ -330,8 +342,8 @@ "language_code": "tl" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-28T02:41:08+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T16:32:21+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "tl" }, @@ -385,7 +397,7 @@ }, "lessons/sketchnotes/LICENSE.md": { "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", - "translation_date": "2025-08-28T02:40:23+00:00", + "translation_date": "2026-07-08T16:38:57+00:00", "source_file": "lessons/sketchnotes/LICENSE.md", "language_code": "tl" }, diff --git a/translations/tl/CONTRIBUTING.md b/translations/tl/CONTRIBUTING.md new file mode 100644 index 00000000..ed53bf34 --- /dev/null +++ b/translations/tl/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Pagtutulungan sa AI-For-Beginners + +Salamat sa iyong interes sa pagtutulungan sa AI-For-Beginners! Tinatanggap namin ang mga pagsasalin, pag-aayos ng mga leksyon, at mga pagwawasto sa format. + +## Kasunduan sa Lisensya ng Nag-aambag ng Microsoft (CLA) + +Tinatanggap ng proyektong ito ang mga kontribusyon at mungkahi. Karamihan sa mga kontribusyon ay nangangailangan na sumang-ayon ka sa isang Kasunduan sa Lisensya ng Nag-aambag (CLA) na nagsasaad na mayroon kang karapatan, at talaga namang ibinibigay mo, ang mga karapatan sa amin upang magamit ang iyong kontribusyon. Para sa mga detalye, bisitahin ang [https://cla.microsoft.com](https://cla.microsoft.com). + +Kapag nagsumite ka ng pull request, awtomatikong malalaman ng CLA-bot kung kailangan mong magbigay ng CLA at bibigyan ng angkop na tanda ang PR (hal., label, komento). Sundin lamang ang mga tagubilin na ibinigay ng bot. Kailangan mo lamang gawin ito nang isang beses sa lahat ng mga repositoryo na gumagamit ng aming CLA. + +## Paano Mag-ambag + +### 1. Pag-aayos ng mga Typo / Error sa Code +Kung makakita ka ng typo o bug sa anumang Jupyter notebook o file ng leksyon sa markdown: +1. I-fork ang repositoryo. +2. Ayusin ang typo o sirang link. +3. Mag-submit ng Pull Request na may malinaw na paglalarawan ng pag-aayos. + +### 2. Pagsusumite ng mga Pagsasalin +Tinatanggap namin ang mga pagsasalin ng mga leksyon sa ibang mga wika! Mangyaring ilagay ang mga pagsasalin sa ilalim ng direktoryo na `translations/` gamit ang mga umiiral na pangalan ng folder doon (halimbawa `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +Para sa karagdagang detalye, tingnan ang [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md). + +--- + + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/examples/README.md b/translations/tl/examples/README.md index ae91299e..01a48105 100644 --- a/translations/tl/examples/README.md +++ b/translations/tl/examples/README.md @@ -1,27 +1,27 @@ -# Mga Halimbawa ng AI para sa Baguhan +# Mga Halimbawa na Madaling Intindihin Para sa mga Nagsisimula sa AI -Maligayang pagdating! Ang direktoryong ito ay naglalaman ng mga simpleng halimbawa na standalone upang matulungan kang magsimula sa AI at machine learning. Ang bawat halimbawa ay idinisenyo para sa mga baguhan na may detalyadong mga komento at hakbang-hakbang na paliwanag. +Maligayang pagdating! Ang direktoryong ito ay naglalaman ng mga simpleng halimbawa na standalone upang matulungan kang magsimula sa AI at machine learning. Bawat halimbawa ay idinisenyo upang maging madali para sa mga nagsisimula na may detalyadong mga komento at paliwanag nang hakbang-hakbang. ## 📚 Pangkalahatang-ideya ng mga Halimbawa | Halimbawa | Paglalarawan | Antas ng Hirap | Mga Kinakailangan | -|-----------|--------------|----------------|-------------------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | Ang iyong unang AI program - simpleng pagkilala ng pattern | ⭐ Baguhan | Mga batayan ng Python | -| [Simple Neural Network](../../../examples/02-simple-neural-network.py) | Gumawa ng neural network mula sa simula | ⭐⭐ Baguhan+ | Python, batayang matematika | -| [Image Classifier](./03-image-classifier.ipynb) | Mag-uri ng mga larawan gamit ang pre-trained na modelo | ⭐⭐ Baguhan+ | Python, numpy | -| [Text Sentiment](../../../examples/04-text-sentiment.py) | Suriin ang damdamin ng teksto (positibo/negatibo) | ⭐⭐ Baguhan+ | Python | +|---------|-------------|------------|---------------| +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | Ang iyong unang programang AI - simpleng pagkilala ng pattern | ⭐ Beginner | Mga batayang kaalaman sa Python | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Gumawa ng neural network mula sa simula | ⭐⭐ Beginner+ | Python, batayang matematika | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | Magklasipika ng mga larawan gamit ang pre-trained na modelo | ⭐⭐ Beginner+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | Suriin ang damdamin ng teksto (positibo/negatibo) | ⭐⭐ Beginner+ | Python | ## 🚀 Pagsisimula ### Mga Kinakailangan -Siguraduhing naka-install ang Python (inirerekomenda ang bersyong 3.8 o mas bago). I-install ang mga kinakailangang package: +Siguraduhing naka-install ang Python (inirerekomenda ang bersyon 3.8 o mas mataas). I-install ang mga kinakailangang pakete: ```bash -# For Python scripts +# Para sa mga Python script pip install numpy -# For Jupyter notebooks (image classifier) +# Para sa mga Jupyter notebook (tagapag-uri ng larawan) pip install jupyter numpy pillow tensorflow ``` @@ -46,18 +46,18 @@ jupyter notebook 03-image-classifier.ipynb ## 📖 Landas ng Pagkatuto -Inirerekomenda naming sundin ang mga halimbawa ayon sa pagkakasunod-sunod: +Inirerekomenda naming sundan ang mga halimbawa ayon sa pagkakasunod: -1. **Simulan sa "Hello AI World"** - Alamin ang mga batayan ng pagkilala ng pattern -2. **Gumawa ng Simple Neural Network** - Unawain kung paano gumagana ang mga neural network -3. **Subukan ang Image Classifier** - Tingnan ang AI sa aksyon gamit ang mga totoong larawan -4. **Suriin ang Damdamin ng Teksto** - Tuklasin ang natural language processing +1. **Magsimula sa "Hello AI World"** - Matutunan ang mga batayan ng pagkilala ng pattern +2. **Gumawa ng Simpleng Neural Network** - Unawain kung paano gumagana ang mga neural network +3. **Subukan ang Image Classifier** - Masdan ang AI na kumikilos gamit ang totoong mga larawan +4. **Suriin ang Text Sentiment** - Tuklasin ang natural language processing -## 💡 Mga Tip para sa mga Baguhan +## 💡 Mga Tip Para sa mga Nagsisimula -- **Basahing mabuti ang mga komento sa code** - Ipinaliwanag nito kung ano ang ginagawa ng bawat linya -- **Mag-eksperimento!** - Subukang baguhin ang mga halaga at tingnan ang resulta -- **Huwag mag-alala kung hindi mo agad maiintindihan ang lahat** - Ang pagkatuto ay nangangailangan ng oras +- **Basahin nang maigi ang mga komento sa code** - Ipinaliwanag nito kung ano ang ginagawa ng bawat linya +- **Magsanay!** - Subukang palitan ang mga halaga at tingnan ang resulta +- **Huwag mag-alala kung hindi mo agad maintindihan ang lahat** - Ang pagkatuto ay nangangailangan ng panahon - **Magtanong** - Gamitin ang [Discussion board](https://github.com/microsoft/AI-For-Beginners/discussions) ## 🔗 Mga Susunod na Hakbang @@ -68,18 +68,20 @@ Pagkatapos makumpleto ang mga halimbawang ito, tuklasin ang buong kurikulum: - [Computer Vision](../lessons/4-ComputerVision/README.md) - [Natural Language Processing](../lessons/5-NLP/README.md) -## 🤝 Pag-aambag +## 🤝 Pagsusulong -Nakita mo bang kapaki-pakinabang ang mga halimbawang ito? Tulungan kaming pagandahin pa ang mga ito: -- Mag-ulat ng mga isyu o magmungkahi ng mga pagpapabuti -- Magdagdag ng higit pang mga halimbawa para sa mga baguhan -- Pagandahin ang dokumentasyon at mga komento +Nakita mo ba na kapaki-pakinabang ang mga halimbawang ito? Tumulong upang mapaunlad ang mga ito: +- Iulat ang mga problema o magmungkahi ng mga pagpapabuti +- Magdagdag ng higit pang mga halimbawa para sa mga nagsisimula +- Pahusayin ang dokumentasyon at mga komento --- -*Tandaan: Ang bawat eksperto ay minsang naging baguhan. Maligayang pag-aaral! 🎓* +*Tandaan: Ang bawat eksperto ay minsang isang nagsisimula. Maligayang pagkatuto! 🎓* --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, mangyaring tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/lessons/0-course-setup/how-to-run.md b/translations/tl/lessons/0-course-setup/how-to-run.md index 8f409c02..8797685a 100644 --- a/translations/tl/lessons/0-course-setup/how-to-run.md +++ b/translations/tl/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ -# Paano Patakbuhin ang Code +# Paano Patakbuhin ang Kodigo -Ang kurikulum na ito ay naglalaman ng maraming mga executable na halimbawa at mga lab na nais mong patakbuhin. Upang magawa ito, kailangan mong magkaroon ng kakayahang magpatakbo ng Python code sa Jupyter Notebooks na ibinigay bilang bahagi ng kurikulum na ito. Mayroon kang ilang mga pagpipilian para mapatakbo ang code: +Ang kurikulum na ito ay naglalaman ng maraming maisasagawang halimbawa at mga laboratoryo na nais mong patakbuhin. Upang magawa ito, kailangan mong magkaroon ng kakayahang magpatakbo ng Python code sa Jupyter Notebooks na ibinigay bilang bahagi ng kurikulum na ito. Mayroon kang ilang mga opsyon para patakbuhin ang kodigo: -## Patakbuhin nang lokal sa iyong kompyuter +## Patakbuhin nang lokal sa iyong computer -Upang patakbuhin ang code nang lokal sa iyong kompyuter, kinakailangan ang isang Python installation. Isang rekomendasyon ay ang pag-install ng **[miniconda](https://conda.io/en/latest/miniconda.html)** - ito ay isang medyo magaan na installation na sumusuporta sa `conda` package manager para sa iba't ibang Python **virtual environments**. +Upang patakbuhin ang kodigo nang lokal sa iyong computer, kinakailangan ang isang pag-install ng Python. Isang rekomendasyon ay mag-install ng **[miniconda](https://conda.io/en/latest/miniconda.html)** - ito ay isang magaan na pag-install na sumusuporta sa `conda` package manager para sa iba't ibang mga Python **virtual environment**. -Pagkatapos mong i-install ang miniconda, i-clone ang repository at gumawa ng virtual environment na gagamitin para sa kurso na ito: +Pagkatapos mong mag-install ng miniconda, i-clone ang repositoryo at gumawa ng virtual environment na gagamitin para sa kursong ito: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -17,17 +17,17 @@ conda activate ai4beg ### Paggamit ng Visual Studio Code na may Python Extension -Ang kurikulum na ito ay pinakamahusay gamitin kapag binuksan ito sa [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) kasama ang [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Ang kurikulum na ito ay pinakamainam gamitin kapag binuksan ito sa [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) na may [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Note**: Kapag na-clone mo at na-open ang direktoryo sa VS Code, awtomatiko nitong ire-rekomenda sa iyo na i-install ang Python extensions. Kailangan mo ring i-install ang miniconda gaya ng ipinaliwanag sa itaas. +> **Tandaan**: Kapag na-clone mo na at binuksan ang direktoryo sa VS Code, awtomatiko nitong mungkahiang mag-install ka ng mga Python extension. Kailangan mo ring mag-install ng miniconda gaya ng ipinaliwanag sa itaas. -> **Note**: Kung ire-rekomenda ng VS Code na i-reopen ang repository sa isang container, dapat mong tanggihan ito upang gamitin ang lokal na Python installation. +> **Tandaan**: Kung iminumungkahi ng VS Code na muling buksan ang repositoryo sa isang container, dapat mong tanggihan ito upang magamit ang lokal na Python installation. ### Paggamit ng Jupyter sa Browser -Maaari ka ring gumamit ng Jupyter environment mula sa browser sa iyong sariling kompyuter. Parehong ang klasikong Jupyter at JupyterHub ay nagbibigay ng maginhawang development environment na may auto-completion, pagkulay ng code, atbp. +Maaari mo ring gamitin ang isang Jupyter environment mula sa browser sa iyong sariling computer. Parehong ang klasikong Jupyter at JupyterHub ay nag-aalok ng maginhawang kapaligiran sa pag-develop na may auto-completion, pag-highlight ng code, atbp. -Upang simulan ang Jupyter nang lokal, pumunta sa direktoryo ng kurso, at i-execute: +Upang simulan ang Jupyter nang lokal, pumunta sa direktoryo ng kurso, at patakbuhin ang: ```bash jupyter notebook @@ -36,36 +36,36 @@ o ```bash jupyterhub ``` -Pagkatapos ay maaari kang mag-navigate sa alinmang `.ipynb` na file, buksan ito at simulan ang pagtatrabaho. +Maaari ka nang mag-navigate sa kahit anong `.ipynb` na mga file, buksan ang mga ito at simulan ang pag-trabaho. ### Pagpapatakbo sa container -Isang alternatibo sa pag-install ng Python ay ang pagpapatakbo ng code sa isang container. Dahil ang aming repository ay nagbibigay ng isang espesyal na `.devcontainer` na folder na nagsasaad kung paano bumuo ng isang container para sa repo na ito, nag-aalok ang VS Code ng pagkakataong i-reopen ang code sa loob ng isang container. Kakailanganin nito ang Docker installation, at mas kumplikado ito kaya inirerekomenda namin ito sa mga mas may karanasang gumagamit. +Isang alternatibo sa pag-install ng Python ay ang pagpapatakbo ng kodigo sa isang container. Dahil ang aming repositoryo ay nagbibigay ng isang espesyal na `.devcontainer` folder na nagtuturo kung paano bumuo ng isang container para sa repo na ito, inaalok ng VS Code ang pagkakataong muling buksan ang kodigo sa isang container. Kakailanganin nito ang pag-install ng Docker, at magiging mas kumplikado, kaya inirerekomenda namin ito para sa mga mas bihasang gumagamit. ## Pagpapatakbo sa Cloud -Kung ayaw mong mag-install ng Python nang lokal, at may access ka sa ilang cloud resources - isang magandang alternatibo ay ang pagpapatakbo ng code sa cloud. May ilang paraan upang magawa ito: +Kung ayaw mong mag-install ng Python nang lokal, at may access ka sa ilang mga cloud resources - isang magandang alternatibo ang pagpapatakbo ng kodigo sa cloud. May ilang paraan upang gawin ito: -* Paggamit ng **[GitHub Codespaces](https://github.com/features/codespaces)**, na isang virtual environment na nilikha para sa iyo sa GitHub, na maa-access sa pamamagitan ng VS Code browser interface. Kung may access ka sa Codespaces, maaari mong i-click lang ang **Code** button sa repo, simulan ang codespace, at agad na makapagtatrabaho. -* Paggamit ng **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. Nagbibigay ang [Binder](https://mybinder.org) ng libreng computing resources sa cloud para sa mga taong tulad mo upang subukan ang ilang code mula sa GitHub. Mayroong button sa front page upang buksan ang repository sa Binder - ito ay mabilis na magdadala sa iyo sa binder site, kung saan bubuuin ang underlying container at magsisimula ang Jupyter web interface nang walang patid. +* Paggamit ng **[GitHub Codespaces](https://github.com/features/codespaces)**, na isang virtual environment na nilikha para sa iyo sa GitHub, na ma-access sa pamamagitan ng interface ng browser ng VS Code. Kung may access ka sa Codespaces, maaari mo lang i-click ang **Code** button sa repo, magsimula ng codespace, at agad na magsimula. +* Paggamit ng **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. Nag-aalok ang [Binder](https://mybinder.org) ng mga libreng computing na resources na ibinibigay sa cloud para sa mga taong kagaya mo upang subukan ang ilang kodigo sa GitHub. May button sa front page para buksan ang repositoryo sa Binder - dadalhin ka nito agad sa binder site, na bubuo ng isang underlying container at magsisimula ng isang Jupyter web interface para sa iyo nang walang abala. -> **Note**: Upang maiwasan ang maling paggamit, may mga web resources na hindi naa-access ng Binder. Maaaring pigilan nito ang ilang bahagi ng code na gumana na kumukuha ng mga modelo at/o dataset mula sa pampublikong Internet. Kailangan mong humanap ng mga alternatibong paraan. Gayundin, ang computing resources na ibinibigay ng Binder ay medyo basic lamang, kaya magiging mabagal ang training, lalong-lalo na sa mga huling aralin na mas kumplikado. +> **Tandaan**: Upang maiwasan ang maling paggamit, may akses ang Binder sa ilang mga web resource na naka-block. Maaaring hadlangan nito ang ilang bahagi ng kodigo na gumagana, lalo na yung humihingi ng mga modelo at/o datasets mula sa pampublikong Internet. Maaaring kailanganin mong humanap ng ibang paraan. Gayundin, ang computing resources na ibinibigay ng Binder ay medyo basic lang, kaya mabagal ang training, lalo na sa mga huling leksyon na mas kumplikado. ## Pagpapatakbo sa Cloud na may GPU -Ang ilang mga huling aralin sa kurikulum na ito ay lubos na makikinabang sa suporta ng GPU. Ang pagsasanay ng mga modelo, halimbawa, ay maaaring maging napakabagal kung wala ito. May ilang mga opsyon na maaari mong sundin, lalo na kung may access ka sa cloud sa pamamagitan ng [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), o sa pamamagitan ng iyong institusyon: +Ang ilan sa mga huling leksyon sa kurikulum na ito ay malaki ang mapapakinabangan mula sa suporta ng GPU. Halimbawa, ang pagte-train ng modelo ay maaaring maging napakabagal kung wala ito. May ilang mga opsyon na maaari mong sundan, lalo na kung may access ka sa cloud sa pamamagitan ng [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), o mula sa iyong institusyon: -* Gumawa ng [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) at kumonekta dito gamit ang Jupyter. Maaari mong i-clone ang repo direkta sa makina, at simulan ang pag-aaral. Ang NC-series VMs ay may suporta para sa GPU. +* Gumawa ng [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) at kumonekta dito gamit ang Jupyter. Maaari mong i-clone ang repo diretso sa makina, at simulan ang pag-aaral. Ang NC-series na mga VM ay may suporta sa GPU. -> **Note**: Ang ilang subscription, kabilang ang Azure for Students, ay hindi awtomatikong nagbibigay ng suporta para sa GPU. Maaaring kailanganin mong humiling ng karagdagang GPU cores sa pamamagitan ng technical support request. +> **Tandaan**: Ang ilang mga subscription, kabilang ang Azure for Students, ay hindi agad nagbibigay ng suporta sa GPU. Maaaring kailanganin mong humiling ng karagdagang mga GPU core sa pamamagitan ng technical support request. -* Gumawa ng [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) at gamitin ang Notebook feature doon. [Itong video](https://azure-for-academics.github.io/quickstart/azureml-papers/) ay nagpapakita kung paano i-clone ang repository papunta sa Azure ML notebook at simulan ang paggamit nito. +* Gumawa ng [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) at pagkatapos ay gamitin ang Notebook feature doon. [Ang video na ito](https://azure-for-academics.github.io/quickstart/azureml-papers/) ay nagpapakita kung paano i-clone ang repository sa Azure ML notebook at simulan itong gamitin. -Maaari mo ring gamitin ang Google Colab, na may kasamang libreng GPU support, at i-upload ang Jupyter Notebooks doon upang isa-isang patakbuhin. +Maaari mo ring gamitin ang Google Colab, na may kasamang libreng suporta sa GPU, at i-upload ang mga Jupyter Notebooks doon upang patakbuhin ang mga ito isa-isa. --- -**Paliwanag**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kaming maging tumpak, pakatandaan na maaaring may mga pagkakamali o hindi pagkakatugma ang mga awtomatikong pagsasalin. Ang orihinal na dokumento sa sariling wika nito ang dapat ituring na opisyal na sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring manggaling sa paggamit ng pagsasaling ito. +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. \ No newline at end of file diff --git a/translations/tl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/tl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index f7da6368..7743f320 100644 --- a/translations/tl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/tl/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Mga Pre-trained na Modelo at Transfer Learning\n", + "# Mga pre-trained na modelo at transfer learning\n", "\n", - "Ang pagsasanay ng CNNs ay maaaring tumagal ng maraming oras, at nangangailangan ito ng malaking dami ng datos. Gayunpaman, karamihan sa oras ay ginugugol sa pag-aaral ng pinakamahusay na mga low-level filter na ginagamit ng network upang kumuha ng mga pattern mula sa mga imahe. Isang natural na tanong ang lumalabas - maaari ba nating gamitin ang isang neural network na sinanay na sa isang dataset at iangkop ito upang makapagklasipika ng ibang mga imahe nang hindi dumadaan sa buong proseso ng pagsasanay?\n", + "Ang pagsasanay ng mga CNN ay maaaring tumagal ng maraming oras, at maraming datos ang kinakailangan para sa gawaing iyon. Gayunpaman, malaking bahagi ng oras ay ginugugol upang matutunan ang pinakamahusay na mga mabababang-level na filter na ginagamit ng network upang kunin ang mga pattern mula sa mga larawan. Isang natural na tanong ang lumilitaw - maaari ba tayong gumamit ng neural network na na-train sa isang dataset at iakma ito sa pag-uuri ng ibang mga larawan nang hindi na kailangan ang buong proseso ng training?\n", "\n", - "Ang pamamaraang ito ay tinatawag na **transfer learning**, dahil inililipat natin ang ilang kaalaman mula sa isang neural network model patungo sa iba. Sa transfer learning, karaniwang nagsisimula tayo sa isang pre-trained na modelo, na sinanay na sa isang malaking dataset ng imahe, tulad ng **ImageNet**. Ang mga modelong ito ay mahusay na sa pagkuha ng iba't ibang mga tampok mula sa mga pangkalahatang imahe, at sa maraming pagkakataon, ang simpleng paggawa ng isang classifier sa ibabaw ng mga nakuha nang tampok na ito ay maaaring magbigay ng magandang resulta.\n" + "Ang pamamaraang ito ay tinatawag na **transfer learning**, dahil inilipat natin ang ilang kaalaman mula sa isang neural network model papunta sa iba. Sa transfer learning, karaniwan tayong nagsisimula sa isang pre-trained na modelo, na na-train na sa isang malaking image dataset, gaya ng **ImageNet**. Ang mga modelong iyon ay kaya nang mahusay kumuha ng iba't ibang mga tampok mula sa mga generic na larawan, at sa maraming pagkakataon, ang paggawa lamang ng classifier sa ibabaw ng mga nakuhang tampok na iyon ay maaaring magbigay ng magandang resulta.\n" ] }, { @@ -29,11 +29,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Dataset ng Pusa vs. Aso\n", + "## Cats vs. Dogs Dataset\n", "\n", - "Sa yunit na ito, susubukan nating lutasin ang isang totoong problema ng pag-uuri ng mga larawan ng pusa at aso. Para sa layuning ito, gagamitin natin ang [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), na maaari ring ma-download [mula sa Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", + "Sa yunit na ito, lulutasin natin ang isang tunay na problema sa pag-uuri ng mga larawan ng mga pusa at aso. Para dito, gagamit tayo ng [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), na maaari ring i-download [mula sa Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", "\n", - "I-download natin ang dataset na ito at i-extract ito sa direktoryong `data` (ang prosesong ito ay maaaring tumagal ng kaunting oras!):\n" + "I-download natin ang dataset na ito at i-extract ito sa `data` na direktoryo (maaaring tumagal ang prosesong ito ng ilang sandali!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sa kasamaang-palad, may ilang sirang mga file ng imahe sa dataset. Kailangan nating magsagawa ng mabilisang paglilinis upang suriin ang mga sirang file. Upang hindi maapektuhan ang tutorial na ito, inilipat namin ang code para sa pag-verify ng dataset sa isang module.\n" + "Sa kasamaang palad, may ilang sirang mga file ng larawan sa dataset. Kailangan nating mabilisang linisin upang suriin ang mga sirang file. Upang hindi masira ang tutorial na ito, inilagay namin ang code para i-verify ang dataset sa isang module.\n" ] }, { @@ -333,13 +333,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Paglo-load ng Dataset\n", + "## Pag-load ng Dataset\n", "\n", - "Sa mga naunang halimbawa, naglo-load tayo ng mga dataset na naka-built-in sa Keras. Ngayon, haharapin natin ang sarili nating dataset, na kailangang i-load mula sa isang direktoryo ng mga larawan.\n", + "Sa mga naunang halimbawa, naglo-load tayo ng mga dataset na naka-built-in sa Keras. Ngayon, haharapin natin ang sarili nating dataset, na kailangan nating i-load mula sa isang direktoryo ng mga larawan.\n", "\n", - "Sa totoong buhay, ang laki ng mga dataset ng larawan ay maaaring napakalaki, at hindi maaasahan na ang lahat ng data ay magkakasya sa memorya. Kaya, ang mga dataset ay madalas na kinakatawan bilang **generators** na maaaring magbalik ng data sa maliliit na batch na angkop para sa training.\n", + "Sa totoong buhay, ang laki ng mga image dataset ay maaaring maging napakalaki, at hindi maaaring asahan na lahat ng data ay maaaring magkasya sa memorya. Kaya, ang mga dataset ay kadalasang kinakatawan bilang **generators** na maaaring magbalik ng data sa mga minibatch na angkop para sa training.\n", "\n", - "Upang harapin ang image classification, ang Keras ay may espesyal na function na `image_dataset_from_directory`, na maaaring mag-load ng mga larawan mula sa mga subdirectory na tumutukoy sa iba't ibang klase. Ang function na ito ay nag-aalaga rin ng pag-scale ng mga larawan, at maaari rin nitong hatiin ang dataset sa train at test subsets:\n" + "Para sa pag-handle ng image classification, kasama sa Keras ang espesyal na function na `image_dataset_from_directory`, na maaaring mag-load ng mga larawan mula sa mga subdirectory na tumutugma sa iba't ibang klase. Ang function na ito ay inaalagaan din ang pag-scale ng mga larawan, at maaari rin nitong hatiin ang dataset sa train at test na mga subset:\n" ] }, { @@ -383,7 +383,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mahalagang itakda ang parehong halaga ng `seed` para sa parehong tawag, dahil naaapektuhan nito ang paghahati ng mga imahe sa pagitan ng train at test dataset.\n", + "Mahalaga na itakda ang parehong `seed` na halaga para sa parehong tawag, dahil ito ay nakakaapekto sa paghahati ng mga imahe sa pagitan ng train at test na dataset.\n", "\n", "Awtomatikong kinukuha ng Dataset ang mga pangalan ng klase mula sa mga direktoryo, at maaari mo itong ma-access kung kinakailangan sa pamamagitan ng pagtawag:\n" ] @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ang mga dataset na nakuha namin ay maaaring direktang ipasa sa `fit` na function upang sanayin ang modelo. Naglalaman ang mga ito ng parehong kaukulang mga imahe at label, na maaaring i-loop gamit ang sumusunod na konstruksyon:\n" + "Ang mga nakuha nating datasets ay maaaring direktang ipasa sa `fit` function para sanayin ang modelo. Naglalaman ang mga ito ng parehong kaukulang mga imahe at label, na maaaring i-loop gamit ang sumusunod na konstruksyon:\n" ] }, { @@ -453,7 +453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **Tandaan**: Ang lahat ng mga imahe sa dataset ay kinakatawan bilang floating point tensors na may saklaw na 0-255. Bago ito ipasa sa neural network, kailangan nating i-scale ang mga halagang iyon sa saklaw na 0-1. Kapag nag-plot ng mga imahe, kailangan din nating gawin ang pareho, o i-convert ang mga halaga sa uri na `int` (na ginagawa natin sa code sa itaas), upang ipakita sa `matplotlib` na nais nating i-plot ang orihinal na hindi naka-scale na imahe.\n" + "> **Tandaan**: Lahat ng mga larawan sa dataset ay kinakatawan bilang mga floatint point tensor na may saklaw na 0-255. Bago ito ipasa sa neural network, kailangan nating iskalang muli ang mga halagang iyon sa saklaw na 0-1. Kapag nag-plot ng mga larawan, kailangan din nating gawin ang parehong bagay, o i-convert ang mga halaga sa uri ng `int` (na ginawa natin sa code sa itaas), upang ipakita sa `matplotlib` na nais nating i-plot ang orihinal na hindi naka-scale na larawan.\n" ] }, { @@ -462,7 +462,7 @@ "source": [ "## Mga Pre-trained na Modelo\n", "\n", - "Para sa maraming gawain sa pag-uuri ng imahe, makakahanap ka ng mga pre-trained na modelo ng neural network. Marami sa mga modelong ito ay makikita sa loob ng `keras.applications` namespace, at mas marami pang modelo ang maaaring matagpuan sa Internet. Tingnan natin kung paano ma-load at magamit ang pinakasimpleng VGG-16 na modelo:\n" + "Para sa maraming mga gawain sa klasipikasyon ng larawan, maaaring makahanap ng mga pre-trained na modelo ng neural network. Marami sa mga modelong iyon ay available sa loob ng `keras.applications` namespace, at marami pang iba ang maaaring matagpuan sa Internet. Tingnan natin kung paano mai-load at magamit ang pinakasimpleng modelo ng VGG-16:\n" ] }, { @@ -497,7 +497,17 @@ } ], "source": [ - "vgg = keras.applications.VGG16()\n", + "# SHA-256 of VGG16 weights (with top)\n", + "VGG16_WEIGHTS_SHA256 = '64373286793e3c8b2b4e3219cbf3544bce2f55ab4682710a29f5e7af8f5e4f61'\n", + "\n", + "_weights_path = keras.utils.get_file(\n", + " 'vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " 'https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5',\n", + " file_hash=VGG16_WEIGHTS_SHA256,\n", + " hash_algorithm='sha256',\n", + ")\n", + "\n", + "vgg = keras.applications.VGG16(weights=_weights_path)\n", "inp = keras.applications.vgg16.preprocess_input(x_sample[:1])\n", "\n", "res = vgg(inp)\n", @@ -510,10 +520,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mayroong ilang mahahalagang bagay dito:\n", - "* Bago ipasa ang isang input sa anumang pre-trained network, kailangang i-preprocess ito sa isang tiyak na paraan. Ginagawa ito sa pamamagitan ng pagtawag sa kaukulang `preprocess_input` function, na tumatanggap ng batch ng mga imahe at ibinabalik ang kanilang naprosesong anyo. Sa kaso ng VGG-16, ang mga imahe ay na-normalize, at ang ilang pre-defined na average value para sa bawat channel ay ibinabawas. Ito ay dahil ang VGG-16 ay orihinal na na-train gamit ang ganitong pre-processing.\n", - "* Ang neural network ay ina-apply sa input batch, at bilang resulta, makakakuha tayo ng batch ng 1000-element tensors na nagpapakita ng probabilidad ng bawat klase. Maaari nating hanapin ang pinaka-probable na numero ng klase sa pamamagitan ng pagtawag sa `argmax` sa tensor na ito.\n", - "* Ang nakuha na resulta ay isang [numero ng klase ng `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Upang maunawaan ang resulta, maaari rin nating gamitin ang `decode_predictions` function, na nagbabalik ng top n na klase kasama ang kanilang mga pangalan.\n" + "May ilang mahahalagang bagay dito:\n", + "* Bago ipasa ang input sa anumang pre-trained na network, kailangang i-pre-process ito sa isang tiyak na paraan. Ginagawa ito sa pamamagitan ng pagtawag sa katumbas na `preprocess_input` function, na tumatanggap ng batch ng mga imahe, at ibinabalik ang kanilang na-prosesong anyo. Sa kaso ng VGG-16, ang mga imahe ay nino-normalize, at ang ilang pre-defined na average value para sa bawat channel ay ibinabawas. Ito ay dahil orihinal na tinraining ang VGG-16 gamit ang ganitong pre-processing.\n", + "* Ang neural network ay ina-apply sa input batch, at bilang resulta nakakakuha tayo ng batch ng 1000-element tensors na nagpapakita ng posibilidad ng bawat klase. Maaari nating hanapin ang pinaka-malamang na numero ng klase sa pamamagitan ng pagtawag ng `argmax` sa tensor na ito.\n", + "* Ang nakuhang resulta ay isang [numero ng isang `ImageNet` na klase](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Upang maunawaan ang resulta na ito, maaari rin nating gamitin ang `decode_predictions` function, na nagbabalik ng nangungunang n mga klase kasama ang kanilang mga pangalan.\n" ] }, { @@ -597,9 +607,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Mga kalkulasyon gamit ang GPU\n", + "## GPU computations\n", "\n", - "Ang mga deep neural networks, tulad ng VGG-16 at iba pang mas modernong arkitektura, ay nangangailangan ng malaking computational power upang gumana. Makatuwiran na gamitin ang GPU acceleration kung ito ay magagamit. Sa kabutihang-palad, awtomatikong pinapabilis ng Keras ang mga kalkulasyon sa GPU kung ito ay magagamit. Maaari nating suriin kung magagamit ng Tensorflow ang GPU gamit ang sumusunod na code:\n" + "Malalim na neural network, tulad ng VGG-16 at iba pang mas modernong arkitektura ay nangangailangan ng maraming computational power upang tumakbo. Makatuwiran na gamitin ang GPU acceleration, kung ito ay magagamit. Sa kabutihang palad, awtomatikong pinapabilis ng Keras ang mga kalkulasyon sa GPU kung ito ay magagamit. Maaari nating suriin kung kaya ng Tensorflow na gamitin ang GPU gamit ang sumusunod na code:\n" ] }, { @@ -626,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Pagkuha ng mga VGG Feature\n", "\n", - "Kung nais nating gamitin ang VGG-16 upang kumuha ng mga feature mula sa ating mga larawan, kailangan natin ang modelo na walang huling mga layer para sa klasipikasyon. Maaari nating i-instantiate ang VGG-16 na modelo nang walang mga top layer gamit ang code na ito:\n" + "## Pagkuha ng mga tampok ng VGG\n", + "\n", + "Kung gusto nating gamitin ang VGG-16 upang kumuha ng mga tampok mula sa ating mga larawan, kailangan natin ang modelo na walang mga huling layer ng klasipikasyon. Maaari nating gawin ang VGG-16 na modelo na walang mga top layer gamit ang code na ito:\n" ] }, { @@ -680,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ang sukat ng feature tensor ay 7x7x512, ngunit upang maipakita ito, kinailangan nating i-reshape ito sa 2D na anyo.\n", + "Ang dimensyon ng feature tensor ay 7x7x512, ngunit upang ito ay ma-visualize, kinailangan naming i-reshape ito sa 2D na anyo.\n", "\n", - "Ngayon, subukan nating tingnan kung magagamit ang mga feature na ito para sa pag-uuri ng mga larawan. Manu-mano nating kunin ang ilang bahagi ng mga larawan (50 minibatches, sa ating kaso), at i-pre-compute ang kanilang mga feature vector. Maaari nating gamitin ang Tensorflow **dataset** API para gawin ito. Ang `map` function ay kumukuha ng isang dataset at nag-aaplay ng ibinigay na lambda-function upang baguhin ito. Ginagamit natin ang mekanismong ito upang makabuo ng mga bagong dataset, `ds_features_train` at `ds_features_test`, na naglalaman ng mga feature na nakuha mula sa VGG sa halip na mga orihinal na larawan.\n" + "Ngayon, subukan nating tingnan kung ang mga feature na iyon ay maaaring gamitin upang i-klasipika ang mga larawan. Manwal nating kukunin ang ilang bahagi ng mga larawan (50 minibatches, sa aming kaso), at i-pre-compute ang kanilang mga feature vector. Maaari nating gamitin ang Tensorflow **dataset** API para dito. Ang `map` function ay kumukuha ng isang dataset at ina-apply ang isang ibinigay na lambda-function upang ito ay mabago. Ginagamit namin ang mekanismong ito upang bumuo ng mga bagong dataset, `ds_features_train` at `ds_features_test`, na naglalaman ng mga VGG-extracted features imbes na orihinal na mga larawan.\n" ] }, { @@ -712,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ginamit namin ang konstruksyon na `.take(50)` upang limitahan ang laki ng dataset, para mapabilis ang aming demonstrasyon. Siyempre, maaari mong isagawa ang eksperimentong ito sa buong dataset.\n", + "Ginamit namin ang konstruksyon na `.take(50)` upang limitahan ang laki ng dataset, para pabilisin ang aming demonstrasyon. Maaari mo naman siyempre gawin ang eksperimento na ito sa buong dataset.\n", "\n", - "Ngayon na mayroon na tayong dataset na may mga na-extract na feature, maaari na tayong mag-train ng isang simpleng dense classifier upang makilala ang mga pusa at aso. Ang network na ito ay tatanggap ng feature vector na may hugis na (7,7,512), at magbibigay ng isang output na tumutukoy kung aso o pusa. Dahil ito ay binary classification, gagamit tayo ng `sigmoid` activation function at `binary_crossentropy` loss.\n" + "Ngayon na mayroon na tayong dataset na may mga na-extract na feature, maaari na tayong magsanay ng simpleng dense classifier upang makilala ang pagitan ng pusa at aso. Ang network na ito ay tatanggap ng feature vector na may hugis na (7,7,512), at magbibigay ng isang output na tumutukoy alinman sa aso o pusa. Dahil ito ay binary classification, gagamit tayo ng `sigmoid` activation function at `binary_crossentropy` loss.\n" ] }, { @@ -743,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ang resulta ay maganda, kaya nating makilala ang pagkakaiba ng pusa at aso na may halos 95% na posibilidad! Gayunpaman, nasubukan lang natin ang pamamaraang ito sa isang subset ng lahat ng mga larawan, dahil ang manu-manong pagkuha ng mga katangian ay tila kumakain ng maraming oras.\n", + "Maganda ang resulta, kaya nating makilala ang pagitan ng pusa at aso na may halos 95% na posibilidad! Gayunpaman, nasubukan lamang namin ang pamamaraang ito sa isang subset ng lahat ng mga larawan, dahil ang manu-manong pagkuha ng mga tampok ay tila tumatagal ng maraming oras.\n", "\n", "## Transfer learning gamit ang isang VGG network\n", "\n", - "Maaari rin nating iwasan ang manu-manong pag-precompute ng mga katangian sa pamamagitan ng paggamit ng orihinal na VGG-16 network nang buo habang nagsasanay, sa pamamagitan ng pagdaragdag ng feature extractor sa ating network bilang unang layer.\n", + "Maaari rin nating iwasan ang manu-manong pag-compute ng mga tampok sa pamamagitan ng paggamit ng orihinal na VGG-16 network bilang kabuuan habang nagsasanay, sa pamamagitan ng pagdagdag ng feature extractor sa ating network bilang unang layer.\n", "\n", - "Ang kagandahan ng Keras architecture ay ang VGG-16 model na na-define natin sa itaas ay maaari ring gamitin bilang isang layer sa isa pang neural network! Kailangan lang nating bumuo ng isang network na may dense classifier sa ibabaw nito, at pagkatapos ay sanayin ang buong network gamit ang back propagation.\n" + "Ang kagandahan ng arkitektura ng Keras ay ang modelong VGG-16 na ating naipaliwanag sa itaas ay maaari ring gamitin bilang isang layer sa ibang neural network! Kailangan lang nating bumuo ng network na may dense classifier sa ibabaw nito, at pagkatapos ay sanayin ang buong network gamit ang back propagation.\n" ] }, { @@ -793,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ang modelong ito ay parang isang end-to-end classification network na tumatanggap ng isang imahe at nagbabalik ng klase. Gayunpaman, ang hamon dito ay gusto nating gamitin ang VGG16 bilang isang feature extractor, at hindi ito muling i-train. Kaya, kailangan nating **i-freeze ang mga weights ng convolutional feature extractor**. Maaari nating ma-access ang unang layer ng network sa pamamagitan ng pagtawag sa `model.layers[0]`, at kailangan lang nating itakda ang property na `trainable` sa `False`.\n", + "Ang modelong ito ay parang end-to-end na classification network, na kumukuha ng isang larawan at nagbabalik ng klase. Gayunpaman, ang kumplikadong bagay ay gusto nating ang VGG16 ay gumanap bilang isang feature extractor, at hindi na muling itrain. Kaya, kailangan nating **i-freeze ang mga timbang ng convolutional feature extractor**. Maaari nating ma-access ang unang layer ng network sa pamamagitan ng pagtawag sa `model.layers[0]`, at kailangan lang nating itakda ang property na `trainable` sa `False`.\n", "\n", - "> **Note**: Ang pag-freeze ng weights ng feature extractor ay kinakailangan, dahil kung hindi, maaaring masira ng untrained classifier layer ang orihinal na pre-trained weights ng convolutional extractor.\n", + "> **Tandaan**: Kailangan i-freeze ang mga timbang ng feature extractor, dahil kung hindi, ang untrained na classifier layer ay maaaring sirain ang orihinal na pre-trained na mga timbang ng convolutional extractor.\n", "\n", - "Mapapansin mo na habang ang kabuuang bilang ng mga parameter sa ating network ay nasa 15 milyon, 25k na parameter lamang ang ating tina-train. Ang lahat ng iba pang mga parameter ng top-level convolutional filters ay pre-trained. Maganda ito, dahil kaya nating i-fine-tune ang mas maliit na bilang ng mga parameter gamit ang mas kaunting bilang ng mga halimbawa.\n", + "Mapapansin mo na habang ang kabuuang bilang ng mga parameter sa ating network ay humigit-kumulang 15 milyon, tayo ay nagtetrain lamang ng 25k na mga parameter. Ang lahat ng iba pang mga parameter ng top-level na convolutional filters ay pre-trained na. Maganda iyon, dahil kaya nating i-fine-tune ang mas maliit na bilang ng mga parameter gamit ang mas maliit na bilang ng mga halimbawa.\n", "\n", - "Ngayon, itetrain natin ang ating network at tingnan kung gaano ito kagaling. Asahan ang medyo mahabang oras ng pagtakbo, at huwag mag-alala kung mukhang nakatigil ang execution sa ilang sandali.\n" + "Ngayon ay itetrain natin ang ating network at titingnan kung gaano ito kagaling. Asahan ang medyo mahabang oras ng pagpapatakbo, at huwag mag-alala kung tila humihinto ang execution nang ilang sandali.\n" ] }, { @@ -824,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mukhang nakakuha tayo ng medyo tumpak na classifier para sa mga pusa laban sa mga aso!\n", + "Mukhang nakakuha tayo ng medyo tumpak na classifier para sa pusa laban sa aso! \n", "\n", - "## Pag-save at Pag-load ng Modelo\n", + "## Pagse-save at Paglo-load ng Modelo\n", "\n", - "Kapag natapos na nating sanayin ang modelo, maaari nating i-save ang arkitektura ng modelo at ang mga na-train na timbang sa isang file para magamit sa hinaharap:\n" + "Kapag natapos na nating sanayin ang modelo, maaari nating i-save ang arkitektura ng modelo at mga na-train na timbang sa isang file para sa hinaharap na paggamit:\n" ] }, { @@ -852,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Maaari nating i-load ang modelo mula sa file anumang oras. Maaaring maging kapaki-pakinabang ito kung sakaling masira ng susunod na eksperimento ang modelo - hindi mo na kailangang magsimula muli mula sa simula.\n" + "Maaari nating i-load ang modelo mula sa file anumang oras. Maaari mo itong magamit kung sakaling masira ang modelo sa susunod na eksperimento - hindi mo na kailangang magsimula muli mula sa simula.\n" ] }, { @@ -870,13 +881,13 @@ "source": [ "## Fine-tuning transfer learning\n", "\n", - "Sa nakaraang seksyon, sinanay natin ang huling classifier layer upang i-klasipika ang mga imahe sa sarili nating dataset. Gayunpaman, hindi natin muling sinanay ang feature extractor, at ang ating modelo ay umasa sa mga feature na natutunan nito mula sa ImageNet data. Kung ang iyong mga bagay ay mukhang iba sa karaniwang mga imahe ng ImageNet, maaaring hindi gumana nang maayos ang kombinasyon ng mga feature na ito. Kaya't may saysay na simulan ang pagsasanay sa mga convolutional layer din.\n", + "Sa nakaraang seksyon, na-train natin ang huling classifier layer para i-classify ang mga larawan sa sarili nating dataset. Gayunpaman, hindi natin na-retrain ang feature extractor, at umaasa ang modelo natin sa mga feature na natutunan mula sa ImageNet data. Kung ang mga bagay na gusto mong i-classify ay iba sa karaniwang mga larawan ng ImageNet, maaaring hindi ito ang pinakamahusay na kombinasyon ng mga feature. Kaya makatwiran na simulan din ang pag-train ng mga convolutional layers.\n", "\n", - "Upang gawin ito, maaari nating i-unfreeze ang mga parameter ng convolutional filter na dati nating na-freeze.\n", + "Para magawa ito, maaari nating i-unfreeze ang mga convolutional filter parameters na dati nating pinatigil. \n", "\n", - "> **Note:** Mahalagang i-freeze muna ang mga parameter at magsagawa ng ilang epochs ng pagsasanay upang mapatatag ang mga weights sa classification layer. Kung agad kang magsisimula ng pagsasanay sa end-to-end network na may mga naka-unfreeze na parameter, malamang na masira ng malalaking error ang mga pre-trained weights sa convolutional layers.\n", + "> **Note:** Mahalagang i-freeze muna ang mga parameters at magsagawa ng ilang epochs ng training upang maging stable ang mga weights sa classification layer. Kung agad mong sisimulang i-train ang buong network nang unfrozen ang mga parameters, malaki ang posibilidad na sira ang mga pre-trained weights sa convolutional layers dahil sa malalaking errors.\n", "\n", - "Ang ating convolutional VGG-16 model ay matatagpuan sa loob ng unang layer, at ito mismo ay binubuo ng maraming layer. Maaari nating tingnan ang istruktura nito:\n" + "Ang ating convolutional VGG-16 model ay nasa loob ng unang layer, at ito ay binubuo ng maraming layers. Maaari nating tingnan ang estruktura nito: \n" ] }, { @@ -944,7 +955,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Maaari nating i-unfreeze ang lahat ng mga layer ng convolutional base:\n" + ] }, { "cell_type": "code", @@ -959,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Gayunpaman, hindi pinakamahusay na ideya ang i-unfreeze ang lahat ng sabay-sabay. Maaari muna nating i-unfreeze ang ilang huling layer ng convolutions, dahil naglalaman ang mga ito ng mas mataas na antas ng mga pattern na may kaugnayan sa ating mga imahe. Halimbawa, sa simula, maaari nating i-freeze ang lahat ng layer maliban sa huling 4:\n" + "Gayunpaman, ang pag-unfreeze ng lahat nang sabay-sabay ay hindi ang pinakamahusay na ideya. Maaari nating unfreeze-in muna lamang ang ilang huling mga layer ng convolution, dahil naglalaman ang mga ito ng mas mataas na antas ng mga pattern na may kaugnayan sa ating mga larawan. Halimbawa, upang magsimula, maaari nating i-freeze lahat ng mga layer maliban sa huling 4: \n" ] }, { @@ -998,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Pansinin na ang bilang ng mga trainable na parameter ay lumaki nang malaki, ngunit nasa paligid pa rin ito ng 50% ng lahat ng mga parameter.\n", + "Pansinin na ang bilang ng mga trainable na parametro ay tumaas nang malaki, ngunit ito ay nasa paligid pa rin ng 50% ng lahat ng parametro.\n", "\n", - "Pagkatapos ng pag-unfreeze, maaari tayong magsagawa ng ilang karagdagang epochs ng training (sa ating halimbawa, isa lang ang gagawin natin). Maaari ka ring pumili ng mas mababang learning rate upang mabawasan ang epekto sa pre-trained weights. Gayunpaman, kahit na may mababang learning rate, maaari mong asahan na bababa ang accuracy sa simula ng training, hanggang sa tuluyang maabot ang bahagyang mas mataas na antas kumpara sa kaso ng fixed weights.\n", + "Pagkatapos buksan ang pag-freeze, maaari tayong magsagawa ng ilang karagdagang epochs ng pagsasanay (sa aming halimbawa, gagawa lang kami ng isa). Maaari mo ring piliin ang mas mababang learning rate, upang mabawasan ang epekto sa mga pre-trained na weights. Gayunpaman, kahit na may mababang learning rate, maaari mong asahan na bababa ang accuracy sa simula ng pagsasanay, hanggang sa maabot nito ang bahagyang mas mataas na antas kaysa sa kaso ng fixed na mga weights.\n", "\n", - "> **Note:** Ang training na ito ay mas mabagal, dahil kailangan nating i-propagate ang gradients pabalik sa maraming layers ng network!\n" + "> **Tandaan:** Ang pagsasanay na ito ay nangyayari nang mas mabagal, dahil kailangan nating ipasa pabalik ang mga gradients sa maraming layer ng network!\n" ] }, { @@ -1026,9 +1039,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mas malamang na makamit natin ang mas mataas na training accuracy dahil gumagamit tayo ng mas makapangyarihang network na may mas maraming parameters, ngunit ang validation accuracy ay hindi gaanong tataas.\n", + "Malamang na makakamit natin ang mas mataas na training accuracy, dahil gumagamit tayo ng mas makapangyarihang network na may mas maraming parameters, ngunit hindi ganoon kalaki ang pagtaas ng validation accuracy.\n", "\n", - "Huwag mag-atubiling i-unfreeze ang ilang karagdagang layers ng network at magpatuloy sa pag-train upang makita kung kaya mong makamit ang mas mataas na accuracy!\n" + "Malayang i-unfreeze ang ilan pang mga layer ng network at mag-train pa, upang makita kung makakamit mo ang mas mataas na accuracy!\n" ] }, { @@ -1037,7 +1050,7 @@ "source": [ "## Iba pang mga modelo ng computer vision\n", "\n", - "Ang VGG-16 ay isa sa mga pinakasimpleng arkitektura ng computer vision. Nagbibigay ang Keras ng mas marami pang pre-trained na mga network. Ang mga madalas gamitin sa mga ito ay ang mga arkitektura ng **ResNet**, na binuo ng Microsoft, at **Inception** ng Google. Halimbawa, tuklasin natin ang arkitektura ng pinakasimpleng modelo ng ResNet-50 (Ang ResNet ay isang pamilya ng mga modelo na may iba't ibang lalim, maaari mong subukang mag-eksperimento sa ResNet-152 kung nais mong makita kung ano ang hitsura ng isang talagang malalim na modelo):\n" + "Ang VGG-16 ay isa sa mga pinakasimpleng arkitektura ng computer vision. Nagbibigay ang Keras ng marami pang mga pre-trained na network. Ang mga pinaka-madalas gamitin dito ay ang mga arkitektura ng **ResNet**, na binuo ng Microsoft, at **Inception** ng Google. Halimbawa, tuklasin natin ang arkitektura ng pinakasimpleng ResNet-50 na modelo (ang ResNet ay isang pamilya ng mga modelo na may iba't ibang lalim, maaari mong subukang eksperimentuhin ang ResNet-152 kung nais mong makita kung ano ang hitsura ng isang talagang malalim na modelo):\n" ] }, { @@ -1439,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tulad ng nakikita mo, ang modelong ito ay binubuo ng parehong mga pamilyar na bahagi: convolutional layers, pooling layers, at ang huling dense classifier. Maaari nating gamitin ang modelong ito sa eksaktong parehong paraan tulad ng paggamit natin sa VGG-16 para sa transfer learning. Maaari mong subukang mag-eksperimento gamit ang code sa itaas, gamit ang iba't ibang ResNet models bilang base model, at tingnan kung paano nagbabago ang accuracy.\n", + "Tulad ng nakikita mo, ang modelo ay naglalaman ng parehong mga pamilyar na bahagi: convolutional layers, pooling layers, at panghuling dense classifier. Maaari nating gamitin ang modelong ito sa eksaktong kaparehong paraan tulad ng paggamit natin ng VGG-16 para sa transfer learning. Maaari kang mag-eksperimento sa code sa itaas, gamit ang iba't ibang ResNet models bilang base model, at tingnan kung paano nagbabago ang accuracy.\n", "\n", "## Batch Normalization\n", "\n", - "Ang network na ito ay naglalaman ng isa pang uri ng layer: **Batch Normalization**. Ang ideya ng batch normalization ay dalhin ang mga halaga na dumadaloy sa neural network sa tamang saklaw. Karaniwan, ang mga neural network ay mas mahusay gumagana kapag ang lahat ng mga halaga ay nasa saklaw na [-1,1] o [0,1], at ito ang dahilan kung bakit natin ini-scale o ini-normalize ang ating input data nang naaayon. Gayunpaman, sa panahon ng training ng isang deep network, maaaring mangyari na ang mga halaga ay lumayo nang husto sa saklaw na ito, na nagiging sanhi ng problema sa training. Ang batch normalization layer ay nagko-compute ng average at standard deviation para sa lahat ng mga halaga ng kasalukuyang minibatch, at ginagamit ang mga ito upang i-normalize ang signal bago ito dumaan sa isang neural network layer. Malaki ang naitutulong nito sa pagpapabuti ng stability ng mga deep networks.\n" + "Ang network na ito ay naglalaman ng isa pang uri ng layer: **Batch Normalization**. Ang ideya ng batch normalization ay dalhin ang mga values na dumadaloy sa neural network sa tamang saklaw. Karaniwang pinakamahusay ang neural networks kapag lahat ng values ay nasa saklaw na [-1,1] o [0,1], at iyon ang dahilan kung bakit sinusukat/nino-normalize natin ang ating input data nang naaayon. Gayunpaman, sa panahon ng training ng isang malalim na network, maaari mangyari na ang mga values ay lumabas nang malaki sa saklaw na ito, na nagiging problema sa training. Ang batch normalization layer ay kinukwenta ang average at standard deviation para sa lahat ng values ng kasalukuyang minibatch, at ginagamit ito upang i-normalize ang signal bago ito ipasa sa isang neural network layer. Ito ay lubos na nagpapabuti sa katatagan ng mga malalim na network.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Pangunahing Punto\n", + "## Pangunahing Aral\n", "\n", - "Gamit ang transfer learning, nagawa nating mabilis na makabuo ng isang classifier para sa ating custom na gawain sa object classification, at nakamit ang mataas na accuracy. Gayunpaman, hindi ganap na patas ang halimbawang ito, dahil ang orihinal na VGG-16 network ay pre-trained na upang makilala ang mga pusa at aso, kaya't karamihan sa mga pattern na ginamit natin ay dati nang nasa network. Maaari mong asahan ang mas mababang accuracy sa mas kakaibang mga domain-specific na bagay, tulad ng mga detalye sa production line sa isang planta, o iba't ibang dahon ng puno.\n", + "Sa paggamit ng transfer learning, nagawa naming mabilis na makabuo ng isang classifier para sa aming pasadyang gawain sa klasipikasyon ng bagay, at makamit ang mataas na katumpakan. Gayunpaman, ang halimbawa na ito ay hindi ganap na patas, dahil ang orihinal na VGG-16 network ay naunang sinanay upang kilalanin ang mga pusa at aso, kaya't nire-reuse lang namin ang karamihan sa mga pattern na naroroon na sa network. Maaari mong asahan ang mas mababang katumpakan sa mas kakaibang espesipikong mga bagay, tulad ng mga detalye sa linya ng produksyon sa isang planta, o sa iba't ibang mga dahon ng puno.\n", "\n", - "Makikita mo na ang mas komplikadong mga gawain na sinusubukan nating lutasin ngayon ay nangangailangan ng mas mataas na computational power, at hindi madaling malutas gamit lamang ang CPU. Sa susunod na unit, susubukan nating gumamit ng mas magaan na implementasyon upang sanayin ang parehong modelo gamit ang mas mababang compute resources, na magreresulta sa bahagyang mas mababang accuracy.\n" + "Makikita mo na ang mas kumplikadong mga gawain na kasalukuyang tinutugunan natin ay nangangailangan ng mas mataas na kapangyarihan sa kompyutasyon, at hindi madaling malutas sa CPU. Sa susunod na yunit, susubukan naming gumamit ng mas magaan na implementasyon upang sanayin ang parehong modelo gamit ang mas mababang mga mapagkukunan sa kompyutasyon, na nagreresulta lamang sa bahagyang mas mababang katumpakan.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Paunawa**: \nAng dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.\n" + "---\n\n\n**Pagtatanggi**:\nAng dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito.\n\n" ] } ], @@ -1482,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-28T03:11:20+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "tl" } }, "nbformat": 4, diff --git a/translations/tl/lessons/5-NLP/README.md b/translations/tl/lessons/5-NLP/README.md index ce80ac6f..310e11bf 100644 --- a/translations/tl/lessons/5-NLP/README.md +++ b/translations/tl/lessons/5-NLP/README.md @@ -1,34 +1,34 @@ -# Natural Language Processing +# Pagproseso ng Likas na Wika ![Buod ng mga gawain sa NLP sa isang doodle](../../../../translated_images/tl/ai-nlp.b22dcb8ca4707cea.webp) -Sa seksyong ito, magtutuon tayo sa paggamit ng Neural Networks upang harapin ang mga gawain na may kaugnayan sa **Natural Language Processing (NLP)**. Maraming mga problema sa NLP na nais nating masolusyunan ng mga computer: +Sa seksyong ito, magtutuon tayo sa paggamit ng Neural Networks upang hawakan ang mga gawain na may kaugnayan sa **Pagproseso ng Likas na Wika (NLP)**. Maraming mga suliranin sa NLP na nais nating kaya ng mga computer na lutasin: -* **Text classification** ay isang karaniwang problema ng klasipikasyon na may kinalaman sa mga text sequence. Halimbawa nito ay ang pag-uuri ng mga e-mail bilang spam o hindi-spam, o ang pag-kategorya ng mga artikulo bilang sports, negosyo, politika, atbp. Gayundin, kapag gumagawa ng chat bots, madalas nating kailangang maunawaan kung ano ang nais sabihin ng isang user -- sa kasong ito, tinutukoy natin ang **intent classification**. Kadalasan, sa intent classification, kailangang harapin ang maraming kategorya. -* **Sentiment analysis** ay isang karaniwang problema ng regression, kung saan kailangan nating magtalaga ng numero (isang damdamin) na tumutukoy kung gaano ka-positibo/negatibo ang kahulugan ng isang pangungusap. Isang mas advanced na bersyon ng sentiment analysis ay ang **aspect-based sentiment analysis** (ABSA), kung saan itinatakda ang damdamin hindi sa buong pangungusap, kundi sa iba't ibang bahagi nito (mga aspeto), halimbawa: *Sa restawran na ito, nagustuhan ko ang pagkain, ngunit ang atmospera ay kakila-kilabot*. -* **Named Entity Recognition** (NER) ay tumutukoy sa problema ng pagkuha ng ilang mga entidad mula sa teksto. Halimbawa, maaaring kailangan nating maunawaan na sa pariralang *Kailangan kong lumipad papuntang Paris bukas* ang salitang *bukas* ay tumutukoy sa DATE, at ang *Paris* ay isang LOCATION. -* **Keyword extraction** ay katulad ng NER, ngunit kailangan nating awtomatikong kunin ang mga salitang mahalaga sa kahulugan ng pangungusap, nang hindi pre-training para sa mga partikular na uri ng entidad. -* **Text clustering** ay maaaring maging kapaki-pakinabang kapag nais nating pagsama-samahin ang mga magkatulad na pangungusap, halimbawa, mga magkatulad na kahilingan sa mga teknikal na suporta. -* **Question answering** ay tumutukoy sa kakayahan ng isang modelo na sagutin ang isang partikular na tanong. Ang modelo ay tumatanggap ng isang text passage at isang tanong bilang input, at kailangang magbigay ng lugar sa teksto kung saan matatagpuan ang sagot sa tanong (o, minsan, bumuo ng sagot na teksto). -* **Text Generation** ay ang kakayahan ng isang modelo na bumuo ng bagong teksto. Maaari itong ituring bilang isang problema ng klasipikasyon na hinuhulaan ang susunod na letra/salita batay sa isang *text prompt*. Ang mga advanced na modelo ng text generation, tulad ng GPT-3, ay kayang lutasin ang iba pang mga gawain sa NLP tulad ng klasipikasyon gamit ang isang teknik na tinatawag na [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Text summarization** ay isang teknik kung saan nais nating "basahin" ng computer ang mahabang teksto at ibuod ito sa ilang pangungusap. -* **Machine translation** ay maaaring tingnan bilang kombinasyon ng pag-unawa sa teksto sa isang wika, at pagbuo ng teksto sa isa pang wika. +* **Pagsusuri ng teksto** ay isang karaniwang problema sa klasipikasyon na may kaugnayan sa mga sekwensya ng teksto. Halimbawa nito ay ang pagklasipika ng mga mensahe sa e-mail bilang spam vs. hindi spam, o pag-uuri ng mga artikulo bilang sports, negosyo, politika, atbp. Kapag nagde-develop ng mga chat bots, madalas kailangan nating maunawaan kung ano ang nais sabihin ng gumagamit -- sa kasong ito ay tinutukoy natin ang **klasipikasyon ng intensyon**. Madalas, sa klasipikasyon ng intensyon kailangan nating harapin ang maraming kategorya. +* **Pagsusuri ng damdamin** ay isang karaniwang problema sa regresyon, kung saan kailangan nating bigyan ng numero (isang damdamin) na tumutukoy kung gaano positibo/negatibo ang kahulugan ng isang pangungusap. Ang mas advanced na bersyon ng pagsusuri ng damdamin ay ang **aspect-based sentiment analysis** (ABSA), kung saan hindi natin binibigyan ng damdamin ang buong pangungusap, kundi ang iba't ibang bahagi nito (mga aspekto), hal. *Sa restawran na ito, nagustuhan ko ang pagkain, pero ang atmospera ay kakila-kilabot*. +* **Pagkilala sa Pangalan na Entidad** (NER) ay tumutukoy sa suliranin ng pagkuha ng ilang mga entidad mula sa teksto. Halimbawa, kailangan nating maunawaan na sa pariralang *Kailangan kong lumipad papuntang Paris bukas* ang salitang *bukas* ay tumutukoy sa PETSA, at ang *Paris* ay isang LUGAR. +* **Pagkuha ng mga pangunahing salita** ay kahawig ng NER, ngunit kailangan nating awtomatikong kunin ang mga salitang mahalaga sa kahulugan ng pangungusap, nang walang paunang pagsasanay para sa tiyak na mga uri ng entidad. +* **Pagpangkat-pangkat ng teksto** ay maaaring maging kapaki-pakinabang kapag nais nating pagsamahin ang mga magkatulad na pangungusap, halimbawa, mga magkatulad na kahilingan sa mga usapan sa suporta sa teknikal. +* **Pagsagot sa mga tanong** ay tumutukoy sa kakayahan ng isang modelo na sagutin ang isang partikular na tanong. Tumatanggap ang modelo ng isang teksto at isang tanong bilang mga input, at kailangan nitong ibigay ang lugar sa teksto kung saan nakapaloob ang sagot sa tanong (o, minsan, lumikha ng sagot na teksto). +* **Pagbuo ng Teksto** ay ang kakayahan ng isang modelo na bumuo ng bagong teksto. Maaari itong ituring bilang isang gawain sa klasipikasyon na nagpapredict ng susunod na titik/salita base sa ilang *text prompt*. Ang mga advanced na modelo ng pagbuo ng teksto, tulad ng GPT-3, ay kaya ring lutasin ang ibang mga gawain sa NLP tulad ng klasipikasyon gamit ang teknik na tinatawag na [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) +* **Pagbubuod ng teksto** ay isang teknik kung kailan nais nating ang computer na "basahin" ang mahabang teksto at ibuod ito sa ilang pangungusap. +* **Pagsasalin ng makina** ay maaaring tingnan bilang kumbinasyon ng pag-unawa sa teksto sa isang wika, at pagbuo ng teksto sa ibang wika. -Noong una, karamihan sa mga gawain sa NLP ay nalulutas gamit ang mga tradisyunal na pamamaraan tulad ng mga grammar. Halimbawa, sa machine translation, ginagamit ang mga parser upang gawing syntax tree ang orihinal na pangungusap, pagkatapos ay kinukuha ang mas mataas na antas ng mga semantikong istruktura upang kumatawan sa kahulugan ng pangungusap, at batay sa kahulugang ito at grammar ng target na wika, nabubuo ang resulta. Sa kasalukuyan, maraming gawain sa NLP ang mas epektibong nalulutas gamit ang neural networks. +Noong una, karamihan sa mga gawain sa NLP ay nilulutas gamit ang mga tradisyunal na pamamaraan gaya ng gramatika. Halimbawa, sa pagsasalin ng makina ginagamit ang mga parser upang i-transform ang unang pangungusap sa isang syntax tree, pagkatapos ay ini-extract ang mga mas mataas na antas ng semantikong istruktura upang kumatawan sa kahulugan ng pangungusap, at base sa kahulugang ito at sa gramatika ng target na wika, ginagawa ang resulta. Ngayon, marami nang mga gawain sa NLP ang mas epektibong nalulutas gamit ang mga neural networks. -> Maraming mga klasikong pamamaraan sa NLP ang naipatupad sa [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python library. Mayroong mahusay na [NLTK Book](https://www.nltk.org/book/) na makukuha online na tumatalakay kung paano malulutas ang iba't ibang gawain sa NLP gamit ang NLTK. +> Maraming klasikal na pamamaraan ng NLP ang ipinatupad sa [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) na Python library. Mayroong mahusay na [NLTK Book](https://www.nltk.org/book/) na libre at online na nagpapakita kung paano malulutas ang iba't ibang gawain sa NLP gamit ang NLTK. -Sa ating kurso, magtutuon tayo sa paggamit ng Neural Networks para sa NLP, at gagamitin ang NLTK kung kinakailangan. +Sa aming kurso, karamihan ay magtutuon kami sa paggamit ng Neural Networks para sa NLP, at gagamit kami ng NLTK kung kinakailangan. -Natuto na tayo tungkol sa paggamit ng neural networks para sa pagproseso ng tabular data at mga imahe. Ang pangunahing pagkakaiba sa pagitan ng mga uri ng data na iyon at ng teksto ay ang teksto ay isang sequence na may variable na haba, habang ang laki ng input sa kaso ng mga imahe ay alam na sa simula pa lang. Habang ang convolutional networks ay kayang kumuha ng mga pattern mula sa input data, ang mga pattern sa teksto ay mas kumplikado. Halimbawa, maaaring may negasyon na hiwalay sa paksa ng maraming salita (hal. *Hindi ko gusto ang mga dalandan*, kumpara sa *Hindi ko gusto ang mga malalaki, makukulay, at masarap na dalandan*), at dapat pa rin itong ma-interpret bilang isang pattern. Kaya, upang ma-handle ang wika, kailangan nating magpakilala ng mga bagong uri ng neural network, tulad ng *recurrent networks* at *transformers*. +Natutunan na natin ang paggamit ng neural networks para sa paghawak ng mga tabular na datos at mga imahe. Ang pangunahing pagkakaiba sa pagitan ng mga uri ng datos na iyon at teksto ay ang teksto ay isang sekwensya na may pabago-bagong haba, samantalang ang sukat ng input sa kaso ng mga imahe ay alam na agad. Habang kayang mag-extract ng mga pattern mula sa input data ang mga convolutional network, mas kumplikado ang mga pattern sa teksto. Halimbawa, maaaring malayo sa paksa ang negation kahit ilang salita ang pagitan nito (hal. *Hindi ko gusto ang mga orange*, vs. *Hindi ko gusto ang mga malalaki, makukulay, at masarap na orange*), at ito ay dapat ituring pa rin bilang isang pattern. Kaya, upang hawakan ang wika, kailangan nating ipakilala ang mga bagong uri ng neural network, gaya ng *recurrent networks* at *transformers*. -## Pag-install ng mga Library +## Mag-install ng mga Library -Kung gumagamit ka ng lokal na Python installation para patakbuhin ang kursong ito, maaaring kailangan mong i-install ang lahat ng kinakailangang library para sa NLP gamit ang mga sumusunod na command: +Kung gumagamit ka ng lokal na Python na pag-install para patakbuhin ang kursong ito, maaaring kailanganin mong i-install ang lahat ng kinakailangang mga library para sa NLP gamit ang mga sumusunod na utos: **Para sa PyTorch** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.txt ``` **Para sa TensorFlow** ```bash @@ -39,13 +39,13 @@ pip install -r requirements-tf.txt ## Babala sa GPU -Sa seksyong ito, sa ilang mga halimbawa ay magte-train tayo ng medyo malalaking modelo. -* **Gumamit ng Computer na May GPU**: Inirerekomenda na patakbuhin ang iyong mga notebook sa isang computer na may GPU upang mabawasan ang oras ng paghihintay kapag nagtatrabaho sa malalaking modelo. -* **Mga Limitasyon sa GPU Memory**: Ang paggamit ng GPU ay maaaring magdulot ng mga sitwasyon kung saan nauubusan ka ng GPU memory, lalo na kapag nagtetrain ng malalaking modelo. -* **Konsumo ng GPU Memory**: Ang dami ng GPU memory na nagagamit sa panahon ng training ay nakadepende sa iba't ibang salik, kabilang ang laki ng minibatch. -* **Bawasan ang Laki ng Minibatch**: Kung makakaranas ka ng mga isyu sa GPU memory, isaalang-alang ang pagbabawas ng laki ng minibatch sa iyong code bilang posibleng solusyon. -* **Paglabas ng GPU Memory sa TensorFlow**: Ang mga mas lumang bersyon ng TensorFlow ay maaaring hindi maglabas ng GPU memory nang tama kapag nagtetrain ng maraming modelo sa loob ng isang Python kernel. Upang epektibong pamahalaan ang paggamit ng GPU memory, maaari mong i-configure ang TensorFlow upang maglaan lamang ng GPU memory kung kinakailangan. -* **Pagdaragdag ng Code**: Upang itakda ang TensorFlow na palakihin ang GPU memory allocation lamang kung kinakailangan, idagdag ang sumusunod na code sa iyong mga notebook: +Sa seksyong ito, sa ilang mga halimbawa ay magta-train tayo ng medyo malalaking modelo. +* **Gumamit ng Computer na may GPU**: Inirerekomenda na patakbuhin ang iyong mga notebook sa computer na may GPU upang mabawasan ang paghihintay kapag nagtatrabaho sa malalaking modelo. +* **Mga Limitasyon sa GPU Memory**: Ang pagpapatakbo sa GPU ay maaaring magdulot ng kakulangan sa GPU memory, lalo na kapag nagtatrabaho sa malalaking modelo. +* **Pagkonsumo ng GPU Memory**: Ang dami ng GPU memory na nagagamit habang nagtatrabaho ay depende sa iba't ibang salik, kabilang ang laki ng minibatch. +* **Bawasan ang Laki ng Minibatch**: Kung makakaranas ka ng mga isyu sa GPU memory, subukang bawasan ang laki ng minibatch sa iyong code bilang posibleng solusyon. +* **Pagpapalabas ng TensorFlow GPU Memory**: Ang mga mas lumang bersyon ng TensorFlow ay maaaring hindi maayos na maglabas ng GPU memory kapag nagtatrabaho sa maraming modelo sa loob ng isang Python kernel. Upang maayos na pamahalaan ang paggamit ng GPU memory, maaari mong i-configure ang TensorFlow upang maglaan lamang ng GPU memory kung kinakailangan. +* **Pagsasama ng Code**: Para maiset ang TensorFlow na unti-unting dagdagan lamang ang alokasyon ng GPU memory kung kinakailangan, isama ang sumusunod na code sa iyong mga notebook: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,19 +53,21 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Kung interesado kang matuto tungkol sa NLP mula sa klasikong ML na perspektibo, bisitahin ang [suite ng mga araling ito](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) +Kung interesado kang matuto tungkol sa NLP mula sa klasikal na pananaw ng ML, bisitahin ang [suite ng mga leksyon na ito](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ## Sa Seksiyong Ito -Sa seksyong ito, matututo tayo tungkol sa: +Sa seksyong ito ay matututuhan natin ang tungkol sa: -* [Pagre-representa ng teksto bilang tensors](13-TextRep/README.md) -* [Word Embeddings](14-Emdeddings/README.md) -* [Language Modeling](15-LanguageModeling/README.md) -* [Recurrent Neural Networks](16-RNN/README.md) -* [Generative Networks](17-GenerativeNetworks/README.md) -* [Transformers](18-Transformers/README.md) +* [Pagre-representa ng teksto bilang mga tensor](13-TextRep/README.md) +* [Mga Word Embeddings](14-Emdeddings/README.md) +* [Pagmomodelo ng Wika](15-LanguageModeling/README.md) +* [Mga Recurrent Neural Network](16-RNN/README.md) +* [Mga Generative Network](17-GenerativeNetworks/README.md) +* [Mga Transformer](18-Transformers/README.md) --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/lessons/sketchnotes/LICENSE.md b/translations/tl/lessons/sketchnotes/LICENSE.md index 49a306d7..e4d06962 100644 --- a/translations/tl/lessons/sketchnotes/LICENSE.md +++ b/translations/tl/lessons/sketchnotes/LICENSE.md @@ -2,117 +2,437 @@ Attribution-ShareAlike 4.0 International ======================================================================= -Ang Creative Commons Corporation ("Creative Commons") ay hindi isang law firm at hindi nagbibigay ng legal na serbisyo o payo. Ang pamamahagi ng mga pampublikong lisensya ng Creative Commons ay hindi lumilikha ng relasyon sa pagitan ng abogado at kliyente o anumang iba pang relasyon. Ginagawa ng Creative Commons na magagamit ang mga lisensya nito at kaugnay na impormasyon sa isang "as-is" na batayan. Walang garantiya ang Creative Commons tungkol sa mga lisensya nito, anumang materyal na lisensyado sa ilalim ng kanilang mga tuntunin at kundisyon, o anumang kaugnay na impormasyon. Tinatanggihan ng Creative Commons ang lahat ng pananagutan para sa mga pinsalang dulot ng paggamit ng mga ito sa pinakamalawak na saklaw na posible. +Ang Creative Commons Corporation ("Creative Commons") ay hindi isang firmang legal at +hindi nagbibigay ng mga serbisyong legal o payong legal. Ang pamamahagi ng +mga pampublikong lisensya ng Creative Commons ay hindi lumilikha ng relasyon sa pagitan ng abogado at kliyente o +iba pang relasyon. Ginagawa ng Creative Commons ang mga lisensya nito at kaugnay na +impormasyon na available sa "as-is" na kondisyon. Walang ibinibigay na +garantiya ang Creative Commons tungkol sa mga lisensya nito, anumang materyal na lisensyado sa ilalim ng kanilang +mga termino at kundisyon, o anumang kaugnay na impormasyon. Tinatanggihan ng Creative Commons +ang lahat ng pananagutan para sa mga pinsala na nagreresulta mula sa paggamit ng mga ito sa pinaka-malawak na posibleng lawak. -Paggamit ng mga Pampublikong Lisensya ng Creative Commons -Ang mga pampublikong lisensya ng Creative Commons ay nagbibigay ng karaniwang hanay ng mga tuntunin at kundisyon na maaaring gamitin ng mga tagalikha at iba pang may hawak ng karapatan upang ibahagi ang mga orihinal na gawa ng may-akda at iba pang materyal na sakop ng copyright at ilang iba pang karapatan na tinukoy sa pampublikong lisensya sa ibaba. Ang mga sumusunod na konsiderasyon ay para lamang sa layuning pang-impormasyon, hindi kumpleto, at hindi bahagi ng aming mga lisensya. +Paggamit ng Creative Commons Public Licenses - Mga konsiderasyon para sa mga tagapaglisensya: Ang aming mga pampublikong lisensya ay nilalayon para sa paggamit ng mga may awtoridad na magbigay ng pahintulot sa publiko na gamitin ang materyal sa mga paraang kung hindi man ay pinaghihigpitan ng copyright at ilang iba pang karapatan. Ang aming mga lisensya ay hindi mababawi. Dapat basahin at unawain ng mga tagapaglisensya ang mga tuntunin at kundisyon ng lisensyang kanilang pinili bago ito ilapat. Dapat din nilang tiyakin ang lahat ng kinakailangang karapatan bago ilapat ang aming mga lisensya upang magamit ng publiko ang materyal ayon sa inaasahan. Dapat malinaw na markahan ng mga tagapaglisensya ang anumang materyal na hindi sakop ng lisensya. Kasama rito ang iba pang materyal na lisensyado ng CC, o materyal na ginamit sa ilalim ng isang eksepsyon o limitasyon sa copyright. Higit pang mga konsiderasyon para sa mga tagapaglisensya: +Ang mga pampublikong lisensya ng Creative Commons ay nagbibigay ng isang standard na set ng mga termino at +kundisyon na maaaring gamitin ng mga tagalikha at iba pang may hawak ng karapatan upang ibahagi +ang orihinal na mga gawa ng pagsulat at iba pang materyal na sakop ng copyright +at ilang iba pang mga karapatan na tinukoy sa pampublikong lisensya sa ibaba. Ang +mga sumusunod na konsiderasyon ay para lamang sa layuning pang-impormasyon, hindi +kompleto, at hindi bahagi ng aming mga lisensya. + + Mga konsiderasyon para sa mga nagbibigay ng lisensya: Ang aming mga pampublikong lisensya ay + nilalayong gamitin ng mga awtorisadong magbigay sa publiko ng + pahintulot upang gamitin ang materyal sa mga paraang karaniwang ipinagbabawal ng + copyright at ilang ibang karapatan. Ang aming mga lisensya ay + hindi na mababawi. Dapat basahin at unawain ng mga nagbigay ng lisensya ang mga termino + at kundisyon ng lisensya na kanilang pipiliin bago ito ilapat. + Dapat ding tiyakin ng mga nagbigay ng lisensya na makuha nila ang lahat ng kinakailangang karapatan bago + ilapat ang aming mga lisensya upang ang publiko ay maaaring muling gamitin ang + materyal ayon sa inaasahan. Dapat malinaw na markahan ng mga nagbigay ng lisensya ang anumang + materyal na hindi sakop ng lisensya. Kabilang dito ang iba pang mga materyal na may lisensya mula sa CC, + o materyal na ginamit sa ilalim ng isang eksepsyon o + limitasyon sa copyright. Karagdagang mga konsiderasyon para sa mga nagbigay ng lisensya: wiki.creativecommons.org/Considerations_for_licensors - Mga konsiderasyon para sa publiko: Sa paggamit ng isa sa aming mga pampublikong lisensya, binibigyan ng tagapaglisensya ang publiko ng pahintulot na gamitin ang lisensyadong materyal sa ilalim ng mga tinukoy na tuntunin at kundisyon. Kung ang pahintulot ng tagapaglisensya ay hindi kinakailangan para sa anumang dahilan—halimbawa, dahil sa anumang naaangkop na eksepsyon o limitasyon sa copyright—ang paggamit na iyon ay hindi sakop ng lisensya. Ang aming mga lisensya ay nagbibigay lamang ng mga pahintulot sa ilalim ng copyright at ilang iba pang karapatan na may awtoridad ang tagapaglisensya na ipagkaloob. Ang paggamit ng lisensyadong materyal ay maaari pa ring mapigilan dahil sa iba pang mga dahilan, kabilang ang dahil sa may hawak ng copyright o iba pang karapatan sa materyal. Maaaring magbigay ang isang tagapaglisensya ng mga espesyal na kahilingan, tulad ng pagmamarka o paglalarawan ng lahat ng pagbabago. Bagama't hindi kinakailangan ng aming mga lisensya, hinihikayat kang igalang ang mga kahilingang iyon kung makatwiran. Higit pang mga konsiderasyon para sa publiko: + Mga konsiderasyon para sa publiko: Sa paggamit ng isa sa aming mga pampublikong + lisensya, nagbibigay ang nagbigay ng lisensya ng pahintulot sa publiko na gamitin ang + lisensyadong materyal sa ilalim ng tinukoy na mga termino at kundisyon. Kung + ang pahintulot ng nagbigay ng lisensya ay hindi kailangan para sa anumang dahilan--halimbawa, + dahil sa anumang naaangkop na eksepsyon o limitasyon sa + copyright--hindi nasasaklawan ng lisensya ang paggamit na iyon. Ang aming mga + lisensya ay nagbigay lamang ng mga pahintulot sa ilalim ng copyright at ilang + iba pang mga karapatan na may awtoridad ang nagbigay ng lisensya na ipagkaloob. + Ang paggamit ng lisensyadong materyal ay maaaring pa ring limitado dahil sa + iba pang mga dahilan, kabilang ang pagkakaroon ng ibang tao ng copyright o iba pang + karapatan sa materyal na iyon. Maaaring magkaroon ng mga espesyal na kahilingan ang nagbigay ng lisensya, + tulad ng paghingi na lahat ng pagbabago ay markahan o ilarawan. + Bagamat hindi kinakailangan sa aming mga lisensya, hinihikayat ka naming + respetuhin ang mga kahilingang iyon kung makatwiran. Karagdagang_konsiderasyon + para sa publiko: wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Creative Commons Attribution-ShareAlike 4.0 International Public License +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +Sa pamamagitan ng paggamit ng mga Lisensyadong Karapatan (na tinukoy sa ibaba), Tinatanggap mo at sumasang-ayon +kang masunod ang mga termino at kundisyon ng Creative Commons na ito +Attribution-ShareAlike 4.0 International Public License ("Pampublikong +Lisensya"). Kung ang Pampublikong Lisensya na ito ay maaari ngang bigyan-kahulugan bilang isang +kontrata, ipinagkakaloob sa iyo ang mga Lisensyadong Karapatan bilang kapalit ng iyong +pagtanggap sa mga termini at kundisyong ito, at ang Nagbigay ng Lisensya ay pinagkakalooban ka ng +ganoong mga karapatan bilang kapalit ng mga benepisyo na natatanggap ng Nagbigay ng Lisensya mula +sa pagbibigay ng Lisensyadong Materyal sa ilalim ng mga terminong ito at mga +kundisyon. -Sa paggamit ng Lisensyadong Karapatan (na tinukoy sa ibaba), Tinatanggap Mo at sumasang-ayon Kang sumunod sa mga tuntunin at kundisyon ng Creative Commons Attribution-ShareAlike 4.0 International Public License ("Pampublikong Lisensya"). Sa lawak na maaaring ipakahulugan ang Pampublikong Lisensyang ito bilang isang kontrata, Ikaw ay binibigyan ng Lisensyadong Karapatan bilang kapalit ng Iyong pagtanggap sa mga tuntunin at kundisyon na ito, at binibigyan Ka ng Tagapaglisensya ng mga karapatang iyon bilang kapalit ng mga benepisyong natatanggap ng Tagapaglisensya mula sa paggawa ng Lisensyadong Materyal na magagamit sa ilalim ng mga tuntunin at kundisyon na ito. Seksyon 1 -- Mga Depinisyon. - a. Ang Adapted Material ay tumutukoy sa materyal na sakop ng Copyright at Katulad na Karapatan na hinango mula o batay sa Lisensyadong Materyal at kung saan ang Lisensyadong Materyal ay isinalin, binago, inayos, binago, o kung hindi man ay inedit sa paraang nangangailangan ng pahintulot sa ilalim ng Copyright at Katulad na Karapatan na hawak ng Tagapaglisensya. Para sa layunin ng Pampublikong Lisensyang ito, kung ang Lisensyadong Materyal ay isang musikal na gawa, pagtatanghal, o pag-record ng tunog, ang Adapted Material ay palaging ginagawa kung ang Lisensyadong Materyal ay naka-synchronize sa tamang oras na may kaugnayan sa isang gumagalaw na imahe. + a. Ang Adapted Material ay tumutukoy sa materyal na saklaw ng Copyright at Mga Katulad na + Karapatan na nagmula o batay sa Lisensyadong Materyal + at kung saan ang Lisensyadong Materyal ay isinalin, binago, + inayos, inilipat, o kung hindi man binago sa paraang nangangailangan ng + pahintulot sa ilalim ng Copyright at Mga Katulad na Karapatang hawak ng + Nagbigay ng Lisensya. Para sa layunin ng Pampublikong Lisensyang ito, kung ang Lisensyadong + Materyal ay isang gawa sa musika, pagtatanghal, o recording ng tunog, + ang Adapted Material ay palaging nalilikha kapag ang Lisensyadong Materyal ay + isinakto sa timing kasama ng gumagalaw na imahe. - b. Ang Adapter's License ay tumutukoy sa lisensyang inilalapat Mo sa Iyong Copyright at Katulad na Karapatan sa Iyong mga kontribusyon sa Adapted Material alinsunod sa mga tuntunin at kundisyon ng Pampublikong Lisensyang ito. + b. Ang Adapter's License ay tumutukoy sa lisensya na iyong inilalapat sa iyong Copyright + at Mga Katulad na Karapatan sa iyong mga kontribusyon sa Adapted Material + alinsunod sa mga termino at kundisyon ng Pampublikong Lisensyang ito. - c. Ang BY-SA Compatible License ay tumutukoy sa lisensyang nakalista sa - creativecommons.org/compatiblelicenses, na inaprubahan ng Creative Commons bilang mahalagang katumbas ng Pampublikong Lisensyang ito. + c. Ang BY-SA Compatible License ay isang lisensya na nakalista sa + creativecommons.org/compatiblelicenses, na inaprobahan ng Creative + Commons bilang halos katumbas ng Pampublikong Lisensyang ito. - d. Ang Copyright at Katulad na Karapatan ay tumutukoy sa copyright at/o mga karapatang katulad ng copyright kabilang, ngunit hindi limitado sa, pagtatanghal, pag-broadcast, pag-record ng tunog, at Sui Generis Database Rights, anuman ang label o kategorya ng mga karapatan. Para sa layunin ng Pampublikong Lisensyang ito, ang mga karapatang tinukoy sa Seksyon 2(b)(1)-(2) ay hindi sakop ng Copyright at Katulad na Karapatan. + d. Ang Copyright at Mga Katulad na Karapatan ay tumutukoy sa copyright at/o mga karapatang + malapit na kaugnay ng copyright kabilang, ngunit hindi limitado sa, + pagtatanghal, pagbroadcast, recording ng tunog, at mga Sui Generis Database + Karapatan, nang walang pagsasaalang-alang kung paano tinatawag o + kinategorya ang mga karapatan. Para sa layunin ng Pampublikong Lisensyang ito, ang mga karapatan + na tinukoy sa Seksyon 2(b)(1)-(2) ay hindi Copyright at Mga Katulad na + Karapatan. - e. Ang Effective Technological Measures ay tumutukoy sa mga hakbang na, sa kawalan ng wastong awtoridad, ay hindi maaaring lampasan sa ilalim ng mga batas na tumutupad sa mga obligasyon sa ilalim ng Artikulo 11 ng WIPO Copyright Treaty na pinagtibay noong Disyembre 20, 1996, at/o mga katulad na internasyonal na kasunduan. + e. Ang Effective Technological Measures ay tumutukoy sa mga hakbang na, sa + kawalan ng wastong awtoridad, ay hindi maaaring lusutan alinsunod sa mga batas + na nagtatakda ng obligasyon sa ilalim ng Artikulo 11 ng WIPO Copyright + Treaty na inaprobahan noong Disyembre 20, 1996, at/o mga katulad na + pandaigdigang kasunduan. - f. Ang Exceptions and Limitations ay tumutukoy sa patas na paggamit, patas na pakikitungo, at/o anumang iba pang eksepsyon o limitasyon sa Copyright at Katulad na Karapatan na naaangkop sa Iyong paggamit ng Lisensyadong Materyal. + f. Ang Exceptions and Limitations ay tumutukoy sa fair use, fair dealing, at/o + anumang iba pang eksepsyon o limitasyon sa Copyright at Mga Katulad na Karapatan + na nalalapat sa iyong paggamit ng Lisensyadong Materyal. - g. Ang License Elements ay tumutukoy sa mga katangian ng lisensya na nakalista sa pangalan ng isang Pampublikong Lisensya ng Creative Commons. Ang mga Elemento ng Lisensya ng Pampublikong Lisensyang ito ay Attribution at ShareAlike. + g. License Elements ay tumutukoy sa mga attribute ng lisensya na nakalista sa pangalan + ng isang Creative Commons Public License. Ang mga License Elements ng + Pampublikong Lisensyang ito ay Attribution at ShareAlike. - h. Ang Licensed Material ay tumutukoy sa artistikong o pampanitikang gawa, database, o iba pang materyal kung saan inilapat ng Tagapaglisensya ang Pampublikong Lisensyang ito. + h. Ang Lisensyadong Materyal ay tumutukoy sa artistiko o panitikan na gawa, database, + o iba pang materyal kung saan inilapat ng Nagbigay ng Lisensya ang Pampublikong + Lisensyang ito. - i. Ang Licensed Rights ay tumutukoy sa mga karapatang ipinagkaloob sa Iyo na sakop ng mga tuntunin at kundisyon ng Pampublikong Lisensyang ito, na limitado sa lahat ng Copyright at Katulad na Karapatan na naaangkop sa Iyong paggamit ng Lisensyadong Materyal at na may awtoridad ang Tagapaglisensya na lisensyahan. + i. Ang Lisensyadong Karapatan ay tumutukoy sa mga karapatang ipinagkaloob sa iyo alinsunod sa + mga termino at kundisyon ng Pampublikong Lisensyang ito, na limitado sa + lahat ng Copyright at Mga Katulad na Karapatan na nalalapat sa iyong paggamit ng + Lisensyadong Materyal at na may awtoridad ang Nagbigay ng Lisensya na ipagkaloob. - j. Ang Licensor ay tumutukoy sa indibidwal o entidad na nagbibigay ng mga karapatan sa ilalim ng Pampublikong Lisensyang ito. + j. Ang Nagbigay ng Lisensya ay tumutukoy sa mga indibidwal o entidad na nagbibigay ng mga karapatan + sa ilalim ng Pampublikong Lisensyang ito. - k. Ang Share ay tumutukoy sa pagbibigay ng materyal sa publiko sa anumang paraan o proseso na nangangailangan ng pahintulot sa ilalim ng Lisensyadong Karapatan, tulad ng reproduksyon, pampublikong pagpapakita, pampublikong pagtatanghal, pamamahagi, pagpapalaganap, komunikasyon, o pag-import, at paggawa ng materyal na magagamit sa publiko kabilang ang sa mga paraang maaaring ma-access ng mga miyembro ng publiko ang materyal mula sa isang lugar at sa oras na indibidwal nilang pinili. + k. Ang Share ay tumutukoy sa pagbibigay ng materyal sa publiko sa anumang paraan o + proseso na nangangailangan ng pahintulot sa ilalim ng mga Lisensyadong Karapatan, tulad ng + reproduksyon, pampublikong pagpapakita, pampublikong pagtatanghal, pamamahagi, + pagkalat, komunikasyon, o pag-angkat, at paggawa ng materyal na + available sa publiko kabilang ang paraang maaaring ma-access ng mga miyembro ng + publiko ang materyal mula sa isang lugar at sa isang oras na + pinili nila nang paisa-isa. - l. Ang Sui Generis Database Rights ay tumutukoy sa mga karapatan maliban sa copyright na nagmumula sa Directive 96/9/EC ng European Parliament at ng Council noong Marso 11, 1996 sa legal na proteksyon ng mga database, na binago at/o pinalitan, pati na rin ang iba pang mahalagang katumbas na karapatan saanman sa mundo. + l. Ang Sui Generis Database Rights ay tumutukoy sa mga karapatan bukod sa copyright + na nagreresulta mula sa Directive 96/9/EC ng European Parliament at ng + Council noong 11 Marso 1996 sa legal na proteksyon ng mga database, + na inamyendahan at/o pinalitan, pati na rin ang iba pang + halos katumbas na karapatan kahit saan sa mundo. - m. Ang You ay tumutukoy sa indibidwal o entidad na gumagamit ng Lisensyadong Karapatan sa ilalim ng Pampublikong Lisensyang ito. Ang Your ay may kaukulang kahulugan. + m. Ikaw ay tumutukoy sa indibidwal o entidad na gumagamit ng mga Lisensyadong Karapatan + sa ilalim ng Pampublikong Lisensyang ito. Ang iyong ay may kaukulang kahulugan. -Mga Karapatan, pagkatapos ang database kung saan mayroon kang Sui Generis Database Rights (ngunit hindi ang mga indibidwal na nilalaman nito) ay Adapted Material, +Seksyon 2 -- Saklaw. -kasama para sa mga layunin ng Seksyon 3(b); at -c. Dapat kang sumunod sa mga kundisyon sa Seksyon 3(a) kung ibabahagi mo ang lahat o isang malaking bahagi ng nilalaman ng database. -Para sa kalinawan, ang Seksyon 4 na ito ay nagdaragdag at hindi pumapalit sa iyong mga obligasyon sa ilalim ng Pampublikong Lisensyang ito kung saan ang Lisensyadong Mga Karapatan ay kinabibilangan ng iba pang Copyright at Katulad na Mga Karapatan. + a. Pagbibigay ng lisensya. ---- + 1. Alinsunod sa mga tuntunin at kundisyon ng Pampublikong Lisensyang ito, + ipinagkakaloob ng Nagbibigay ng Lisensya sa Iyo ang isang pandaigdigan, + walang-royalty, hindi maaaring ipasa sa iba, hindi-eksklusibo, at hindi na + maaaring bawiing lisensya upang maisakatuparan ang mga Lisensyadong Karapatan sa -Seksyon 5 -- Pagtanggi sa Mga Warranty at Limitasyon ng Pananagutan. -a. MALIBAN KUNG HIWALAY NA INILAHAD NG TAGAPAGLISENSYA, SA ABOT NG POSIBLE, INIHAHANDOG NG TAGAPAGLISENSYA ANG LISENSYADONG MATERYAL NA "AS-IS" AT "AS-AVAILABLE," AT WALANG ANUMANG REPRESENTASYON O WARRANTY TUNGKOL SA LISENSYADONG MATERYAL, KUNG ITO MAN AY HAYAG, IPINAHIWATIG, STATUTORY, O IBA PA. KASAMA DITO, WALANG LIMITASYON, ANG MGA WARRANTY NG TITULO, KAKAYAHANG MAIBENTA, ANGKOP PARA SA ISANG PARTIKULAR NA LAYUNIN, HINDI PAGLABAG, KAWALAN NG LATENT O IBA PANG DEPEKTO, KATUMPAKAN, O ANG PRESENSYA O KAWALAN NG MGA ERROR, KUNG ALAM O NATUKLASAN MAN. KUNG SAAN ANG MGA PAGTANGGI SA MGA WARRANTY AY HINDI PINAPAYAGAN NG BUO O BAHAGI, ANG PAGTANGGI NA ITO AY MAARING HINDI MAG-APLAY SA IYO. + a. kopyahin at Ibahagi ang Lisensyadong Materyal, buo man o -b. SA ABOT NG POSIBLE, SA ANUMANG PANGYAYARI, ANG TAGAPAGLISENSYA AY HINDI MANANAGOT SA IYO SA ANUMANG LEGAL NA TEORYA (KASAMA, WALANG LIMITASYON, ANG KAPABAYAAN) O IBA PA PARA SA ANUMANG DIREKTA, ESPESYAL, HINDI DIREKTA, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLAR, O IBA PANG PAGKAWALA, GASTOS, GASTUSIN, O PINSALA NA NAGMULA SA PAMPUBLIKONG LISENSYANG ITO O PAGGAMIT NG LISENSYADONG MATERYAL, KAHIT NA ANG TAGAPAGLISENSYA AY NAABISUHAN TUNGKOL SA POSIBILIDAD NG GANITONG PAGKAWALA, GASTOS, GASTUSIN, O PINSALA. KUNG SAAN ANG LIMITASYON NG PANANAGUTAN AY HINDI PINAPAYAGAN NG BUO O BAHAGI, ANG LIMITASYON NA ITO AY MAARING HINDI MAG-APLAY SA IYO. -c. Ang pagtanggi sa mga warranty at limitasyon ng pananagutan na ibinigay sa itaas ay dapat ipakahulugan sa paraang, sa abot ng posibleng paraan, pinakamalapit na nagtatantya sa isang ganap na pagtanggi at pagwawaksi ng lahat ng pananagutan. ---- -Seksyon 6 -- Tagal at Pagwawakas. + 2. Mga Pagbubukod at Limitasyon. Upang maiwasan ang pagdududa, kung saan + naaangkop ang Mga Pagbubukod at Limitasyon sa Iyong paggamit, ang Pampublikong + Lisensyang ito ay hindi nalalapat, at hindi mo kailangang sumunod sa -a. Ang Pampublikong Lisensyang ito ay nalalapat sa tagal ng Copyright at Katulad na Mga Karapatan na lisensyado dito. Gayunpaman, kung hindi ka sumunod sa Pampublikong Lisensyang ito, ang iyong mga karapatan sa ilalim ng Pampublikong Lisensyang ito ay awtomatikong magwawakas. -b. Kung saan ang iyong karapatan na gamitin ang Lisensyadong Materyal ay natapos sa ilalim ng Seksyon 6(a), ito ay muling ibinabalik: + 3. Panahon. Ang panahon ng Pampublikong Lisensyang ito ay tinutukoy sa Seksyon -1. awtomatiko mula sa petsa ng pagwawasto ng paglabag, basta't ito ay naitama sa loob ng 30 araw mula sa iyong pagkakatuklas ng paglabag; o -2. sa pamamagitan ng hayagang muling pagbibigay ng karapatan ng Tagapaglisensya. -Para sa kalinawan, ang Seksyon 6(b) na ito ay hindi nakakaapekto sa anumang karapatan ng Tagapaglisensya na maghanap ng remedyo para sa iyong mga paglabag sa Pampublikong Lisensyang ito. + 4. Mga media at format; pinapayagan ang teknikal na mga pagbabago. Pinahihintulutan + ng Nagbibigay ng Lisensya na gamitin Mo ang mga Lisensyadong Karapatan sa + lahat ng media at format maging ang mga kilala na o gagawin pa lamang, + at gumawa ng teknikal na mga pagbabago na kinakailangan upang magawa ito. Tinatanggihan + at/o pumapayag ang Nagbibigay ng Lisensya na huwag ipatupad ang anumang karapatan o + awtoridad upang ipagbawal sa Iyo ang paggawa ng mga teknikal na pagbabago + na kinakailangan upang maisakatuparan ang mga Lisensyadong Karapatan, kabilang na + ang mga teknikal na pagbabago na kinakailangan upang talunin ang Epektibong + Makatolohikal na Pamamaraan. Para sa layunin ng Pampublikong Lisensyang ito, + ang simpleng paggawa ng mga pagbabago na pinahihintulutan ng Seksyon 2(a) -c. Para sa kalinawan, ang Tagapaglisensya ay maaari ring mag-alok ng Lisensyadong Materyal sa ilalim ng hiwalay na mga termino o kundisyon o itigil ang pamamahagi ng Lisensyadong Materyal anumang oras; gayunpaman, ang paggawa nito ay hindi magwawakas sa Pampublikong Lisensyang ito. -d. Ang mga Seksyon 1, 5, 6, 7, at 8 ay nananatili pagkatapos ng pagwawakas ng Pampublikong Lisensyang ito. ---- -Seksyon 7 -- Iba Pang Mga Tuntunin at Kundisyon. + a. Alok mula sa Nagbibigay ng Lisensya -- Lisensyadong Materyal. Bawat + tumatanggap ng Lisensyadong Materyal ay awtomatikong + tumatanggap ng alok mula sa Nagbibigay ng Lisensya na gamitin ang + mga Lisensyadong Karapatan alinsunod sa mga tuntunin at kundisyon ng -a. Ang Tagapaglisensya ay hindi obligado sa anumang karagdagang o magkaibang mga tuntunin o kundisyon na ipinahayag ng Iyo maliban kung hayagang sinang-ayunan. -b. Anumang mga kaayusan, pag-unawa, o kasunduan tungkol sa Lisensyadong Materyal na hindi nakasaad dito ay hiwalay at independyente sa mga tuntunin at kundisyon ng Pampublikong Lisensyang ito. + b. Karagdagang alok mula sa Nagbibigay ng Lisensya -- Inangkop na Materyal. + Bawat tumatanggap ng Inangkop na Materyal mula sa Iyo + ay awtomatikong tumatanggap ng alok mula sa Nagbibigay ng Lisensya na + gamitin ang mga Lisensyadong Karapatan sa Inangkop na Materyal ---- -Seksyon 8 -- Interpretasyon. + c. Walang mga paghihigpit sa ibaba. Hindi Mo maaaring ialok o ipataw + ang anumang karagdagang o ibang mga tuntunin o kundisyon, o + magpataw ng anumang Epektibong Makatolohikal na Pamamaraan sa, + Lisensyadong Materyal kung ginagawa ito ay nagpapahirap sa paggamit ng + mga Lisensyadong Karapatan ng sinumang tumatanggap ng Lisensyadong -a. Para sa kalinawan, ang Pampublikong Lisensyang ito ay hindi, at hindi dapat ipakahulugan na, binabawasan, nililimitahan, pinipigilan, o nagtatakda ng mga kundisyon sa anumang paggamit ng Lisensyadong Materyal na maaaring legal na gawin nang walang pahintulot sa ilalim ng Pampublikong Lisensyang ito. -b. Sa abot ng posibleng paraan, kung ang anumang probisyon ng Pampublikong Lisensyang ito ay itinuturing na hindi maipapatupad, ito ay awtomatikong binabago sa pinakamababang lawak na kinakailangan upang ito ay maipatupad. Kung ang probisyon ay hindi maaaring baguhin, ito ay aalisin mula sa Pampublikong Lisensyang ito nang hindi naaapektuhan ang pagiging maipapatupad ng natitirang mga tuntunin at kundisyon. + 6. Walang pagpapatibay. Walang bagay sa Pampublikong Lisensyang ito ang bumubuo o + maaaring bigyang-kahulugan bilang pahintulot na ipahayag o ipahiwatig na Ikaw + ay, o na ang Iyong paggamit ng Lisensyadong Materyal ay, konektado, + sinusuportahan, inendorso, o binigyan ng opisyal na katayuan ng, + ang Nagbibigay ng Lisensya o iba pang itinalagang tumanggap ng pagkilala tulad ng -c. Walang tuntunin o kundisyon ng Pampublikong Lisensyang ito ang iwawaksi at walang kabiguan na sumunod ang pahihintulutan maliban kung hayagang sinang-ayunan ng Tagapaglisensya. -d. Walang anuman sa Pampublikong Lisensyang ito ang bumubuo o maaaring ipakahulugan bilang isang limitasyon sa, o pagwawaksi ng, anumang pribilehiyo at kaligtasan na nalalapat sa Tagapaglisensya o sa Iyo, kabilang ang mula sa mga legal na proseso ng anumang hurisdiksyon o awtoridad. ---- + + 1. Ang mga moral na karapatan, tulad ng karapatan sa integridad, ay hindi + ipinagkakaloob sa ilalim ng Pampublikong Lisensyang ito, gayundin ang karapatan sa + publicity, privacy, at/o iba pang katulad na karapatan sa personalidad; gayunpaman, + sa pinakamalawak na posibleng lawak, tinatanggihan at/o pumapayag ang Nagbibigay ng Lisensya na + huwag ipatupad ang anumang ganitong mga karapatan na hawak ng Nagbibigay ng Lisensya + sa limitadong lawak na kinakailangan upang pahintulutan Ka na gamitin ang mga Lisensyadong + + + 2. Ang mga karapatan sa patent at trademark ay hindi ipinagkakaloob sa ilalim ng + + + 3. Hangga't maaari, isinusuko ng Nagbibigay ng Lisensya ang anumang karapatan na + mangolekta ng mga royalty mula sa Iyo para sa paggamit ng mga Lisensyang + Karapatan, maging direkta man o sa pamamagitan ng isang collecting society + sa ilalim ng anumang boluntaryo o maaring ipawalang bisa na batasan o sapilitang + lisensyang iskema. Sa lahat ng ibang kaso, tahasang pinananatili ng Nagbibigay ng Lisensya + ang anumang karapatan na kolektahin ang nasabing mga royalty. + + +Seksyon 3 -- Mga Kondisyon sa Lisensya. + +Ang iyong paggamit sa mga Lisensyang Karapatan ay tahasang naipapailalim sa mga +sumusunod na kondisyon. + + a. Pagkilala. + + 1. Kung Ibinahagi Mo ang Lisensyang Materyal (kasama na ang nabagong + anyo), Dapat mong: + + a. panatilihin ang mga sumusunod kung ito ay ibinigay ng Nagbibigay ng Lisensya + kasama ng Lisensyang Materyal: + + i. pagkakakilanlan ng tagalikha ng Lisensyang + Materyal at ng iba pang itinalagang makatanggap ng + pagkilala, sa anumang makatwirang paraan na hinihiling ng + Nagbibigay ng Lisensya (kasama ang paggamit ng sagisag kung + tinukoy); + + ii. isang paunawa ng copyright; + + iii. isang paunawa na tumutukoy sa Pampublikong Lisensyang ito; + + iv. isang paunawa na tumutukoy sa pagtatanggi ng + mga warranty; + + v. isang URI o hyperlink sa Lisensyang Materyal hangga't makatwirang + magagawa; + + b. ipahiwatig kung binago Mo ang Lisensyang Materyal at + panatilihin ang pahiwatig ng anumang mga dating pagbabago; at + + c. ipahiwatig na ang Lisensyang Materyal ay nilisensyahan sa ilalim ng + Pampublikong Lisensyang ito, at isama ang teksto ng, o ang URI o + hyperlink sa, Pampublikong Lisensyang ito. + + 2. Maaari mong tuparin ang mga kondisyon sa Seksyon 3(a)(1) sa anumang + makatwirang paraan batay sa media, pamamaraan, at konteksto kung saan + Ibinabahagi Mo ang Lisensyang Materyal. Halimbawa, maaaring makatwiran + ang pagtupad sa mga kondisyon sa pamamagitan ng pagbibigay ng URI o + hyperlink sa isang mapagkukunan na naglalaman ng kinakailangang + impormasyon. + + 3. Kung hinihiling ng Nagbibigay ng Lisensya, Dapat mong alisin ang alinman sa + mga impormasyong kinakailangan sa Seksyon 3(a)(1)(A) hangga't + makatwirang magagawa. + + b. ShareAlike. + + Bilang karagdagan sa mga kondisyon sa Seksyon 3(a), kung Ibinahagi Mo ang + Nabagong Materyal na Iyong ginawa, ang sumusunod na mga kondisyon ay nalalapat din. + + 1. Ang Lisensya ng Tagagawa ng Adaptasyon na Iyong inilalapat ay dapat na isang Creative Commons + lisensya na may parehong mga Elemento ng Lisensya, sa bersyong ito o + mas bago, o isang BY-SA Compatible License. + + 2. Dapat mong isama ang teksto ng, o ang URI o hyperlink sa, + Lisensya ng Tagagawa ng Adaptasyon na Iyong inilalapat. Maaari mong + tuparin ang kondisyong ito sa anumang makatwirang paraan batay sa media, pamamaraan, at + konteksto kung saan Ibinabahagi Mo ang Nabagong Materyal. + + 3. Hindi Mo maaaring ialok o ipataw ang anumang karagdagang o iba pang mga termino + o kondisyon sa, o ilapat ang anumang Epektibong Teknolohikal na + Mga Hakbang sa, Nabagong Materyal na naglilimita sa paggamit ng mga + karapatan na ipinagkaloob sa ilalim ng Lisensya ng Tagagawa ng Adaptasyon na Iyong inilalapat. + + +Seksyon 4 -- Sui Generis na Mga Karapatan sa Database. + +Kung ang mga Lisensyang Karapatan ay kasama ang Sui Generis na Mga Karapatan sa Database na +nalalapat sa Iyong paggamit ng Lisensyang Materyal: + + a. para sa kalinawan, ang Seksyon 2(a)(1) ay nagbibigay sa Iyo ng karapatan + na kunin, muling gamitin, gumawa ng kopya, at Ibahagi ang lahat o isang malaking bahagi + ng nilalaman ng database; + + b. kung Isasama Mo ang lahat o isang malaking bahagi ng nilalaman ng database + sa isang database kung saan Meron Kang Sui Generis na Mga Karapatan sa Database + + Mga Karapatan, pagkatapos ay ang database kung saan mayroon Ka ng Sui Generis Database + Mga Karapatan (ngunit hindi ang mga indibidwal na nilalaman nito) ay Adapted Material, + + kasama na para sa mga layunin ng Seksyon 3(b); at + + c. Dapat kang sumunod sa mga kundisyon sa Seksyon 3(a) kung Ibinabahagi Mo + ang lahat o isang malaking bahagi ng nilalaman ng database. + +Para sa pagkakalinaw, ang Seksyon 4 na ito ay nagsisilbing karagdagan at hindi +pumapalit sa Iyong mga obligasyon sa ilalim ng Pampublikong Lisensyang ito kung saan ang mga Lisensyadong +Karapatan ay kasama ang iba pang Copyright at Katulad na mga Karapatan. + + +Seksyon 5 -- Pagtanggi sa Mga Garantiya at Limitasyon ng Pananagutan. + + a. MALIBAN KUNG NAISAGAWA ANGIBA NANG HIWALAY NG LICENSOR, SA + KAKAYAHAN, ANG LICENSOR AY NAG-AALOK NG LISENSYADONG MATERYAL NA "AS-IS" + AT "AS-AVAILABLE," AT HINDI NAGGAGAWA NG ANUMANG PAGPAPAHAYAG O GARANTIYA + NG ANUMANG URI TUNGKOL SA LISENSYADONG MATERYAL, MAPAEXPRESS, + IMPLISITO, BATAY SA BATAS, O IBA PA. KASAMA DITO, NG WALANG LIMITASYON, + MGA GARANTIYA NG PAGKAMAY-ARI, PAGKAKATUGMA SA PANG-NEGOSYO, KAKAYAHAN + PARA SA ISANG TIYAK NA LAYUNIN, HINDI PAGLABAG, KAWALANG-SALA NG MGA TAGO + O IBA PANG DEFEKTO, KATUMPATAN, O PRESENSIYA O KAWALANG-PRESENSIYA NG MGA + ERROR, KAHIT ALAM MAN O MAHULI. KUNG SAAN ANG PAGTANGGI SA MGA GARANTIYA AY + HINDI PINAPAHINTULUTAN NA BUO O SA BAHAGI, ANG PAGTANGGING ITO AY MAAARING + + + b. SA KAKAYAHAN, SA ANUMANG PANAHON AY HINDI MANANAGUTAN ANG LICENSOR SA IYO + SA ANUMANG TEORYANG PANG-BATAS (KASAMA, NG WALANG LIMITASYON, + KAWALANG-PANSIN) O SA IBA PA PARA SA ANUMANG DIREKTA, ESPESYAL, DI-TUWIRAN, + PAMINSAN-MINSANG, PANGKONSEKWENSIYA, PUNITIBO, HALIMBAWA, O IBA PANG + PAGKAWALA, GASTOS, KAGASTUSAN, O PINSALA NA NAGMULA SA PAMPUBLIKONG LISENSYA O + PAGGAMIT NG LISENSYADONG MATERYAL, KAHIT IPINAALAM SA LICENSOR ANG + POSIBILIDAD NG MGA GANITONG PAGKAWALA, GASTOS, KAGASTUSAN, O PINSALA. KUNG + SAAN ANG LIMITASYON NG PANANAGUTAN AY HINDI PINAPAHINTULUTAN NA BUO O SA + + + c. Ang pagtanggi ng mga garantiya at limitasyon ng pananagutan na ibinigay + sa itaas ay dapat bigyang-kahulugan sa paraang, sa abot ng + makakaya, ay pinakamalapit sa isang ganap na pagtanggi at + + + + + + a. Ang Pampublikong Lisensyang ito ay nalalapat sa panahon ng Copyright at + Katulad na Mga Karapatang nilisensyahan dito. Gayunpaman, kung nabigo kang sumunod sa + Pampublikong Lisensyang ito, awtomatikong matatapos ang iyong mga karapatan sa ilalim ng Pampublikong Lisensyang ito. + + b. Kung saan ang iyong karapatang gamitin ang Lisensyadong Materyal ay natapos sa ilalim ng + Seksyon 6(a), ito ay maibabalik: + + 1. awtomatiko mula sa petsa kung kailan naayos ang paglabag, kung ito ay naayos + sa loob ng 30 araw mula nang matuklasan mo ang + paglabag; o + + 2. sa pamamagitan ng tahasang muling pagpapatibay ng Licensor. + + Para sa pag-iwas ng pagdududa, ang Seksyon 6(b) na ito ay hindi nakakaapekto sa anumang + karapatan na maaaring mayroon ang Licensor upang maghanap ng mga lunas para sa iyong mga paglabag + sa Pampublikong Lisensyang ito. + + c. Para sa pag-iwas ng pagdududa, ang Licensor ay maaari ding mag-alok ng + Lisensyadong Materyal sa ilalim ng hiwalay na mga termino o kundisyon o ihinto + ang pamamahagi ng Lisensyadong Materyal anumang oras; gayunpaman, ang paggawa nito + ay hindi magtatapos sa Pampublikong Lisensyang ito. + + d. Ang mga Seksyon 1, 5, 6, 7, at 8 ay nananatili pagkatapos ng pagtatapos ng Pampublikong + Lisensya. + + +Seksyon 7 -- Iba Pang Mga Termino at Kundisyon. + + a. Ang Licensor ay hindi mapipilitan ng anumang karagdagang o ibang + mga termino o kundisyon na ipinabatid sa Iyo maliban kung tahasang napagkasunduan. + + b. Anumang mga kasunduan, pagkakaunawaan, o mga kasunduan tungkol sa + Lisensyadong Materyal na hindi nakasaad dito ay hiwalay sa at + independent mula sa mga termino at kundisyon ng Pampublikong Lisensyang ito. + + +Seksyon 8 -- Pagsasalin ng Kahulugan. + + a. Para sa pagkakalinaw, ang Pampublikong Lisensyang ito ay hindi, at + hindi dapat bigyang-kahulugan na, binabawasan, nililimitahan, nililimitahan, + o naglalagay ng mga kondisyon sa anumang paggamit ng Lisensyadong Materyal na maaaring + gawin ng legal nang walang pahintulot sa ilalim ng Pampublikong Lisensyang ito. + + b. Sa abot ng makakaya, kung ang anumang probisyon ng Pampublikong Lisensyang ito ay + itinuturing na hindi mapatupad, ito ay awtomatikong aayusin sa + pinakamababang antas na kinakailangan upang maging mapatupad. Kung ang probisyon + ay hindi maaaring ayusin, ito ay aalisin mula sa Pampublikong Lisensyang ito + nang hindi naapektuhan ang pagpapatupad ng natitirang mga termino at + kundisyon. + + c. Walang termino o kundisyon ng Pampublikong Lisensyang ito ang bawiin at walang + kabiguan sa pagsunod ang papayagan maliban kung tahasang napagkasunduan ng + Licensor. + + d. Wala sa Pampublikong Lisensyang ito ang bumubuo o maaaring bigyang-kahulugan + bilang isang limitasyon sa, o pagbawi ng, anumang pribilehiyo at mga imyunidad + na nalalapat sa Licensor o sa Iyo, kabilang mula sa mga prosesong legal ng anumang hurisdiksyon o awtoridad. + + ======================================================================= -Ang Creative Commons ay hindi isang partido sa mga pampublikong lisensya nito. Gayunpaman, maaaring piliin ng Creative Commons na ilapat ang isa sa mga pampublikong lisensya nito sa materyal na inilalathala nito at sa mga pagkakataong iyon ay ituturing na "Tagapaglisensya." Ang teksto ng mga pampublikong lisensya ng Creative Commons ay nakatuon sa pampublikong domain sa ilalim ng CC0 Public Domain Dedication. Maliban sa limitadong layunin ng pagpapahiwatig na ang materyal ay ibinabahagi sa ilalim ng isang pampublikong lisensya ng Creative Commons o ayon sa iba pang pinahihintulutan ng mga patakaran ng Creative Commons na inilathala sa creativecommons.org/policies, ang Creative Commons ay hindi pinahihintulutan ang paggamit ng trademark na "Creative Commons" o anumang iba pang trademark o logo ng Creative Commons nang walang paunang nakasulat na pahintulot, kabilang, walang limitasyon, kaugnay sa anumang hindi awtorisadong pagbabago sa alinman sa mga pampublikong lisensya nito o anumang iba pang kaayusan, pag-unawa, o kasunduan tungkol sa paggamit ng lisensyadong materyal. Para sa kalinawan, ang talatang ito ay hindi bahagi ng mga pampublikong lisensya. +Ang Creative Commons ay hindi bahagi sa mga pampublikong +lisensya nito. Gayunpaman, maaaring piliin ng Creative Commons na i-apply ang isa sa +mga pampublikong lisensya nito sa materyal na inilalathala nito at sa mga pagkakataong iyon +ay ituturing na "Licensor." Ang teksto ng mga pampublikong lisensya ng Creative Commons +ay inilaan sa pampublikong domain sa ilalim ng CC0 Public +Domain Dedication. Maliban sa limitadong layunin ng pagpapahiwatig na +ang materyal ay ibinabahagi sa ilalim ng pampublikong lisensya ng Creative Commons o bilang +pinapayagan ng mga patakaran ng Creative Commons na nalathala sa +creativecommons.org/policies, hindi pinahihintulutan ng Creative Commons ang +paggamit ng trademark na "Creative Commons" o anumang iba pang trademark o logo +ng Creative Commons nang walang paunang nakasulat na pahintulot kabilang, +nang walang limitasyon, sa koneksyon sa anumang hindi awtorisadong pagbabago +sa alinman sa mga pampublikong lisensya nito o anumang iba pang mga kasunduan, +pagkakaunawaan, o mga kasunduan tungkol sa paggamit ng lisensyadong materyal. Para sa +kalinawan, ang talatang ito ay hindi bahagi ng +mga pampublikong lisensya. -Maaaring makontak ang Creative Commons sa creativecommons.org. +Ang Creative Commons ay maaaring kontakin sa creativecommons.org. --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file