diff --git a/translations/lt/.co-op-translator.json b/translations/lt/.co-op-translator.json index 9d5082bf..655a74c1 100644 --- a/translations/lt/.co-op-translator.json +++ b/translations/lt/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "lt" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T15:01:01+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "lt" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T20:34:04+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "lt" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "lt", + "failure_date": "2026-07-08T14:51:55+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-31T18:04:59+00:00", @@ -54,8 +73,8 @@ "language_code": "lt" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:35:44+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T14:47:33+00:00", "source_file": "examples/README.md", "language_code": "lt" }, @@ -66,8 +85,8 @@ "language_code": "lt" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T06:50:56+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T14:47:54+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "lt" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "lt" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T14:34:46+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "lt" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-31T17:38:50+00:00", @@ -330,8 +355,8 @@ "language_code": "lt" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-31T17:55:03+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T14:48:23+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "lt" }, diff --git a/translations/lt/CONTRIBUTING.md b/translations/lt/CONTRIBUTING.md new file mode 100644 index 00000000..f32feb9a --- /dev/null +++ b/translations/lt/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Prisidėjimas prie AI-For-Beginners + +Dėkojame už susidomėjimą prisidėti prie AI-For-Beginners! Kviečiame teikti vertimus, pamokų pataisas ir formatavimo taisymus. + +## Microsoft Bendradarbio Licencijos Sutartis (CLA) + +Šis projektas laukią indėlių ir pasiūlymų. Daugumai indėlių reikia sutikti su Bendradarbio Licencijos Sutartimi (CLA), kurioje pareiškiama, kad turite teisę ir iš tikrųjų suteikiate mums teises naudoti jūsų indėlį. Daugiau informacijos rasite adresu [https://cla.microsoft.com](https://cla.microsoft.com). + +Kai pateikiate pull request, CLA-botas automatiškai nustatys, ar turite pateikti CLA, ir atitinkamai pažymės PR (pvz., pridės žymą, komentarą). Tiesiog vykdykite bot'o nurodymus. Tai reikės padaryti tik kartą visuose saugyklose, kuriose naudojama mūsų CLA. + +## Kaip prisidėti + +### 1. Rašybos ir Kodo Klaidos Taisymas +Jei radote rašybos klaidą ar programinės įrangos klaidą bet kuriame Jupyter užraše ar pamokos markdown faile: +1. Šakinkite (fork) saugyklą. +2. Pataisykite rašybos klaidą ar neveikiantį nuorodą. +3. Pateikite Pull Request su aiškiu taisymo aprašymu. + +### 2. Vertimų Pateikimas +Laukiame pamokų vertimų į kitas kalbas! Prašome dėti vertimus į katalogą `translations/` naudodami ten esančius aplankų pavadinimus (pvz., `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +Daugiau informacijos rasite [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md). + +--- + + +**Atsakomybės apribojimas**: +Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu. + \ No newline at end of file diff --git a/translations/lt/examples/README.md b/translations/lt/examples/README.md index bd7b506d..59fa386c 100644 --- a/translations/lt/examples/README.md +++ b/translations/lt/examples/README.md @@ -1,27 +1,27 @@ -# Pradedančiųjų AI pavyzdžiai +# Pradedantiesiems Draugiški AI Pavyzdžiai -Sveiki! Šiame kataloge rasite paprastus, savarankiškus pavyzdžius, kurie padės jums pradėti dirbti su AI ir mašininio mokymosi technologijomis. Kiekvienas pavyzdys yra sukurtas taip, kad būtų draugiškas pradedantiesiems, su išsamiais komentarais ir žingsnis po žingsnio paaiškinimais. +Sveiki! Šiame kataloge rasite paprastų, savarankiškų pavyzdžių, kurie padės jums pradėti dirbti su dirbtiniu intelektu ir mašininiu mokymusi. Kiekvienas pavyzdys sukurtas taip, kad būtų draugiškas pradedantiesiems su išsamiais komentarais ir žingsnis po žingsnio paaiškinimais. -## 📚 Pavyzdžių apžvalga +## 📚 Pavyzdžių Apžvalga -| Pavyzdys | Aprašymas | Sudėtingumas | Reikalavimai | -|----------|-----------|--------------|--------------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | Jūsų pirmoji AI programa – paprastas šablonų atpažinimas | ⭐ Pradedantysis | Python pagrindai | -| [Paprastas neuroninis tinklas](../../../examples/02-simple-neural-network.py) | Sukurkite neuroninį tinklą nuo nulio | ⭐⭐ Pradedantysis+ | Python, pagrindinė matematika | -| [Vaizdų klasifikatorius](./03-image-classifier.ipynb) | Klasifikuokite vaizdus naudodami iš anksto apmokytą modelį | ⭐⭐ Pradedantysis+ | Python, numpy | -| [Teksto sentimentas](../../../examples/04-text-sentiment.py) | Analizuokite teksto sentimentą (teigiamas/neigiamas) | ⭐⭐ Pradedantysis+ | Python | +| Pavyzdys | Aprašymas | Sudėtingumas | Išankstinės Žinios | +|---------|-------------|------------|---------------| +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | Jūsų pirmoji AI programa - paprasta šablonų atpažinimas | ⭐ Pradedantysis | Python pagrindai | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Sukurkite nervinį tinklą nuo nulio | ⭐⭐ Pradedantysis+ | Python, pagrindinė matematika | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | Klasifikuokite paveikslėlius su iš anksto apmokytu modeliu | ⭐⭐ Pradedantysis+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | Analizuokite teksto nuotaiką (teigiama/neigiama) | ⭐⭐ Pradedantysis+ | Python | ## 🚀 Pradžia -### Reikalavimai +### Išankstinės sąlygos -Įsitikinkite, kad turite įdiegtą Python (rekomenduojama 3.8 ar naujesnė versija). Įdiekite reikalingus paketus: +Įsitikinkite, kad turite įdiegtą Python (rekomenduojama 3.8 arba naujesnė). Įdiekite reikiamus paketus: ```bash -# For Python scripts +# Skirta Python scenarijams pip install numpy -# For Jupyter notebooks (image classifier) +# Skirta Jupyter užrašų knygelėms (vaizdų klasifikatorius) pip install jupyter numpy pillow tensorflow ``` @@ -32,7 +32,7 @@ conda env create --name ai4beg --file ../environment.yml conda activate ai4beg ``` -### Pavyzdžių paleidimas +### Pavyzdžių Vykdymas **Python skriptams (.py failai):** ```bash @@ -44,42 +44,44 @@ python 01-hello-ai-world.py jupyter notebook 03-image-classifier.ipynb ``` -## 📖 Mokymosi kelias +## 📖 Mokymosi Kelias -Rekomenduojame sekti pavyzdžius iš eilės: +Rekomenduojame sekti pavyzdžius tokia tvarka: -1. **Pradėkite nuo "Hello AI World"** – Sužinokite šablonų atpažinimo pagrindus -2. **Sukurkite paprastą neuroninį tinklą** – Supraskite, kaip veikia neuroniniai tinklai -3. **Išbandykite vaizdų klasifikatorių** – Pamatykite AI veikimą su realiais vaizdais -4. **Analizuokite teksto sentimentą** – Tyrinėkite natūralios kalbos apdorojimą +1. **Pradėkite nuo "Hello AI World"** - Išmokite pagrindus apie šablonų atpažinimą +2. **Sukurkite Paprastą Nervinį Tinklą** - Supraskite, kaip veikia nerviniai tinklai +3. **Išbandykite Paveikslėlių Klasifikatorių** - Pamatykite AI veikimą su realiais vaizdais +4. **Analizuokite Teksto Nuotaiką** - Tyrinėkite natūralios kalbos apdorojimą -## 💡 Patarimai pradedantiesiems +## 💡 Patarimai Pradedantiesiems -- **Atidžiai skaitykite kodo komentarus** – Jie paaiškina, ką daro kiekviena eilutė -- **Eksperimentuokite!** – Pabandykite keisti reikšmes ir stebėkite rezultatus -- **Nesijaudinkite, jei ne viską suprasite** – Mokymasis užtrunka -- **Užduokite klausimus** – Naudokitės [Diskusijų lenta](https://github.com/microsoft/AI-For-Beginners/discussions) +- **Atidžiai skaitykite kodo komentarus** - Jie paaiškina, ką kiekviena eilutė atlieka +- **Eksperimentuokite!** - Pabandykite keisti reikšmes ir pamatykite, kas vyksta +- **Nesijaudinkite, jei nesuprantate visko iš karto** - Mokymasis užtrunka laiko +- **Užduokite klausimus** - Naudokitės [Diskusijų lenta](https://github.com/microsoft/AI-For-Beginners/discussions) -## 🔗 Kiti žingsniai +## 🔗 Tolimesni Žingsniai -Baigę šiuos pavyzdžius, tyrinėkite visą mokymo planą: +Užbaigus šiuos pavyzdžius, tyrinėkite visą mokymo planą: - [Įvadas į AI](../lessons/1-Intro/README.md) -- [Neuroniniai tinklai](../lessons/3-NeuralNetworks/README.md) -- [Kompiuterinis matymas](../lessons/4-ComputerVision/README.md) -- [Natūralios kalbos apdorojimas](../lessons/5-NLP/README.md) +- [Nerviniai Tinklai](../lessons/3-NeuralNetworks/README.md) +- [Kompiuterinė Vizija](../lessons/4-ComputerVision/README.md) +- [Natūrali Kalbos Apdorojimas](../lessons/5-NLP/README.md) -## 🤝 Prisidėkite +## 🤝 Prisidėjimas -Ar šie pavyzdžiai buvo naudingi? Padėkite mums juos patobulinti: -- Praneškite apie problemas arba siūlykite patobulinimus +Ar šie pavyzdžiai jums buvo naudingi? Padėkite mums juos patobulinti: +- Praneškite apie klaidas arba pasiūlykite patobulinimus - Pridėkite daugiau pavyzdžių pradedantiesiems - Tobulinkite dokumentaciją ir komentarus --- -*Atminkite: Kiekvienas ekspertas kažkada buvo pradedantysis. Sėkmingo mokymosi! 🎓* +*Prisiminkite: Kiekvienas ekspertas kadaise buvo pradedantysis. Sėkmingo mokymosi! 🎓* --- -**Atsakomybės atsisakymas**: -Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Dėl svarbios informacijos rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar neteisingus aiškinimus, atsiradusius naudojant šį vertimą. \ No newline at end of file + +**Atsakomybės apribojimas**: +Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu. + \ No newline at end of file diff --git a/translations/lt/lessons/0-course-setup/how-to-run.md b/translations/lt/lessons/0-course-setup/how-to-run.md index 72f59d46..cf70a796 100644 --- a/translations/lt/lessons/0-course-setup/how-to-run.md +++ b/translations/lt/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ # Kaip paleisti kodą -Ši mokymo programa apima daug vykdomų pavyzdžių ir laboratorinių darbų, kuriuos norėsite paleisti. Tam jums reikalinga galimybė vykdyti Python kodą Jupyter užrašinėse, pateiktose kaip šios mokymo programos dalis. Turite keletą galimybių kodui paleisti: +Šioje mokymo programoje yra daug vykdomų pavyzdžių ir laboratorinių darbų, kuriuos norėsite paleisti. Tam reikia galimybės vykdyti Python kodą Jupyter užrašuose, kurie pateikti kaip šios mokymo programos dalis. Turite keletą galimybių, kaip paleisti kodą: -## Paleisti vietoje savo kompiuteryje +## Vykdyti vietoje savo kompiuteryje -Norėdami paleisti kodą vietoje savo kompiuteryje, reikia įdiegti Python. Vienas iš rekomenduojamų sprendimų yra įdiegti **[miniconda](https://conda.io/en/latest/miniconda.html)** – tai gana lengvas diegimas, palaikantis `conda` paketo tvarkyklę skirtingoms Python **virtualioms aplinkoms**. +Norint paleisti kodą vietoje savo kompiuteryje, reikia turėti įdiegtą Python. Viena iš rekomendacijų – įdiegti **[miniconda](https://conda.io/en/latest/miniconda.html)** – tai pakankamai lengvas diegimas, kuris palaiko `conda` paketų tvarkyklę skirtingoms Python **virtualioms aplinkoms**. -Įdiegę minicondą, klonuokite saugyklą ir susikurkite virtualią aplinką, kuri bus naudojama šiam kursui: +Įdiegus miniconda, nuklonuokite saugyklą ir sukurkite virtualią aplinką, kuri bus naudojama šiame kurse: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -15,17 +15,17 @@ conda env create --name ai4beg --file .devcontainer/environment.yml conda activate ai4beg ``` -### Naudojant Visual Studio Code su Python plėtiniu +### Naudojant Visual Studio Code su Python papildiniu -Ši mokymo programa geriausiai naudojama atidarius ją [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) su [Python plėtiniu](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Šią mokymo programą geriausia naudoti atidarant ją [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) su [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Pastaba**: Kai klonuojate ir atidarote katalogą VS Code, jis automatiškai pasiūlys įdiegti Python plėtinius. Taip pat turėsite įdiegti minicondą, kaip aprašyta aukščiau. +> **Pastaba**: Kai tik nuklonuosite ir atidarysite katalogą VS Code, jis automatiškai pasiūlys įdiegti Python papildinius. Taip pat turėsite įdiegti miniconda, kaip aprašyta aukščiau. -> **Pastaba**: Jei VS Code pasiūlys jums iš naujo atidaryti saugyklą konteineryje, turėtumėte tai atmesti, kad naudotumėte vietinę Python diegimą. +> **Pastaba**: Jei VS Code siūlo atidaryti saugyklą konteineryje, turėtumėte atsisakyti šio pasiūlymo, kad naudotumėte vietoje įdiegtą Python. ### Naudojant Jupyter naršyklėje -Taip pat galite naudoti Jupyter aplinką per naršyklę savo kompiuteryje. Tiek klasikinis Jupyter, tiek JupyterHub suteikia patogią kūrimo aplinką su automatinio pildymo galimybėmis, kodo paryškinimu ir kita. +Taip pat galite naudoti Jupyter aplinką naršyklėje savo kompiuteryje. Tiek klasikinis Jupyter, tiek JupyterHub suteikia patogią vystymo aplinką su automatinio pildymo, kodo paryškinimo ir kitomis funkcijomis. Norėdami paleisti Jupyter vietoje, eikite į kurso katalogą ir vykdykite: @@ -36,36 +36,36 @@ arba ```bash jupyterhub ``` -Tada galite pereiti į bet kurį `.ipynb` failą, atidaryti jį ir pradėti darbą. +Tuomet galite naršyti bet kurį iš `.ipynb` failų, atidaryti juos ir pradėti darbą. -### Paleidimas konteineryje +### Vykdymas konteineryje -Viena iš alternatyvų Python diegimui būtų kodą paleisti konteineryje. Kadangi mūsų saugykloje yra specialus `.devcontainer` aplankas, kuris nurodo, kaip sukurti konteinerį šiai saugyklai, VS Code siūlo galimybę iš naujo atidaryti kodą konteineryje. Tai reikalauja Docker diegimo ir yra sudėtingiau, todėl rekomenduojame tai labiau pažengusiems vartotojams. +Vienas iš Python diegimo alternatyvų yra paleisti kodą konteineryje. Kadangi mūsų saugykla turi specialų `.devcontainer` katalogą, kuris nurodo, kaip sukurti konteinerį šiai saugyklai, VS Code siūlo galimybę iš naujo atidaryti kodą konteineryje. Tam reikės įdiegti Docker, ir tai bus sudėtingiau, todėl rekomenduojame šį būdą labiau patyrusiems vartotojams. -## Paleidimas debesyje +## Vykdymas debesyje -Jei nenorite diegti Python vietoje ir turite prieigą prie debesijos – gera alternatyva būtų paleisti kodą debesyje. Yra keletas būdų, kaip tai padaryti: +Jei nenorite diegti Python vietoje ir turite prieigą prie kokių nors debesies išteklių – geras pasirinkimas būtų vykdyti kodą debesyje. Tai galite padaryti keliais būdais: -* Naudojant **[GitHub Codespaces](https://github.com/features/codespaces)** – tai virtuali aplinka, sukurta jums GitHub platformoje, pasiekiama per VS Code naršyklės sąsają. Jei turite prieigą prie Codespaces, tiesiog spustelėkite **Code** mygtuką saugykloje, paleiskite codespace ir pradėkite darbą vos per kelias minutes. -* Naudojant **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) suteikia nemokamas skaičiavimo išteklių debesyje žmonėms, kaip jūs, norintiems išbandyti kodą iš GitHub. Pagrindiniame puslapyje yra mygtukas, leidžiantis atidaryti saugyklą Binder platformoje – tai greitai nuves į Binder svetainę, kuri sukurs fono konteinerį ir sklandžiai paleis Jupyter interneto sąsają. +* Naudojant **[GitHub Codespaces](https://github.com/features/codespaces)**, tai yra virtuali aplinka, sukurta jums GitHub platformoje, pasiekiama per VS Code naršyklės sąsają. Jei turite prieigą prie Codespaces, tiesiog spauskite **Code** mygtuką saugykloje, pradėkite codespace ir pradėkite dirbti labai greitai. +* Naudojant **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) suteikia nemokamus skaičiavimo išteklius debesyje žmonėms, norintiems išbandyti kodą GitHub platformoje. Pagrindiniame puslapyje yra mygtukas atidaryti saugyklą Binder – tai greitai nukels jus į Binder svetainę, kuri sukuria konteinerį ir sklandžiai paleidžia Jupyter interneto sąsają. -> **Pastaba**: Siekiant išvengti piktnaudžiavimo, Binder prieiga prie kai kurių interneto išteklių yra blokuojama. Tai gali trukdyti veikti kai kuriems kodams, kurie parsisiunčia modelius ir/ar duomenų rinkinius iš viešojo interneto. Gali tekti ieškoti sprendimų. Taip pat Binderyje teikiami skaičiavimo ištekliai yra pakankamai baziniai, todėl modelių mokymas bus lėtas, ypač vėlesniuose sudėtingesniuose pamokų etapuose. +> **Pastaba**: Norint išvengti piktnaudžiavimo, Binder blokuoja prieigą prie kai kurių internetinių šaltinių. Tai gali neleisti veikti kai kuriems kodo fragmentams, kurie naudoja modelius ir (arba) duomenų rinkinius iš interneto. Gali prireikti rasti sprendimų. Taip pat Binder skirti skaičiavimo ištekliai yra gana pagrindiniai, todėl treniruotės bus lėtos, ypač vėlesnėse, sudėtingesnėse pamokose. -## Paleidimas debesyje su GPU palaikymu +## Vykdymas debesyje su GPU -Kai kurios vėlesnės pamokos šioje mokymo programoje labai naudos GPU palaikymą. Pavyzdžiui, modelių mokymas kitu atveju gali būti labai lėtas. Galite rinktis kelis variantus, ypač jei turite prieigą prie debesijos per [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) arba per savo instituciją: +Kai kurios vėlesnės šios mokymo programos pamokos labai naudotųsi GPU palaikymu. Modelių mokymas, pavyzdžiui, kitu atveju gali būti labai lėtas. Yra keletas variantų, kuriuos galite pasirinkti, ypač jei turite prieigą prie debesies per [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) arba per savo instituciją: -* Sukurkite [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) ir prisijunkite prie jos per Jupyter. Tuomet galite klonuoti saugyklą tiesiai į mašiną ir pradėti mokytis. NC serijos VM turi GPU palaikymą. +* Sukurkite [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) ir prisijunkite prie jos per Jupyter. Galite tiesiog nuklonuoti saugyklą tiesiai į šį kompiuterį ir pradėti mokytis. NC serijos VM turi GPU palaikymą. -> **Pastaba**: Kai kurios prenumeratos, įskaitant Azure for Students, pagal nutylėjimą GPU palaikymo neteikia. Gali prireikti pateikti techninės pagalbos užklausą dėl papildomų GPU branduolių. +> **Pastaba**: Kai kurios prenumeratos, įskaitant Azure for Students, pagal nutylėjimą neteikia GPU palaikymo. Gali prireikti pateikti užklausą techninės pagalbos skyriui dėl papildomų GPU branduolių. -* Sukurkite [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) ir naudokite ten Notebook funkciją. [Šis vaizdo įrašas](https://azure-for-academics.github.io/quickstart/azureml-papers/) rodo, kaip klonuoti saugyklą į Azure ML užrašinę ir pradėti ją naudoti. +* Sukurkite [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste), o tada naudokite ten esančią Notebook funkciją. [Šis video](https://azure-for-academics.github.io/quickstart/azureml-papers/) parodo, kaip nuklonuoti saugyklą į Azure ML užrašinį ir pradėti jį naudoti. -Taip pat galite naudoti Google Colab, kuris suteikia nemokamą GPU palaikymą, ir įkelti Jupyter užrašines po vieną, kad jas vykdytumėte. +Taip pat galite naudoti Google Colab, kuris suteikia nemokamą GPU palaikymą, ir įkelti Jupyter užrašus ten, kad paleistumėte juos po vieną. --- -**Atsakomybės apribojimas**: -Šis dokumentas išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors stengiamės užtikrinti tikslumą, prašome atkreipti dėmesį, kad automatizuoti vertimai gali turėti klaidų arba netikslumų. Originalus dokumentas gimtąja kalba turi būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už bet kokius nesusipratimus ar neteisingus aiškinimus, kilusius dėl šio vertimo naudojimo. +**Atsakomybės apribojimas**: +Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu. \ No newline at end of file diff --git a/translations/lt/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/lt/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index 3923b9dd..a9acd2cf 100644 --- a/translations/lt/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/lt/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Iš anksto apmokyti modeliai ir perkėlimo mokymasis\n", + "# Iš anksto apmokyti modeliai ir perdavimo mokymasis\n", "\n", - "CNN tinklų mokymas gali užtrukti daug laiko ir reikalauti didelio duomenų kiekio. Tačiau didelė dalis laiko skiriama tam, kad tinklas išmoktų geriausius žemo lygio filtrus, kuriuos jis naudoja raštams iš vaizdų išgauti. Natūraliai kyla klausimas – ar galime naudoti neuroninį tinklą, apmokytą viename duomenų rinkinyje, ir pritaikyti jį kitų vaizdų klasifikavimui be pilno mokymo proceso?\n", + "Konvoliucinių neuroninių tinklų (CNN) mokymas gali užtrukti daug laiko, o tam reikalinga daug duomenų. Tačiau daug laiko praleidžiama mokantis geriausių žemo lygio filtrų, kuriuos tinklas naudoja atpažinti vaizdų raštus. Kyla natūralus klausimas – ar galime naudoti neuroninį tinklą, apmokytą vienam duomenų rinkiniui, ir pritaikyti jį skirtingų vaizdų klasifikavimui be pilno mokymo proceso?\n", "\n", - "Šis metodas vadinamas **perkėlimo mokymusi**, nes mes perkeliame tam tikras žinias iš vieno neuroninio tinklo modelio į kitą. Perkėlimo mokymesi dažniausiai pradedame nuo iš anksto apmokyto modelio, kuris buvo apmokytas naudojant didelį vaizdų duomenų rinkinį, pavyzdžiui, **ImageNet**. Tokie modeliai jau geba gerai išgauti įvairias savybes iš bendrinių vaizdų, ir daugeliu atvejų, sukūrus klasifikatorių ant šių išgautų savybių, galima pasiekti gerų rezultatų.\n" + "Šis požiūris vadinamas **perdavimo mokymusi**, nes mes perduodame dalį žinių iš vieno neuroninio tinklo modelio kitam. Perdavimo mokymesi paprastai pradedame nuo iš anksto apmokyto modelio, kuris buvo apmokytas naudodamas didelį vaizdų duomenų rinkinį, pavyzdžiui, **ImageNet**. Tokie modeliai jau geba gerai išgauti įvairias savybes iš bendrinių vaizdų, ir daugeliu atvejų pakanka ant tų išgautų savybių pastatyti klasifikatorių, kad būtų pasiektas geras rezultatas.\n" ] }, { @@ -29,11 +29,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Kačių ir šunų duomenų rinkinys\n", + "## Katinai prieš šunis duomenų rinkinys\n", "\n", - "Šiame skyriuje spręsime realaus gyvenimo problemą – kačių ir šunų vaizdų klasifikavimą. Tam naudosime [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), kurį taip pat galima atsisiųsti [iš Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", + "Šiame skyriuje spręsime realaus gyvenimo užduotį – klasifikuoti katinų ir šunų nuotraukas. Tam naudosime [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats), kurį taip pat galima atsisiųsti [iš Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", "\n", - "Atsisiųskime šį duomenų rinkinį ir išskleiskime jį į `data` katalogą (šis procesas gali užtrukti!).\n" + "Atsisiųskime šį duomenų rinkinį ir išarchyvuokime jį į `data` katalogą (šis procesas gali užtrukti!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Deja, duomenų rinkinyje yra keletas sugadintų vaizdo failų. Turime greitai išvalyti, kad patikrintume sugadintus failus. Kad nesugadintume šio mokymo, kodą duomenų rinkinio patikrinimui perkėlėme į modulį.\n" + "Deja, duomenų rinkinyje yra keletas sugadintų vaizdų failų. Turime greitai juos patikrinti dėl sugadintų failų. Kad nesugadintume šio vadovo, perkėlėme kodo patikrinimą į modulį.\n" ] }, { @@ -335,11 +335,11 @@ "source": [ "## Duomenų rinkinio įkėlimas\n", "\n", - "Ankstesniuose pavyzdžiuose mes įkeldavome duomenų rinkinius, kurie jau yra integruoti į Keras. Dabar mes dirbsime su savo duomenų rinkiniu, kurį reikia įkelti iš vaizdų katalogo.\n", + "Ankstesniuose pavyzdžiuose mes įkėlėme Keras įmontuotus duomenų rinkinius. Dabar ketiname dirbti su savo duomenų rinkiniu, kurį reikia įkelti iš paveikslėlių katalogo.\n", "\n", - "Realiame gyvenime vaizdų duomenų rinkinių dydis gali būti gana didelis, todėl negalima tikėtis, kad visi duomenys tilps į atmintį. Dėl to duomenų rinkiniai dažnai pateikiami kaip **generatoriai**, kurie gali grąžinti duomenis mažomis partijomis, tinkamomis mokymui.\n", + "Realiame gyvenime vaizdų duomenų rinkinio dydis gali būti gana didelis, todėl negalima pasikliauti, kad visi duomenys tilps atmintyje. Todėl duomenų rinkiniai dažnai pateikiami kaip **generatoriai**, kurie gali grąžinti duomenis mažuose partijose, tinkamuose mokymui.\n", "\n", - "Norint dirbti su vaizdų klasifikavimu, Keras turi specialią funkciją `image_dataset_from_directory`, kuri gali įkelti vaizdus iš subkatalogų, atitinkančių skirtingas klases. Ši funkcija taip pat pasirūpina vaizdų mastelio keitimu ir gali padalinti duomenų rinkinį į mokymo ir testavimo poskirsnius:\n" + "Norint dirbti su vaizdų klasifikacija, Keras įtraukė specialią funkciją `image_dataset_from_directory`, kuri gali įkelti paveikslėlius iš potankių, atitinkančių įvairias klases. Ši funkcija taip pat rūpinasi vaizdų mastelio keitimu, ir ji gali padalyti duomenų rinkinį į mokymo ir testavimo pogrupius:\n" ] }, { @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Svarbu nustatyti tą pačią `seed` reikšmę abiem iškvietimams, nes ji turi įtakos vaizdų paskirstymui tarp mokymo ir testavimo duomenų rinkinių.\n", + "Svarbu nustatyti tą patį `seed` reikšmę abiem kvietimams, nes tai veikia vaizdų paskirstymą tarp mokymo ir testavimo duomenų rinkinių.\n", "\n", - "Duomenų rinkinys automatiškai paima klasių pavadinimus iš katalogų, ir, jei reikia, galite juos pasiekti iškviesdami:\n" + "Duomenų rinkinys automatiškai parenka klasės pavadinimus iš katalogų, ir jei reikia, galite juos pasiekti kviesdami:\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Duomenų rinkiniai, kuriuos gavome, gali būti tiesiogiai perduoti `fit` funkcijai, kad būtų apmokytas modelis. Jie apima tiek atitinkamus vaizdus, tiek žymes, kurios gali būti kartojamos naudojant šią konstrukciją:\n" + "Gauti duomenų rinkiniai gali būti tiesiogiai perduoti funkcijai `fit`, kad būtų apmokytas modelis. Jie talpina tiek atitinkamus vaizdus, tiek etiketes, kurias galima apdoroti naudojant šią konstrukciją:\n" ] }, { @@ -453,7 +453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **Pastaba**: Visos vaizdų duomenų rinkinio nuotraukos yra pateiktos kaip slankiojo kablelio tensoriai, kurių reikšmės yra diapazone nuo 0 iki 255. Prieš perduodant jas neuroniniam tinklui, turime šias reikšmes skalėti į diapazoną nuo 0 iki 1. Vaizdams vaizduoti taip pat turime atlikti tą patį arba konvertuoti reikšmes į `int` tipą (kaip tai darome aukščiau pateiktame kode), kad `matplotlib` suprastų, jog norime pavaizduoti originalų neskalintą vaizdą.\n" + "> **Pastaba**: Visos duomenų rinkinio nuotraukos yra pateikiamos kaip plaukiojančio kablelio taškų tensoriai intervale nuo 0 iki 255. Prieš perduodant jas neuroniniam tinklui, turime šias reikšmes sumažinti iki intervalo 0-1. Vaizduojant nuotraukas, turime arba atlikti tą patį, arba konvertuoti reikšmes į `int` tipą (kaip darome aukščiau pateiktame kode), kad parodytume `matplotlib`, jog norime pavaizduoti originalią nesumažintą nuotrauką.\n" ] }, { @@ -462,7 +462,7 @@ "source": [ "## Iš anksto apmokyti modeliai\n", "\n", - "Daugeliui vaizdų klasifikavimo užduočių galima rasti iš anksto apmokytus neuroninių tinklų modelius. Daugelis šių modelių yra pasiekiami `keras.applications` erdvėje, o dar daugiau modelių galima rasti internete. Pažiūrėkime, kaip galima įkelti ir naudoti paprasčiausią VGG-16 modelį:\n" + "Daugelio vaizdų klasifikavimo užduočių atvejais galima rasti iš anksto apmokytus neuroninių tinklų modelius. Daugelis tokių modelių yra prieinami `keras.applications` vardų srities viduje, o dar daugiau modelių galima rasti internete. Pažiūrėkime, kaip galima įkelti ir naudoti paprasčiausią VGG-16 modelį:\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,20 +520,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Yra keletas svarbių dalykų:\n", - "\n", - "* Prieš perduodant įvestį bet kokiam iš anksto apmokytam tinklui, ją reikia tam tikru būdu apdoroti. Tai atliekama iškviečiant atitinkamą funkciją `preprocess_input`, kuri gauna vaizdų paketą ir grąžina jų apdorotą formą. VGG-16 atveju vaizdai yra normalizuojami, o iš kiekvieno kanalo atimama iš anksto nustatyta vidutinė vertė. Taip yra todėl, kad VGG-16 buvo iš pradžių apmokytas naudojant tokį išankstinį apdorojimą.\n", - "\n", - "* Neuroninis tinklas taikomas įvesties paketui, ir kaip rezultatą gauname 1000 elementų tensorų paketą, kuris rodo kiekvienos klasės tikimybę. Labiausiai tikėtinos klasės numerį galime rasti iškviesdami `argmax` šiai tensoriaus reikšmei.\n", - "\n", - "* Gautas rezultatas yra [`ImageNet` klasės numeris](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Kad šis rezultatas būtų suprantamas, galime naudoti funkciją `decode_predictions`, kuri grąžina n geriausių klasių kartu su jų pavadinimais.\n" + "Čia yra keletas svarbių dalykų:\n", + "* Prieš perduodant įvestį bet kuriam iš anksto apmokytam tinklui, ji turi būti tam tikru būdu išankstinai apdorota. Tai atliekama kviečiant atitinkamą `preprocess_input` funkciją, kuri gauna vaizdų partiją ir grąžina jų apdorotą formą. VGG-16 atveju vaizdai yra normalizuojami, o nuo kiekvieno kanalo atimama tam tikra iš anksto apibrėžta vidutinė reikšmė. Taip yra todėl, kad VGG-16 iš pradžių buvo apmokytas su tokiu išankstiniu apdorojimu.\n", + "* Procedūroje tinklas taikomas įėjimo partijai, ir gauname rezultatą – 1000 elementų tenzorių partiją, kuriame nurodoma tikimybė kiekvienai klasei. Galime rasti tikėtiniausios klasės numerį kviesdami `argmax` šiam tenzoriui.\n", + "* Gautas rezultatas yra [„ImageNet“ klasės numeris](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Norint suprasti šį rezultatą, galima naudoti ir `decode_predictions` funkciją, kuri pateikia viršutines n klases kartu su jų pavadinimais.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Pažvelkime ir į VGG-16 tinklo architektūrą:\n" + "Pažiūrėkime ir į VGG-16 tinklo architektūrą:\n" ] }, { @@ -602,7 +609,7 @@ "source": [ "## GPU skaičiavimai\n", "\n", - "Gilūs neuroniniai tinklai, tokie kaip VGG-16 ir kitos modernesnės architektūros, reikalauja nemažai skaičiavimo galios. Todėl logiška pasinaudoti GPU pagreitinimu, jei jis yra prieinamas. Laimei, Keras automatiškai pagreitina skaičiavimus GPU, jei jis yra pasiekiamas. Galime patikrinti, ar Tensorflow gali naudoti GPU, naudodami šį kodą:\n" + "Gilieji neuroniniai tinklai, tokie kaip VGG-16 ir kitos modernesnės architektūros, reikalauja gana daug skaičiavimo galios. Prasminga naudoti GPU pagreitį, jei jis prieinamas. Laimei, Keras automatiškai pagreitina skaičiavimus GPU, jei jis yra prieinamas. Galime patikrinti, ar Tensorflow gali naudoti GPU, naudodami šį kodą:\n" ] }, { @@ -629,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Ištraukiant VGG savybes\n", "\n", - "Jei norime naudoti VGG-16 modelį, kad išgautume savybes iš savo vaizdų, mums reikia modelio be galutinių klasifikavimo sluoksnių. Galime sukurti VGG-16 modelį be viršutinių sluoksnių naudodami šį kodą:\n" + "## VGG požymių išgavimas\n", + "\n", + "Jei norime naudoti VGG-16 modelį, kad išgautume požymius iš mūsų vaizdų, mums reikalingas modelis be galutinių klasifikavimo sluoksnių. Galime sukurti VGG-16 modelį be viršutinių sluoksnių naudodami šį kodą:\n" ] }, { @@ -683,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Funkcijų tensoriaus matmenys yra 7x7x512, tačiau norėdami jį vizualizuoti, turėjome jį pertvarkyti į 2D formą.\n", + "Funkcijų tūrio matmenys yra 7x7x512, tačiau norint juos vizualizuoti, turėjome pakeisti formą į 2D.\n", "\n", - "Dabar pabandykime išsiaiškinti, ar šias funkcijas galima naudoti vaizdams klasifikuoti. Rankiniu būdu paimsime dalį vaizdų (mūsų atveju – 50 mini partijų) ir iš anksto apskaičiuosime jų funkcijų vektorius. Tam galime naudoti Tensorflow **dataset** API. `map` funkcija paima duomenų rinkinį ir pritaiko jam pateiktą lambda funkciją, kad transformuotų duomenis. Naudojame šį mechanizmą, kad sukurtume naujus duomenų rinkinius, `ds_features_train` ir `ds_features_test`, kuriuose yra VGG išgautos funkcijos vietoj originalių vaizdų.\n" + "Dabar pamėginkime pažiūrėti, ar šios funkcijos gali būti naudojamos paveikslėlių klasifikavimui. Rankiniu būdu paimsime dalį paveikslėlių (50 mažųjų partijų, mūsų atveju) ir iš anksto apskaičiuosime jų funkcijų vektorius. Tam galime naudoti Tensorflow **dataset** API. Funkcija `map` paima duomenų rinkinį ir taiko jam nurodytą lambda funkciją, kad jį transformuotų. Šio mechanizmo pagalba sukuriame naujus duomenų rinkinius, `ds_features_train` ir `ds_features_test`, kurie vietoje originalių paveikslėlių turi VGG išgautas funkcijas.\n" ] }, { @@ -715,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mes naudojome konstrukciją `.take(50)`, kad apribotume duomenų rinkinio dydį ir pagreitintume demonstraciją. Žinoma, galite atlikti šį eksperimentą su visu duomenų rinkiniu.\n", + "Naudojome konstruktą `.take(50)`, kad apribotume duomenų rinkinio dydį ir paspartintume mūsų demonstraciją. Žinoma, šį eksperimentą galite atlikti su pilnu duomenų rinkiniu.\n", "\n", - "Dabar, kai turime duomenų rinkinį su išgautomis savybėmis, galime apmokyti paprastą tankų klasifikatorių, kuris atskirtų kates nuo šunų. Šis tinklas priims savybių vektorių, kurio forma yra (7,7,512), ir pateiks vieną rezultatą, kuris atitinka arba šunį, arba katę. Kadangi tai yra dvejetainė klasifikacija, naudojame `sigmoid` aktyvacijos funkciją ir `binary_crossentropy` nuostolių funkciją.\n" + "Dabar, kai turime duomenų rinkinį su ištrauktomis savybėmis, galime apmokyti paprastą tankų klasifikatorių, skirtą atskirti kates nuo šunų. Šis tinklas priims savybių vektorių, kurio forma (7,7,512), ir pagamins vieną rezultatą, kuris atitinka arba šunį, arba katę. Kadangi tai dvejetainė klasifikacija, naudojame `sigmoid` aktyvacijos funkciją ir `binary_crossentropy` nuostolio funkciją.\n" ] }, { @@ -746,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Rezultatas puikus – galime atskirti katę nuo šuns beveik 95% tikslumu! Tačiau šį metodą išbandėme tik su dalimi visų vaizdų, nes rankinis požymių išskyrimas užima daug laiko.\n", + "Rezultatas yra puikus, galime atskirti katę nuo šuns su beveik 95% tikimybe! Tačiau šį metodą išbandėme tik su dalimi visų paveikslėlių, nes rankinis požymių išskyrimas atrodo labai daug laiko reikalaujantis.\n", "\n", "## Perkėlimo mokymasis naudojant vieną VGG tinklą\n", "\n", - "Taip pat galime išvengti rankinio požymių išankstinio skaičiavimo, naudodami originalų VGG-16 tinklą kaip visumą mokymo metu, pridėdami požymių išskyrimo sluoksnį kaip pirmąjį mūsų tinklo sluoksnį.\n", + "Taip pat galime išvengti rankinio požymių išankstinio apskaičiavimo, naudodami originalų VGG-16 tinklą kaip visą apmokymo metu, pridėdami požymių ištraukiklį kaip pirmą sluoksnį mūsų tinkle.\n", "\n", - "Keras architektūros privalumas yra tas, kad aukščiau apibrėžtas VGG-16 modelis gali būti naudojamas kaip sluoksnis kitame neuroniniame tinkle! Tereikia sukurti tinklą su tankiu klasifikatoriumi viršuje ir tada visą tinklą mokyti naudojant atgalinį sklidimą.\n" + "Keras architektūros grožis yra tas, kad aukščiau aprašytas VGG-16 modelis taip pat gali būti naudojamas kaip sluoksnis kitoje neuroninėje tinkle! Tiesiog reikia sukurti tinklą su tankiu klasifikatoriumi viršuje ir apmokyti visą tinklą naudodami atgalinį sklidimą.\n" ] }, { @@ -796,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Šis modelis atrodo kaip pilno ciklo klasifikavimo tinklas, kuris priima vaizdą ir grąžina klasę. Tačiau sudėtinga dalis yra ta, kad mes norime, jog VGG16 veiktų kaip požymių ištraukiklis, o ne būtų iš naujo apmokytas. Todėl turime **užfiksuoti konvoliucinio požymių ištraukiklio svorius**. Pirmąjį tinklo sluoksnį galime pasiekti iškviesdami `model.layers[0]`, ir mums tereikia nustatyti `trainable` savybę į `False`.\n", + "Šis modelis atrodo kaip pilnas klasifikacijos tinklas, kuris gauna paveikslėlį ir grąžina klasę. Tačiau sudėtinga tai, kad norime, jog VGG16 veiktų kaip bruožų išgavėjas ir nebūtų pereikaluojamas. Todėl reikia **užšaldyti konvoliucinio bruožų išgavėjo svorius**. Galime pasiekti pirmą tinklo sluoksnį iškviesdami `model.layers[0]`, ir tereikia nustatyti `trainable` savybę į `False`.\n", "\n", - "> **Pastaba**: Požymių ištraukiklio svorių užfiksavimas yra būtinas, nes kitaip neapmokytas klasifikatoriaus sluoksnis gali sugadinti originalius iš anksto apmokytus konvoliucinio ištraukiklio svorius.\n", + "> **Pastaba**: Bruožų išgavėjo svorių užšaldymas yra reikalingas, nes kitaip nepereinamas klasifikatoriaus sluoksnis gali sunaikinti originalius iš anksto apmokytus konvoliucinio išgavėjo svorius.\n", "\n", - "Galite pastebėti, kad nors bendras mūsų tinklo parametrų skaičius yra apie 15 milijonų, mes treniruojame tik 25 tūkst. parametrų. Visi kiti aukščiausio lygio konvoliucinių filtrų parametrai yra iš anksto apmokyti. Tai yra gerai, nes galime optimizuoti mažesnį parametrų skaičių naudodami mažesnį pavyzdžių kiekį.\n", + "Galite pastebėti, kad nors bendras tinklo parametrų skaičius yra apie 15 milijonų, mes mokome tik 25 tūkstančius parametrų. Visi kiti viršutinio lygio konvoliucinių filtrų parametrai yra iš anksto apmokyti. Tai yra gerai, nes galime tikslinti mažesnį parametrų skaičių su mažesniu pavyzdžių kiekiu.\n", "\n", - "Dabar apmokysime savo tinklą ir pažiūrėsime, kokių rezultatų galime pasiekti. Tikėkitės gana ilgo vykdymo laiko ir nesijaudinkite, jei vykdymas tam tikrą laiką atrodo sustingęs.\n" + "Dabar apmokysime mūsų tinklą ir pažiūrėsime, kaip gerai galime pasiekti rezultatus. Tikėkitės pakankamai ilgo mokymo laiko ir nesijaudinkite, jei vykdymas tam tikrą laiką atrodys sustojęs.\n" ] }, { @@ -827,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Atrodo, kad mums pavyko sukurti gana tikslų kačių ir šunų klasifikatorių!\n", + "Atrodo, kad mums pavyko sukurti pakankamai tikslų kačių ir šunų klasifikatorių! \n", "\n", "## Modelio išsaugojimas ir įkėlimas\n", "\n", - "Kai modelis yra apmokytas, galime išsaugoti modelio architektūrą ir apmokytus svorius faile, kad galėtume naudoti ateityje:\n" + "Kai išmokome modelį, galime išsaugoti modelio architektūrą ir apmokytus svorius į failą tolimesniam naudojimui:\n" ] }, { @@ -855,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tada galime bet kada įkelti modelį iš failo. Tai gali būti naudinga, jei kitas eksperimentas sugadintų modelį – nereikėtų pradėti nuo nulio.\n" + "Modelį galime bet kada įkelti iš failo. Tai gali būti naudinga, jei kitas eksperimentas sugadina modelį – nereikės pradėti nuo nulio.\n" ] }, { @@ -871,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Perėjimas prie mokymosi pritaikymo\n", + "## Perkėlimo mokymosi smulkus reguliavimas\n", "\n", - "Ankstesniame skyriuje mes apmokėme galutinį klasifikatoriaus sluoksnį, kad jis klasifikuotų vaizdus mūsų pačių duomenų rinkinyje. Tačiau mes nepermokėme požymių ištraukiklio, ir mūsų modelis rėmėsi požymiais, kuriuos jis išmoko iš ImageNet duomenų. Jei jūsų objektai vizualiai skiriasi nuo įprastų ImageNet vaizdų, toks požymių derinys gali neveikti geriausiai. Todėl prasminga pradėti mokyti ir konvoliucinius sluoksnius.\n", + "Ankstesniame skyriuje mes išmokėme paskutinį klasifikatoriaus sluoksnį klasifikuoti paveikslėlius mūsų duomenų rinkinyje. Tačiau mes neišmokėme iš naujo ypatybių ištraukiklio, ir mūsų modelis rėmėsi ypatybėmis, kurias modelis buvo išmokęs ImageNet duomenyse. Jeigu jūsų objektai vizualiai skiriasi nuo įprastinių ImageNet paveikslėlių, ši ypatybių kombinacija gali būti ne pati geriausia. Todėl prasminga ir pradėti mokyti konvoliucinius sluoksnius.\n", "\n", - "Norėdami tai padaryti, galime atšildyti konvoliucinių filtrų parametrus, kuriuos anksčiau buvome užšaldę.\n", + "Tam mes galime atšildyti konvoliucinių filtrų parametrus, kuriuos anksčiau užšaldėme.\n", "\n", - "> **Note:** Svarbu pirmiausia užšaldyti parametrus ir atlikti kelis mokymo epochas, kad stabilizuotumėte svorius klasifikatoriaus sluoksnyje. Jei iš karto pradėsite mokyti tinklą nuo pradžios iki pabaigos su atšildytais parametrais, didelės klaidos gali sugadinti iš anksto apmokytus svorius konvoliuciniuose sluoksniuose.\n", + "> **Pastaba:** Svarbu pirmiausia užšaldyti parametrus ir atlikti kelis mokymo epochus, kad stabilizuotumėte svorius klasifikacijos sluoksnyje. Jei iš karto pradėsite mokyti visą tinklą su atšildytais parametrais, didelės klaidos gali sunaikinti iš anksto išmoktus svorius konvoliuciniuose sluoksniuose.\n", "\n", - "Mūsų konvoliucinis VGG-16 modelis yra pirmame sluoksnyje ir pats susideda iš daugelio sluoksnių. Galime pažvelgti į jo struktūrą:\n" + "Mūsų konvoliucinis VGG-16 modelis yra pirmojo sluoksnio viduje ir jis pats susideda iš daug sluoksnių. Galime pažvelgti į jo struktūrą:\n" ] }, { @@ -948,7 +956,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mes galime atšildyti visus konvoliucinės bazės sluoksnius:\n" + "Galime atšaldyti visas konvoliucinio pagrindo sluoksnius:\n" ] }, { @@ -964,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Tačiau atšildyti visus iš karto nėra geriausia idėja. Pirmiausia galime atšildyti tik kelis paskutinius konvoliucijų sluoksnius, nes jie turi aukštesnio lygio šablonus, kurie yra svarbūs mūsų vaizdams. Pavyzdžiui, pradžiai galime užšaldyti visus sluoksnius, išskyrus paskutinius 4:\n" + "Tačiau vienu metu atšildyti visus sluoksnius nėra geriausia idėja. Pirmiausia galime atšildyti tik kelis paskutinius konvoliucinius sluoksnius, nes jie apima aukštesnio lygio šablonus, kurie yra svarbūs mūsų paveikslėliams. Pvz., pradžiai galime užšaldyti visus sluoksnius, išskyrus paskutinius 4:\n" ] }, { @@ -1003,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Atkreipkite dėmesį, kad treniruojamų parametrų skaičius žymiai padidėjo, tačiau vis tiek sudaro apie 50% visų parametrų.\n", + "Pastebėkite, kad apmokomų parametrų skaičius žymiai padidėjo, bet vis tiek sudaro maždaug 50 % visų parametrų.\n", "\n", - "Po atrakinimo galime atlikti dar kelis treniravimo epochus (mūsų pavyzdyje atliksime tik vieną). Taip pat galite pasirinkti mažesnį mokymosi greitį, kad sumažintumėte poveikį iš anksto apmokytiems svoriams. Tačiau net ir esant mažam mokymosi greičiui, galite tikėtis, kad tikslumas treniravimo pradžioje sumažės, kol galiausiai pasieks šiek tiek aukštesnį lygį nei fiksuotų svorių atveju.\n", + "Atšilus užšaldymui, galime atlikti keletą papildomų apmokymų epochų (mūsų pavyzdyje atliksime tik vieną). Taip pat galite pasirinkti mažesnį mokymosi greitį, kad sumažintumėte poveikį iš anksto apmokėtiems svoriams. Tačiau net ir su mažu mokymosi greičiu galite tikėtis, kad tikslumas sumažės apmokymo pradžioje, kol galų gale pasieks šiek tiek aukštesnį lygį nei fiksuotų svorių atveju.\n", "\n", - "> **Pastaba:** Šis treniravimas vyksta daug lėčiau, nes turime skleisti gradientus atgal per daugelį tinklo sluoksnių!\n" + "> **Pastaba:** Šis mokymas vyksta daug lėčiau, nes reikia atgal per daugelį tinklo sluoksnių skleisti gradientus!\n" ] }, { @@ -1031,9 +1039,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mes tikriausiai pasieksime didesnį treniravimo tikslumą, nes naudojame galingesnį tinklą su daugiau parametrų, tačiau patikros tikslumas nepadidės tiek daug.\n", + "Tikėtina, kad pasieksime didesnį mokymo tikslumą, nes naudojame galingesnį tinklą su daugiau parametrų, tačiau validacijos tikslumas nepadidės tiek daug.\n", "\n", - "Drąsiai atšaldykite kelis papildomus tinklo sluoksnius ir treniruokite toliau, kad pamatytumėte, ar galite pasiekti didesnį tikslumą!\n" + "Drąsiai atšaldykite dar kelis tinklo sluoksnius ir mokykite toliau, kad pamatytumėte, ar sugebėsite pasiekti didesnį tikslumą!\n" ] }, { @@ -1042,7 +1050,7 @@ "source": [ "## Kiti kompiuterinės regos modeliai\n", "\n", - "VGG-16 yra viena iš paprasčiausių kompiuterinės regos architektūrų. Keras siūlo daug daugiau iš anksto apmokytų tinklų. Dažniausiai naudojami tarp jų yra **ResNet** architektūros, sukurtos Microsoft, ir **Inception** iš Google. Pavyzdžiui, pažvelkime į paprasčiausio ResNet-50 modelio architektūrą (ResNet yra modelių šeima su skirtingu gyliu, galite pabandyti eksperimentuoti su ResNet-152, jei norite pamatyti, kaip atrodo tikrai gilus modelis):\n" + "VGG-16 yra viena paprasčiausių kompiuterinės regos architektūrų. Keras suteikia daug daugiau iš anksto apmokytų tinklų. Dažniausiai naudojamos iš jų yra **ResNet** architektūros, sukurtos Microsoft, ir **Inception** iš Google. Pavyzdžiui, pažvelkime į paprasčiausio ResNet-50 modelio architektūrą (ResNet yra modelių šeima su skirtingu gylį, jei norite pamatyti, kaip atrodo tikrai gilus modelis, galite išbandyti ResNet-152):\n" ] }, { @@ -1444,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Kaip matote, modelis sudarytas iš tų pačių pažįstamų komponentų: konvoliucinių sluoksnių, telkimo sluoksnių ir galutinio tankaus klasifikatoriaus. Šį modelį galime naudoti lygiai taip pat, kaip naudojome VGG-16 perkėlimo mokymuisi. Galite eksperimentuoti su aukščiau pateiktu kodu, naudodami skirtingus ResNet modelius kaip bazinį modelį, ir stebėti, kaip keičiasi tikslumas.\n", + "Kaip matote, modelyje yra tie patys pažįstami blokai: konvoliuciniai sluoksniai, sutraukimo sluoksniai ir galutinis tankus klasifikatorius. Šią modelį galima naudoti visiškai taip pat, kaip naudojome VGG-16 perdavimui mokytis. Galite pabandyti eksperimentuoti su aukščiau pateiktu kodu, naudodami skirtingus ResNet modelius kaip bazinį modelį ir stebėti, kaip keičiasi tikslumas.\n", "\n", - "## Partijų normalizavimas\n", + "## Papildomas normalizavimas per partiją\n", "\n", - "Šiame tinkle yra dar vienas sluoksnio tipas: **Partijų normalizavimas**. Partijų normalizavimo idėja yra sureguliuoti reikšmes, kurios keliauja per neuroninį tinklą, į tinkamą intervalą. Paprastai neuroniniai tinklai veikia geriausiai, kai visos reikšmės yra intervale [-1,1] arba [0,1], todėl mes atitinkamai masteliuojame/normalizuojame įvesties duomenis. Tačiau mokant gilų tinklą gali nutikti taip, kad reikšmės smarkiai išeina už šio intervalo ribų, o tai apsunkina mokymą. Partijų normalizavimo sluoksnis apskaičiuoja dabartinės mini partijos vidurkį ir standartinį nuokrypį ir naudoja juos signalui normalizuoti prieš perduodant jį per neuroninio tinklo sluoksnį. Tai žymiai pagerina giliųjų tinklų stabilumą.\n" + "Šiame tinkle yra dar vienas sluoksnio tipas: **partijos normalizavimas**. Partijos normalizavimo idėja yra pritaikyti reikšmes, kurios teka per neuroninį tinklą, tinkamam intervalui. Paprastai neuroniniai tinklai geriausiai veikdavo, kai visos reikšmės buvo intervale [-1,1] arba [0,1], todėl mes atitinkamai mastome/normalizuojame įvesties duomenis. Tačiau giliosios mokymosi tinklo mokymo metu gali nutikti, kad reikšmės ženkliai išeina už šio intervalo ribų, kas apsunkina mokymąsi. Partijos normalizavimo sluoksnis apskaičiuoja vidurkį ir standartinį nuokrypį visoms dabartinės minibaterijos reikšmėms ir naudoja juos signalo normalizavimui prieš perduodant jį per neuroninio tinklo sluoksnį. Tai žymiai pagerina giliųjų tinklų stabilumą.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Pagrindinė mintis\n", + "## Apibendrinimas\n", "\n", - "Naudodami perkėlimo mokymąsi, mes greitai sukūrėme klasifikatorių mūsų individualiai objektų klasifikavimo užduočiai ir pasiekėme aukštą tikslumą. Tačiau šis pavyzdys nebuvo visiškai sąžiningas, nes originalus VGG-16 tinklas buvo iš anksto apmokytas atpažinti kates ir šunis, todėl mes tiesiog pakartotinai panaudojome daugumą jau esančių tinklo šablonų. Galite tikėtis mažesnio tikslumo, kai dirbama su egzotiškesniais, specifiniais objektais, pavyzdžiui, gamyklos gamybos linijos detalėmis ar skirtingais medžių lapais.\n", + "Naudodami perkeliamąjį mokymą, galėjome greitai sukurti klasifikatorių mūsų pasirinktam objektų klasifikavimo uždaviniui ir pasiekti aukštą tikslumą. Tačiau šis pavyzdys nebuvo visiškai sąžiningas, nes originalus VGG-16 tinklas buvo iš anksto apmokytas atpažinti kates ir šunis, todėl mes tiesiog pakartotinai panaudojome daugumą šiame tinkle jau esančių modelių. Galite tikėtis mažesnio tikslumo su egzotiškesniais, specifiniais domeno objektais, pavyzdžiui, gamybos linijos detalėmis gamykloje ar skirtingų medžių lapais.\n", "\n", - "Galite pastebėti, kad sudėtingesnėms užduotims, kurias dabar sprendžiame, reikia didesnės skaičiavimo galios ir jos negali būti lengvai išspręstos naudojant tik CPU. Kitoje dalyje bandysime naudoti lengvesnę įgyvendinimo versiją, kad apmokytume tą patį modelį su mažesniais skaičiavimo resursais, o tai duos tik šiek tiek mažesnį tikslumą.\n" + "Matote, kad sudėtingesni uždaviniai, kuriuos dabar sprendžiame, reikalauja didesnio skaičiavimo pajėgumo ir jų negalima lengvai išspręsti tik naudojant CPU. Kitame skyriuje mes bandysime naudoti lengvesnę įgyvendinimo versiją tam pačiam modeliui apmokyti su mažesnėmis skaičiavimo ištekliais, kas duos tik šiek tiek mažesnį tikslumą.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Atsakomybės apribojimas**: \nŠis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, atkreipkite dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, kylančius dėl šio vertimo naudojimo.\n" + "---\n\n\n**Atsakomybės apribojimas**:\nŠis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.\n\n" ] } ], @@ -1487,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-31T12:46:44+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "lt" } }, "nbformat": 4, diff --git a/translations/lt/lessons/5-NLP/README.md b/translations/lt/lessons/5-NLP/README.md index e4d8afa8..4649482f 100644 --- a/translations/lt/lessons/5-NLP/README.md +++ b/translations/lt/lessons/5-NLP/README.md @@ -1,51 +1,51 @@ # Natūralios kalbos apdorojimas -![NLP užduočių santrauka piešinyje](../../../../translated_images/lt/ai-nlp.b22dcb8ca4707cea.webp) +![Santrauka apie NLP užduotis vaizduojanti piešinuką](../../../../translated_images/lt/ai-nlp.b22dcb8ca4707cea.webp) -Šiame skyriuje mes sutelksime dėmesį į neuroninių tinklų naudojimą užduotims, susijusioms su **natūralios kalbos apdorojimu (NLP)**. Yra daugybė NLP problemų, kurias norime, kad kompiuteriai galėtų išspręsti: +Šioje dalyje mes susitelksime į neuroninių tinklų naudojimą užduotims, susijusioms su **natūralios kalbos apdorojimu (NLP)**. Yra daug NLP problemų, kurias norime, kad kompiuteriai galėtų spręsti: -* **Teksto klasifikavimas** yra tipiška klasifikavimo problema, susijusi su teksto sekų analizavimu. Pavyzdžiai apima el. laiškų klasifikavimą kaip šlamštą ar ne šlamštą arba straipsnių kategorijų nustatymą, pvz., sportas, verslas, politika ir kt. Taip pat, kuriant pokalbių robotus, dažnai reikia suprasti, ką vartotojas norėjo pasakyti – šiuo atveju susiduriame su **ketinimų klasifikavimu**. Ketinimų klasifikavime dažnai reikia dirbti su daugybe kategorijų. -* **Nuotaikos analizė** yra tipiška regresijos problema, kurioje reikia priskirti skaičių (nuotaiką), atitinkantį, kiek teigiamas/neigiamas yra sakinio prasmė. Pažangesnė nuotaikos analizės versija yra **nuotaikos analizė pagal aspektus** (ABSA), kur nuotaika priskiriama ne visam sakiniui, o skirtingoms jo dalims (aspektams), pvz., *Šiame restorane man patiko virtuvė, bet atmosfera buvo siaubinga*. -* **Pavadintų objektų atpažinimas** (NER) reiškia problemą, kai reikia išgauti tam tikrus objektus iš teksto. Pavyzdžiui, frazėje *Man reikia skristi į Paryžių rytoj* žodis *rytoj* reiškia DATĄ, o *Paryžius* yra VIETA. -* **Raktinių žodžių išgavimas** yra panašus į NER, tačiau reikia automatiškai išgauti žodžius, svarbius sakinio prasmei, be išankstinio mokymo konkretiems objektų tipams. -* **Teksto grupavimas** gali būti naudingas, kai norime sugrupuoti panašius sakinius, pavyzdžiui, panašius prašymus techninės pagalbos pokalbiuose. -* **Klausimų atsakymas** reiškia modelio gebėjimą atsakyti į konkretų klausimą. Modelis gauna teksto ištrauką ir klausimą kaip įvestį, o jam reikia pateikti vietą tekste, kur yra atsakymas į klausimą (arba kartais sugeneruoti atsakymo tekstą). -* **Teksto generavimas** yra modelio gebėjimas generuoti naują tekstą. Tai galima laikyti klasifikavimo užduotimi, kurioje prognozuojamas kitas raidė/žodis pagal tam tikrą *teksto užuominą*. Pažangūs teksto generavimo modeliai, tokie kaip GPT-3, gali spręsti kitas NLP užduotis, pvz., klasifikavimą, naudojant techniką, vadinamą [užuominų programavimu](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) arba [užuominų inžinerija](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Teksto santrauka** yra technika, kai norime, kad kompiuteris "perskaitytų" ilgą tekstą ir apibendrintų jį keliomis sakiniais. -* **Mašininis vertimas** gali būti laikomas teksto supratimo viena kalba ir teksto generavimo kita kalba deriniu. +* **Teksto klasifikacija** yra tipinė klasifikacijos problema, susijusi su tekstinių sekų klasifikavimu. Pavyzdžiai apima el. laiškų žymėjimą kaip šlamštas ir ne šlamštas, ar straipsnių kategorijavimą į sportą, verslą, politiką ir pan. Taip pat, kuriant pokalbių robotus, dažnai reikia suprasti, ką vartotojas norėjo pasakyti – tokiu atveju mes sprendžiame **ketinimų klasifikavimo** užduotį. Dažnai ketinimų klasifikacijoje tenka dirbti su daugeliu kategorijų. +* **Nuotaikos analizė** yra tipinė regresijos užduotis, kur reikia priskirti skaičių (nuotaiką), atitinkančią, kiek teigiama ar neigiama sakinio reikšmė. Išplėstinė nuotaikos analizės versija yra **aspektinė nuotaikos analizė** (ABSA), kur nuotaika priskiriama ne visam sakiniui, o skirtingoms jo dalims (aspektams), pvz. *Šiame restorane man patiko virtuvė, bet atmosfera buvo baisi*. +* **Vardinių vienetų atpažinimas** (NER) reiškia problemą iš teksto išskirti tam tikrus vienetus. Pavyzdžiui, turime suprasti, kad frazėje *Man reikia rytoj nuskristi į Paryžių* žodis *rytoj* reiškia DATĄ, o *Paryžius* yra VIETA. +* **Raktinių žodžių išskyrimas** yra panašus į NER, tačiau reikia automatiškai išskirti svarbius žodžius sakinio reikšmei be išankstinio apmokymo pagal konkrečius vienetų tipus. +* **Teksto grupavimas** gali būti naudingas, kai norime suskirstyti panašius sakinius į grupes, pavyzdžiui, panašius užklausimus techninės pagalbos pokalbiuose. +* **Klausimų atsakymas** reiškia modelio gebėjimą atsakyti į konkretų klausimą. Modelis gauna teksto ištrauką ir klausimą kaip įvestį ir turi pateikti vietą tekste, kur randamas atsakymas (arba kartais sugeneruoti atsakymo tekstą). +* **Teksto generavimas** yra modelio gebėjimas kurti naują tekstą. Tai galima laikyti klasifikacijos užduotimi, kuri pagal tam tikrą *teksto užuominą* prognozuoja kitą raidę/žodį. Pažangūs teksto generavimo modeliai, tokie kaip GPT-3, gali spręsti kitas NLP užduotis, tokias kaip klasifikacija, naudodami vadinamąją [užuominos programavimą](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ar [užuominos inžineriją](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) +* **Teksto santrauka** yra technika, kai norime, kad kompiuteris „perskaitytų“ ilgą tekstą ir apibendrintų jį keliomis sakiniais. +* **Mašinų vertimas** gali būti laikomas teksto supratimo vienoje kalboje ir teksto generavimo kitoje kalboje deriniu. -Iš pradžių dauguma NLP užduočių buvo sprendžiamos naudojant tradicinius metodus, tokius kaip gramatikos. Pavyzdžiui, mašininiame vertime buvo naudojami analizatoriai, kad pradinė frazė būtų paversta sintaksės medžiu, tada buvo išgaunamos aukštesnio lygio semantinės struktūros, kad būtų atspindėta sakinio prasmė, ir remiantis šia prasme bei tikslinės kalbos gramatika buvo generuojamas rezultatas. Šiandien daugelis NLP užduočių efektyviau sprendžiamos naudojant neuroninius tinklus. +Iš pradžių daugumą NLP užduočių spręsdavo tradiciniais metodais, tokiais kaip gramatikos taisyklės. Pavyzdžiui, mašininiame vertime naudoti analizatoriai (parseriai), kurie pradines sakinių struktūras paversdavo sintaksinėmis medžio struktūromis, tuomet išgavus aukštesnio lygio semantines struktūras atstovauti sakinio prasmę, ir remiantis šia prasme bei tikslinės kalbos gramatika sugeneruoti rezultatą. Šiandien daug NLP užduočių efektyviau sprendžiama naudojant neuroninius tinklus. -> Daugelis klasikinių NLP metodų yra įgyvendinti [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python bibliotekoje. Internete yra puiki [NLTK knyga](https://www.nltk.org/book/), kurioje aptariama, kaip skirtingos NLP užduotys gali būti sprendžiamos naudojant NLTK. +> Daugelis klasikinių NLP metodų yra įgyvendinti [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python bibliotekoje. Yra puiki [NLTK Knyga](https://www.nltk.org/book/), prieinama internete, kurioje aptariama, kaip skirtingas NLP užduotis galima spręsti naudojant NLTK. -Mūsų kurse mes daugiausia dėmesio skirsime neuroninių tinklų naudojimui NLP, o NLTK naudosime, kai to reikės. +Mūsų kurse daugiausia dėmesio skirsime neuroniniams tinklams NLP srityje ir naudosime NLTK, kai to reikės. -Mes jau išmokome naudoti neuroninius tinklus darbui su lenteliniais duomenimis ir vaizdais. Pagrindinis skirtumas tarp šių duomenų tipų ir teksto yra tas, kad tekstas yra kintamo ilgio seka, o vaizdų atveju įvesties dydis yra žinomas iš anksto. Nors konvoliuciniai tinklai gali išgauti šablonus iš įvesties duomenų, šablonai tekste yra sudėtingesni. Pvz., neigimas gali būti atskirtas nuo subjekto daugybe žodžių (pvz., *Man nepatinka apelsinai* vs. *Man nepatinka tie dideli spalvingi skanūs apelsinai*), ir tai vis tiek turėtų būti interpretuojama kaip vienas šablonas. Todėl, norint apdoroti kalbą, reikia įvesti naujus neuroninių tinklų tipus, tokius kaip *rekurentiniai tinklai* ir *transformeriai*. +Jau esame išmokę naudoti neuroninius tinklus darbui su lenteliniu duomenimis ir vaizdais. Pagrindinis skirtumas tarp tokių duomenų ir teksto yra tas, kad tekstas yra kintamo ilgio seka, o įvesties dydis vaizdų atveju yra iš anksto žinomas. Nors konvoliuciniai tinklai gali išgauti modelius iš įvesties duomenų, teksto modeliai yra sudėtingesni. Pvz., neigimo žodžiai gali būti atskirti nuo veiksnio žodžio daugybe žodžių (pvz., *Man nepatinka apelsinai* ir *Man nepatinka tie dideli spalvingi skanūs apelsinai*), tačiau tai vis tiek turėtų būti interpretuojama kaip vienas modelis. Todėl kalbos apdorojimui reikia naudoti naujas neuroninių tinklų rūšis, tokias kaip *rekursiniai tinklai* ir *transformeriai*. ## Bibliotekų įdiegimas -Jei naudojate vietinę Python instaliaciją šiam kursui vykdyti, jums gali prireikti įdiegti visas reikalingas NLP bibliotekas naudojant šias komandas: +Jei naudojate vietinę Python instaliaciją šiam kursui vykdyti, jums gali prireikti įdiegti visas reikalingas NLP bibliotekas naudodami šias komandas: -**PyTorch** +**PyTorch atveju** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.txt ``` -**TensorFlow** +**TensorFlow atveju** ```bash pip install -r requirements-tf.txt ``` > NLP su TensorFlow galite išbandyti [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) -## GPU Įspėjimas +## Įspėjimas dėl GPU -Šiame skyriuje kai kuriuose pavyzdžiuose mes treniruosime gana didelius modelius. -* **Naudokite kompiuterį su GPU**: Patartina vykdyti savo užrašų knygeles kompiuteryje su GPU, kad sumažintumėte laukimo laiką dirbant su dideliais modeliais. -* **GPU atminties apribojimai**: Naudojant GPU gali kilti situacijų, kai pritrūksta GPU atminties, ypač treniruojant didelius modelius. -* **GPU atminties naudojimas**: GPU atminties kiekis, sunaudojamas treniruotės metu, priklauso nuo įvairių veiksnių, įskaitant mini paketų dydį. -* **Mažinkite mini paketų dydį**: Jei susiduriate su GPU atminties problemomis, apsvarstykite galimybę sumažinti mini paketų dydį savo kode kaip galimą sprendimą. -* **TensorFlow GPU atminties išlaisvinimas**: Senesnės TensorFlow versijos gali neteisingai išlaisvinti GPU atmintį, kai treniruojami keli modeliai viename Python branduolyje. Norėdami efektyviai valdyti GPU atminties naudojimą, galite sukonfigūruoti TensorFlow, kad GPU atmintis būtų paskirstoma tik tada, kai to reikia. -* **Kodo įtraukimas**: Norėdami nustatyti TensorFlow, kad GPU atmintis būtų paskirstoma tik tada, kai to reikia, įtraukite šį kodą į savo užrašų knygeles: +Šioje dalyje kai kuriuose pavyzdžiuose mokysime gana didelius modelius. +* **Naudokite kompiuterį su GPU**: patartina paleisti savo užrašų knygutes (notebook) kompiuteryje su GPU, kad sumažintumėte laukimo laiką dirbant su dideliais modeliais. +* **GPU atminties apribojimai**: dirbant su GPU gali atsirasti atvejų, kai pritrūksta GPU atminties, ypač treniruojant didelius modelius. +* **GPU atminties naudojimas**: GPU atminties sunaudojimas treniruočių metu priklauso nuo daugelio veiksnių, įskaitant mini paketo dydį. +* **Sumažinkite mini paketo dydį**: jei kyla GPU atminties problemų, apsvarstykite mini paketo dydžio sumažinimą savo kode kaip galimą sprendimą. +* **TensorFlow GPU atminties išlaisvinimas**: senesnės TensorFlow versijos gali neteisingai išlaisvinti GPU atmintį treniruojant kelis modelius viename Python branduolyje. Norint efektyviai valdyti GPU atminties naudojimą, galite sukonfigūruoti TensorFlow taip, kad GPU atmintis būtų rezervuojama tik būtiniausiais atvejais. +* **Kodo įtraukimas**: norint, kad TensorFlow GPU atmintį pritrauktų tik augant poreikiui, įtraukite šį kodą į savo užrašų knygutes: ```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) ``` -Jei jus domina NLP mokymasis iš klasikinės ML perspektyvos, apsilankykite [šiame pamokų rinkinyje](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). +Jei jus domina NLP mokymasis iš klasikinio ML požiūrio, apsilankykite [šiame pamokų rinkinyje](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) -## Šiame skyriuje -Šiame skyriuje mes išmoksime: +## Šioje dalyje +Šioje dalyje mes sužinosime apie: -* [Teksto atvaizdavimas kaip tensoriai](13-TextRep/README.md) -* [Žodžių įterpimai](14-Emdeddings/README.md) -* [Kalbos modeliavimas](15-LanguageModeling/README.md) -* [Rekurentiniai neuroniniai tinklai](16-RNN/README.md) -* [Generatyviniai tinklai](17-GenerativeNetworks/README.md) -* [Transformeriai](18-Transformers/README.md) +* [Teksto vaizdavimą tensoriais](13-TextRep/README.md) +* [Žodžių įterpimus](14-Emdeddings/README.md) +* [Kalbos modeliavimą](15-LanguageModeling/README.md) +* [Rekursinius neuroninius tinklus](16-RNN/README.md) +* [Generatyvinius tinklus](17-GenerativeNetworks/README.md) +* [Transformerius](18-Transformers/README.md) --- -**Atsakomybės apribojimas**: -Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo. \ No newline at end of file + +**Atsakomybės apribojimas**: +Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu. + \ No newline at end of file diff --git a/translations/ta/.co-op-translator.json b/translations/ta/.co-op-translator.json index f787fe5f..3899d59d 100644 --- a/translations/ta/.co-op-translator.json +++ b/translations/ta/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "ta" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T15:01:14+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "ta" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T20:36:19+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "ta" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "ta", + "failure_date": "2026-07-08T15:00:39+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-10-11T11:52:00+00:00", @@ -54,8 +73,8 @@ "language_code": "ta" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-11T11:16:53+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T14:52:57+00:00", "source_file": "examples/README.md", "language_code": "ta" }, @@ -66,8 +85,8 @@ "language_code": "ta" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T06:55:50+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T14:54:21+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "ta" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "ta" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T14:41:57+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "ta" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-10-11T11:21:48+00:00", @@ -330,8 +355,8 @@ "language_code": "ta" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-10-11T11:38:10+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T14:55:04+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "ta" }, diff --git a/translations/ta/CONTRIBUTING.md b/translations/ta/CONTRIBUTING.md new file mode 100644 index 00000000..e3a326f1 --- /dev/null +++ b/translations/ta/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# AI-For-Beginners இல் பங்களித்தல் + +AI-For-Beginners இல் பங்களிக்க உங்கள் ஆர்வத்திற்கு நன்றி! நாங்கள் மொழிபெயர்ப்புகள், பாட மேம்பாடுகள் மற்றும் வடிவமைப்பு திருத்தங்களை வரவேற்கின்றோம். + +## Microsoft பங்களிப்பாளரின் உரிம ஒப்பந்தம் (CLA) + +இந்த திட்டம் பங்களிப்புகள் மற்றும் பரிந்துரைகளை வரவேற்கிறது. பெரும்பாலான பங்களிப்புகள் நீங்கள் உரிமம் பெற்றுள்ளதாகவும் உங்கள் பங்களிப்பை பயன்படுத்த உரிமம் வழங்குகிறீர்கள் என்றும் அறிவிக்கும் பங்களிப்பாளர் உரிம ஒப்பந்தம் (CLA) ஒன்றை ஏற்க தேவையுண்டு. விரிவுகளுக்கு [https://cla.microsoft.com](https://cla.microsoft.com) ஐப் பார்வையிடவும். + +நீங்கள் ஒரு புல் கோரிக்கையை சமர்ப்பிக்கும் போது, CLA-பாட் தானாகவே நீங்கள் CLA வழங்க வேண்டும் என்பதை தீர்மானித்து PR-ஐ உரிய முறையில் குறி-நூற்படுத்தும் (எ.கா., லேபிள், கருத்து). பாட்டின் வழங்கும் வழிமுறைகளை பின்பற்றவும். எங்கள் CLA பயன்படும் அனைத்து ரெப்போசிடரிகளிலும் இதை ஒருமுறை மட்டுமே செய்வது போதும். + +## எப்படி பங்களிப்பது + +### 1. குறைபாடுகள் / கோடு பிழைகளை சீர்செய்தல் +எந்த Jupyter நோட்புக் அல்லது பாடம் மார்க்டவுன் கோப்பிலும் பிழை அல்லது தவறு கண்டுபிடித்தால்: +1. ரெப்போசிடரியை பிளவு செய்யவும். +2. பிழை அல்லது உடைந்த இணைப்பை சரி செய்யவும். +3. திருத்தம் பற்றிய தெளிவான விளக்கத்துடன் ஒரு புல் கோரிக்கை சமர்ப்பிக்கவும். + +### 2. மொழிபெயர்ப்புகளை சமர்ப்பித்தல் +பாடங்களை மற்ற மொழிகளில் மொழிபெயர்ப்பதற்கு நாங்கள் அன்புடன் வரவேற்கின்றோம்! `translations/` அடைவுக்குள் உள்ள ஏற்கனவே உள்ள ஃபோல்டர் பெயர்களைப் பயன்படுத்தி மொழிபெயர்ப்புகளை வைக்கவும் (எ.கா., `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +மேலதிக விபரங்களுக்கு, [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md) ஐ பார்க்கவும். + +--- + + +**மறுப்பு**: +இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை. + \ No newline at end of file diff --git a/translations/ta/examples/README.md b/translations/ta/examples/README.md index 1071b5d0..9412855b 100644 --- a/translations/ta/examples/README.md +++ b/translations/ta/examples/README.md @@ -1,85 +1,87 @@ -# தொடக்கநிலை AI உதாரணங்கள் +# துவக்க நிலை நண்பான AI எடுத்துக்காட்டுகள் -வரவேற்கிறோம்! இந்த அடைவு எளிய, தனித்துவமான உதாரணங்களை கொண்டுள்ளது, இது உங்களை AI மற்றும் இயந்திரக் கற்றலில் தொடங்க உதவுகிறது. ஒவ்வொரு உதாரணமும் தொடக்கநிலைக்கு ஏற்றவாறு வடிவமைக்கப்பட்டுள்ளது, விரிவான கருத்துரைகள் மற்றும் படிப்படியாக விளக்கங்களுடன். +வரவேற்கிறோம்! இந்த அடைவை AI மற்றும் இயந்திரக் கற்றலுடன் ஆரம்பிக்க உதவும் எளிமையான, தனித்துவமான எடுத்துக்காட்டுகளைப் பெற்றுள்ளது. ஒவ்வொரு எடுத்துக்காட்டும் துவக்க நிலைக்கு பொருத்தமாக விரிவான விளக்கங்கள் மற்றும் படி படியாக விளக்கங்கள் உடன் வடிவமைக்கப்பட்டுள்ளது. -## 📚 உதாரணங்களின் மேற்பார்வை +## 📚 எடுத்துக்காட்டு கண்ணோட்டம் -| உதாரணம் | விளக்கம் | கடினம் | முன் அறிவு | +| எடுத்துக்காட்டு | விளக்கம் | கடினம் | முன் தேவைகள் | |---------|-------------|------------|---------------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | உங்கள் முதல் AI நிரல் - எளிய முறைமைகள் அடையாளம் காணுதல் | ⭐ தொடக்கநிலை | Python அடிப்படைகள் | -| [Simple Neural Network](../../../examples/02-simple-neural-network.py) | ஒரு நரம்பு வலைப்பின்னலை அடிப்படையில் உருவாக்குதல் | ⭐⭐ தொடக்கநிலை+ | Python, அடிப்படை கணிதம் | -| [Image Classifier](./03-image-classifier.ipynb) | முன் பயிற்சி பெற்ற மாதிரியைப் பயன்படுத்தி படங்களை வகைப்படுத்துதல் | ⭐⭐ தொடக்கநிலை+ | Python, numpy | -| [Text Sentiment](../../../examples/04-text-sentiment.py) | உரை உணர்வுகளை (நல்ல/கெட்ட) பகுப்பாய்வு செய்தல் | ⭐⭐ தொடக்கநிலை+ | Python | +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | உங்கள் முதல் AI நிரல் - எளிய திருவுருவம் அடையாளம் காணல் | ⭐ துவக்க நிலை | Python அடிப்படைகள் | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | ஒரு நரம்பு வலையமைப்பை முழுமையாக கட்டமைக்கவும் | ⭐⭐ துவக்க நிலை+ | Python, அடிப்படை கணிதம் | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | முன் பயிற்சி பெற்ற மாதிரி மூலம் படங்களை வகைப்படுத்தவும் | ⭐⭐ துவக்க நிலை+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | வாசகர் உணர்வை (பாசிட்டிவ்/நெகட்டிவ்) பகுப்பாய்வு செய்யவும் | ⭐⭐ துவக்க நிலை+ | Python | -## 🚀 தொடங்குதல் +## 🚀 தொடக்கம் -### முன் அறிவு +### முன் தேவைகள் -Python நிறுவப்பட்டிருக்க வேண்டும் (3.8 அல்லது அதற்கு மேல் பரிந்துரைக்கப்படுகிறது). தேவையான தொகுதிகளை நிறுவவும்: +Python நிறுவப்பட்டுள்ளதா என உறுதி செய்யவும் (3.8 அல்லது அதற்கு மேல் பரிந்துரைக்கப்பட்டுள்ளது). தேவையான தொகுப்புகளை நிறுவவும்: ```bash -# For Python scripts +# Python ஸ்கிரிப்டுகளுக்காக pip install numpy -# For Jupyter notebooks (image classifier) +# Jupyter நோட்புக்குகள் (பட வகைப்பான்)க்காக pip install jupyter numpy pillow tensorflow ``` -அல்லது முக்கிய பாடத்திட்டத்தில் உள்ள conda சூழலைப் பயன்படுத்தவும்: +அல்லது முதன்மை பாடத்திட்டத்தில் இருந்து conda சூழலை பயன்படுத்தவும்: ```bash conda env create --name ai4beg --file ../environment.yml conda activate ai4beg ``` -### உதாரணங்களை இயக்குதல் +### எடுத்துக்காட்டுகளை இயக்குதல் -**Python ஸ்கிரிப்டுகளுக்கு (.py கோப்புகள்):** +**Python ஸ்கிரிப்ட்களுக்கு (.py கோப்புகள்):** ```bash python 01-hello-ai-world.py ``` -**Jupyter நோட்புக்குகளுக்கு (.ipynb கோப்புகள்):** +**Jupyter நோட்புக் க்கான (.ipynb கோப்புகள்):** ```bash jupyter notebook 03-image-classifier.ipynb ``` ## 📖 கற்றல் பாதை -உதாரணங்களை வரிசையாக பின்பற்ற பரிந்துரைக்கிறோம்: +எடுக்கப்படுகின்ற எடுத்துக்காட்டுகளை வரிசையாக பின்பற்ற பரிந்துரைக்கப்படுகிறது: -1. **"Hello AI World" மூலம் தொடங்குங்கள்** - முறைமைகள் அடையாளம் காணும் அடிப்படைகளை கற்றுக்கொள்ளுங்கள் -2. **ஒரு எளிய நரம்பு வலைப்பின்னலை உருவாக்குங்கள்** - நரம்பு வலைப்பின்னலின் செயல்பாட்டை புரிந்துகொள்ளுங்கள் -3. **Image Classifier முயற்சிக்கவும்** - உண்மையான படங்களுடன் AI செயல்பாட்டை பாருங்கள் -4. **Text Sentiment பகுப்பாய்வு செய்யுங்கள்** - இயற்கை மொழி செயலாக்கத்தை ஆராயுங்கள் +1. **"Hello AI World"-இல் தொடங்குங்கள்** - திருவுருவ அடையாளம் காணல் அடிப்படைகளை கற்பது +2. **ஒரு எளிய நரம்பு வலையமைப்பை கட்டமைக்கவும்** - நரம்பு வலையமைப்புகள் எப்படி செயல்படுகின்றன என்பதை புரிந்து கொள்ளவும் +3. **பட வகைப்படுத்தியை முயற்சிக்கவும்** - இயற்ப்படங்களுடன் AI-வை செயலில் பாருங்கள் +4. **உரையாடல் உணர்வை பகுப்பாய்வு செய்யவும்** - இயற்கை மொழி செயலாக்கத்துடன் ஆராயவும் -## 💡 தொடக்கநிலை மாணவர்களுக்கான குறிப்புகள் +## 💡 துவக்க நிலை பயனர்களுக்கான குறிப்புகள் -- **குறியீட்டு கருத்துரைகளை கவனமாக படிக்கவும்** - ஒவ்வொரு வரியும் என்ன செய்கிறது என்பதை விளக்குகிறது -- **சோதனை செய்யுங்கள்!** - மதிப்புகளை மாற்றி பாருங்கள் என்ன நடக்கிறது -- **எல்லாவற்றையும் உடனே புரிந்துகொள்ள முயற்சிக்க வேண்டாம்** - கற்றல் நேரம் எடுக்கும் -- **கேள்விகள் கேளுங்கள்** - [Discussion board](https://github.com/microsoft/AI-For-Beginners/discussions) பயன்படுத்தவும் +- **கோட் கருத்துக்களை கவனமாக படியுங்கள்** - ஒவ்வொரு வரியும் என்ன செய்கிறது என்பதனை விளக்குகிறது +- **சோதனை செய்யுங்கள்!** - மதிப்புகளை மாற்றிப் பாருங்கள், என்ன ஆகிறது என்பதை காணுங்கள் +- **எல்லாம் முழுமையாக புரிந்து கொள்ளப் பீதியடைய வேண்டாம்** - கற்றல் என்பது நேரம் எடுக்கும் செயல் +- **கேள்வி கேளுங்கள்** - [Discussion board](https://github.com/microsoft/AI-For-Beginners/discussions) பயன்படுத்துங்கள் ## 🔗 அடுத்த படிகள் -இந்த உதாரணங்களை முடித்த பிறகு, முழு பாடத்திட்டத்தை ஆராயுங்கள்: -- [AI அறிமுகம்](../lessons/1-Intro/README.md) -- [நரம்பு வலைப்பின்னல்கள்](../lessons/3-NeuralNetworks/README.md) -- [கணினி பார்வை](../lessons/4-ComputerVision/README.md) -- [இயற்கை மொழி செயலாக்கம்](../lessons/5-NLP/README.md) +இந்த எடுத்துக்காட்டுகளை முடித்த பிறகு முழு பாடத்திட்டத்தை ஆராயவும்: +- [Introduction to AI](../lessons/1-Intro/README.md) +- [Neural Networks](../lessons/3-NeuralNetworks/README.md) +- [Computer Vision](../lessons/4-ComputerVision/README.md) +- [Natural Language Processing](../lessons/5-NLP/README.md) ## 🤝 பங்களிப்பு -இந்த உதாரணங்கள் பயனுள்ளதாக இருந்ததா? அவற்றை மேம்படுத்த உதவுங்கள்: -- பிரச்சினைகளை அறிவிக்கவும் அல்லது மேம்பாடுகளை பரிந்துரைக்கவும் -- தொடக்கநிலை மாணவர்களுக்கான மேலும் உதாரணங்களைச் சேர்க்கவும் -- ஆவணங்கள் மற்றும் கருத்துரைகளை மேம்படுத்தவும் +இந்த எடுத்துக்காட்டுகள் உதவியாக இருந்ததா? அவற்றை மேம்படுத்த உதவுங்கள்: +- பிரச்சனைகளை அறிக்கை செய்யவும் அல்லது மேம்பாடுகள் பரிந்துரைக்கவும் +- துவக்க நிலை பயனர்களுக்கான மேலும் எடுத்துக்காட்டுகளை சேர்த்தல் +- ஆவணங்கள் மற்றும் கருத்துக்களை மேம்படுத்தல் --- -*நினைவில் கொள்ளுங்கள்: ஒவ்வொரு நிபுணரும் ஒருமுறை தொடக்கநிலையிலிருந்தவரே. மகிழ்ச்சியான கற்றல்! 🎓* +*நினைவில் வையுங்கள்: ஒவ்வொரு நிபுணரும் ஒருகாலத்தில் துவக்க நிலை பயனராக இருந்தார்கள். சந்தோஷமாக கற்றுக்கொள்ளுங்கள்! 🎓* --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையை பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. எங்கள் தரச்சிறப்பிற்காக முயற்சி செய்தாலும், தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ No newline at end of file + +**மறுப்பு**: +இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை. + \ No newline at end of file diff --git a/translations/ta/lessons/0-course-setup/how-to-run.md b/translations/ta/lessons/0-course-setup/how-to-run.md index 504a8c9d..34ea417f 100644 --- a/translations/ta/lessons/0-course-setup/how-to-run.md +++ b/translations/ta/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ -# குறியீட்டை எப்படி இயக்குவது +# குறியீட்டைப் இயக்குவது எப்படி -இந்த பாடத்திட்டத்தில் நீங்கள் இயக்க விரும்பும் நிறைய செயலாக்கக் கூடிய உதாரணங்கள் மற்றும் 실습களைக் கொண்டுள்ளது. இதைச் செய்ய, நீங்கள் இந்த பாடத்திட்டத்தின் ஒரு பகுதியான Jupyter Notebooks இல் Python குறியீட்டை இயக்கும் திறனுடன் இருக்க வேண்டும். குறியீட்டை இயக்குவதற்கு உங்களுக்கு பலவிதமான விருப்பங்கள் உள்ளன: +இந்த பாடத்திட்டத்தில் நீங்கள் இயக்க விரும்பக்கூடிய நிறைய செயல்படுத்தக்கூடிய உதாரணங்களும் பேராசைகளும் உள்ளன. இதை செய்யப்பதற்கு, இந்த பாடத்திட்டத்தின் ஒரு பகுதியான Jupyter நோட்ட்புக்களில் Python குறியீட்டை இயக்கும் திறன் வேண்டும். குறியீட்டை இயக்க பல வழிகளும் உண்டு: -## உங்கள் கணினியில் உள்ளூர் முறையில் இயக்குதல் +## உங்கள் கணினியில் உள்ளார்மாக இயக்கவும் -உங்கள் கணினியில் உள்ளூர் முறையில் குறியீட்டை இயக்க Python நிறுவல் தேவைப்படும். ஒரு பரிந்துரையாக **[miniconda](https://conda.io/en/latest/miniconda.html)** ஐ நிறுவ பரிந்துரைக்கப்படுகின்றது - இது மிகவும் எளிமையான நிறுவல் ஆகும் மற்றும் Python இன் வேறு வேறு **உண்மை சூழல்கள் (virtual environments)** க்கான `conda` பாகேஜ் மேலாளரை ஆதரிக்கிறது. +உங்கள் கணினியில் குறியீட்டை இயக்க Python நிறுவல் அவசியம். ஒருமுறை பரிந்துரை **[miniconda](https://conda.io/en/latest/miniconda.html)** - இது विभिन्न Python **மெய்நிகர் சுற்றுச்சூழல்**களுக்கான `conda` தொகுப்பு மேலாளரை ஆதரிக்கும் ஒரு எளிமையான நிறுவல். -miniconda ஐ நிறுவிய பிறகு, ரெப்போஸிட்டரியை கிளோன் செய்து இந்த பாடத்திட்டத்திற்கான ஒரு உண்மை சூழலை உருவாக்கவும்: +miniconda நிறுவிய பிறகு, திரட்டகத்தில் (repository) கிளோன் செய்து, இந்த பாடத்திட்டத்திற்கு பயன்படும் மெய்நிகர் சூழலை உருவாக்கவும்: ```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 ``` -### Python விரிவாக்கத்துடன் Visual Studio Code பயன்படுத்துதல் +### Python நீட்சியுடன் Visual Studio Code பயன்படுத்துதல் -இந்த பாடத்திட்டம் [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) இல் [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) உடன் திறந்தபோது சிறந்த முறையில் பயன்படுத்தலாம். +இந்த பாடத்திட்டத்தை திறந்து பயன்பாட்டிற்கு [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) மற்றும் [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) சிறந்தது. -> **குறிப்பு**: நீங்கள் ரெப்போஸிட்டரியை கிளோன் செய்து VS Code இல் கோப்புறையை திறக்கும் போது, அது தானாக Python விரிவாக்கங்களை நிறுவ பரிந்துரைக்கும். மேலும், மேலே விளக்கப்பட்டபடி miniconda ஐ நிறுவ வேண்டியும் இருக்கும். +> **குறிப்பு**: ஒரு முறையாக நீங்கள் கிளோன் செய்து VS Code இல் கோப்புறை திறந்துவிட்டால், Python விரிவுருக்களை நிறுவ பரிந்துரைக்கப்படும்.மேலும் மேலே விளக்கப்பட்டபடி miniconda ஐ நிறுவவும் அவசியம். -> **குறிப்பு**: VS Code உங்களுக்கு ரெப்போஸிட்டரியை ஒரு கன்டைனரில் மீண்டும் திறக்க பரிந்துரைத்தால், உள்ளூர் Python நிறுவலைப் பயன்படுத்த இதை மறுத்தல் வேண்டும். +> **குறிப்பு**: VS Code உங்களிடம் கோப்புறையை ஒரு கொண்டெய்னரில் மீண்டும் திறக்கச் சொல்லின், நீங்கள் அதை நிராகரித்து உள்ளார்மாக Python நிறுவலை பயன்படுத்த வேண்டும். ### உலாவியில் Jupyter பயன்படுத்துதல் -உங்கள் கணினியில் உலாவி மூலம் ஒரு Jupyter சூழலை நீங்கள் பயன்படுத்தலாம். பாரம்பரிய Jupyter மற்றும் JupyterHub இரண்டும் தானாக பூட்டப்படுதல், குறியீட்டு ஒளிர்வு போன்ற வசதிகளுடன் ஒரு சிறந்த அபிவிருத்தி சூழலை வழங்குகின்றன. +உங்களது கணினியில் உலாவியில் இருந்து Jupyter சூழலைப் பயன்படுத்தலாம். பாரம்பரிய Jupyter மற்றும் JupyterHub கள் ஆட்டோ-கூட்டல், குறியீட்டு ஒளிர்வு போன்ற நன்மைகள் கொண்ட வசதிகரமான உருவாக்க சூழலை வழங்குகின்றன. -Jupyter ஐ உள்ளூர் இயக்க, பாடத்திட்டத்தின் கோப்புறைக்குச் சென்று கீழ்காணும் கட்டளைகளை இயக்கவும்: +உள்ளார்மாக Jupyter ஐ துவக்க கோர்ஸ் கோப்புறைக்கு சென்று இதனை இயக்கு: ```bash jupyter notebook @@ -36,37 +36,36 @@ jupyter notebook ```bash jupyterhub ``` -பின்னர் `.ipynb` கோப்புகளில் எந்தவொன்றையும் திறந்து, பணியாற்றத் தொடங்கலாம். + பிறகு, .ipynb கோப்புகளுக்கு செல்லலாம், அவற்றை திறந்து சுவாரஸ்யமாக பணியாற்றலாம். -### கன்டைனரில் இயக்குதல் +### கொண்டெய்னரில் இயக்குதல் -Python நிறுவலுக்கு மாற்றாக, குறியீட்டை கன்டைனரில் இயக்கு எடுத்துக்காட்டு உள்ளது. எங்கள் ரெப்போஸிட்டரியில் `.devcontainer` என்ற சிறப்பு அடைவுகள் உள்ளன, இது இந்த ரெப்போக்கான கன்டைனர் கட்டுமுறை வழிமுறைகள் அளிக்கிறது. VS Code குறியீட்டை கன்டைனரில் மீண்டும் திறக்க வாய்ப்பு வழங்குகிறது. இதற்கு Docker நிறுவல் தேவைப்படும் மற்றும் இதுவும் சற்று சிக்கலானது, ஆகவே இது அனுபவம் உள்ள பயனர்களுக்கே பரிந்துரைக்கப்படுகிறது. +Python நிறுவலிற்கு மாற்றாக, குறியீட்டை கொண்டெய்னரில் இயக்கலாம். எங்கள் திரட்டகம் இந்தக் கொண்டெய்னர் கட்டமைப்பை சொல்கிறது என `.devcontainer` கோப்புறை வழங்குகிறது, இதனால் VS Code குறியீட்டை கொண்டெய்னரில் மீண்டும் திறக்க உதவுகின்றது. இவை Docker நிறுவல் தேவைப்படும் மிகப் பரிசீலனையான பகுதியாகும் மற்றும் அனுபவம் உள்ள பயனாளர்களுக்கு பரிந்துரைக்கப்படுகிறது. -## வகைப்படுத்தல்கள் +## மூகிலில் இயக்கு -Python ஐ உள்ளூர் நிறுவ விரும்பவில்லை ஆனால் சில மேக வளங்களைப் பெற்றுள்ளீர்கள் என்றால், குறியீட்டை மேகத்தில் இயக்குவது நல்ல வழி. இதற்காக பல முறைகள் உள்ளன: +Python ஐ உள்ளார்மாக நிறுவ விரும்பாவிட்டால், மற்றும் சில மூகிலியல் வளங்களுக்கு அணுகல் இருந்தால் - குறியீட்டை மூகிலில் இயக்குவது சிறந்த மாற்று. இதற்கான சில வழிகளும் உள்ளன: -* **[GitHub Codespaces](https://github.com/features/codespaces)** பயன்படுத்தல் - இது GitHub இல் உங்களுக்கு உருவாக்கப்பட்ட ஒரு உண்மை சூழல் ஆகும், VS Code உலாவி இடைமுகத்தால் உள்நுழையப் பெறலாம். Codespaces கிடைத்தால், ரெப்போவில் **Code** பொத்தானை அழுத்தி, codespace ஐத் தொடக்கியவுடன் உடனுக்குடன் தொடங்கலாம். +* GitHub இல் உங்களுக்காக உருவாக்கப்பட்ட வேறுவிதமான சூழல் ஆகும் **[GitHub Codespaces](https://github.com/features/codespaces)**. இது ஒரு VS Code உலாவி இடைமுகத்தால் அணுகக்கூடியது. Codespaces இல் அணுகல் இருந்தால், கொடியின் **Code** பொத்தானை கிளிக் செய்து codespace ஒன்றை துவக்கி உடனடியாக வேலை செய்யலாம். +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** பயன்படுத்துதல். [Binder](https://mybinder.org) இலவச கணினி வளங்களை வழங்கும், GitHub குறியீட்டை சோதிக்க உதவுகிறது. முன்னணி பக்கத்தில் உள்ள பொத்தானைக் கிளிக் செய்யவும், அது உடனடியாக அடிப்படை கொண்டெய்னரை உருவாக்கி Jupyter இணைய இடைமுகத்தைக் தொடங்கும். -* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** பயன்படுத்துதல் - [Binder](https://mybinder.org) என்பது GitHub இல் உள்ள குறியீடை சோதிக்க மக்களுக்கு மேகத்தில் இலவச கணினிசார் வளங்களை வழங்குகிறது. முன்னணி பக்கத்தில் ஒரு பொத்தான் உள்ளது, இதன் மூலம் அந்த ரெப்போசிட்டரியை Binder இல் திறக்கலாம் - இது விரைவாக binder தளத்தை திறக்கும், அடிப்படை கன்டைனரை கட்டி, Jupyter இணைய முகப்பை ஆட்டோமாக ஆரம்பிக்கும். +> **குறிப்பு**: தவறான பயன்பாட்டைத் தடுப்பதற்காக, Binder சில இணைய வளங்களுக்கான அணுகலை தடுக்கும். இது பொதுத் துணையிலிருந்து தரவுக்கோப்புகள் மற்றும் மாதிரிகளைப் பெறும் சில குறியீடுகள் வேலை செய்யாமை ஏற்படுத்தலாம். சில விருப்ப வழிகளைக் கண்டறிய வேண்டும். மேலும், Binder வழங்கும் கணினி வளங்கள் அடிப்படையாக உள்ளன, ஆகையால் பயிற்சி மெல்ல ஆகும், சிறந்த பாடங்களில் குறிப்பாக. -> **குறிப்பு**: தவறான பயன்பாட்டைத் தடுப்பதற்காக, Binder சில இணைய வளங்களுக்கு அணுகலைத் தடை செய்துள்ளது. இது சில குறியீடுகள், பொதுச்சேவையகங்கள் மற்றும் தரவுத்தொகுப்புகளைப் பெறும் போது வேலை செய்யாமற் போகலாம். நீங்கள் சில மாற்று வழிகளை தேட வேண்டியிருக்கலாம். மேலும், Binder வழங்கும் கணினிசார் வளங்கள் அடிப்படை மட்டமாகவே உள்ளதால், பயிற்சி மிகவும் மெதுவாக நடக்கும், குறிப்பாக பின்னர் சிக்கலான பாடங்களில். +## GPU உடன் மூகிலில் இயக்குதல் -## GPU உடன் மேகத்தில் இயக்குதல் +சில பிற பாடங்கள் GPU ஆதரவுடன் சிறந்த பயன் தரும். மாதிரி பயிற்சி மேம்பட்டதாக இருக்கும், இல்லையெனில் சீரற்ற வேகம் குறைவு. சில வழிகளும் உள்ளன, குறிப்பாக நீங்கள் [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) மூலம் அல்லது உங்கள் தொழிற்சங்கம் வழியாக மூகிலில் அணுகல் இருந்தால்: -இந்த பாடத்திட்டத்தின் சில பின்னுலக்க பாடங்கள் GPU ஆதரவுடன் பெரிதும் பயனடையும். மாதிரி பயிற்சி, உதாரணமாக, இல்லையெனில் மிகவும் மெதுவாக நடைபெறும். சில விருப்பங்கள் இருக்கின்றன, குறிப்பாக நீங்கள் மேகத்தில் [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) அல்லது உங்கள் கல்வி நிறுவனத்தின் வாயிலாக அணுகல் பெற்றிருந்தால்: +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) உருவாக்கி Jupyter மூலமாக அதற்கு இணைக்கவும். பிறகு திரட்டகத்தை நேரடியாக அந்த இயந்திரத்தில் கிளோன் செய்து கற்கத் தொடங்கலாம். NC-பிரிவு VM கள் GPU ஆதாரத்துடன். -* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) உருவாக்கி Jupyter மூலம் அதனுடன் இணைவது. பின்னர் நீங்கள் ரெப்போவை நேரடியாக மின்னணு இயந்திரத்தில் கிளோன் செய்து изучு தொடங்கலாம். NC-வரிசை VM களில் GPU ஆதரவு உள்ளது. +> **குறிப்பு**: சில சந்தாக்கள், Azure for Students உட்பட, துவக்கத்தில் GPU ஆதரவளிக்காது. கூடுதல் GPU கோர்களுக்கு தொழில்நுட்ப ஆதரவு கோரிக்கை தேவைப்படலாம். -> **குறிப்பு**: சில சந்தாக்கள், Azure for Students உட்பட, பொதுவாக GPU ஆதரவை வழங்குவதில்லை. கூடுதல் GPU கோர்களை தொழில் நுட்ப ஆதரவு கோரிக்கையுடன் கேட்டு பெற வேண்டியிருக்கும். +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) உருவாக்கி அங்குள்ள நோட்புக் அம்சத்தைப் பயன்படுத்தவும். [இந்த வீடியோவில்](https://azure-for-academics.github.io/quickstart/azureml-papers/) கடைகளுக்கு Azure ML நோட்புக்கில் குறியீட்டை எவ்வாறு கிளோன் செய்து பயன்படுதுவது காட்டுகிறது. -* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) உருவாக்கி, அங்கு உள்ள நோட்புக் வசதியைப் பயன்படுத்தவும். [இந்த வீடியோ](https://azure-for-academics.github.io/quickstart/azureml-papers/) எப்படி ரெப்போவை Azure ML நோட்புக்கில் கிளோன் செய்து பயன்படுத்துவது என்பதைக் காட்டுகிறது. - -மேலும், சில இலவச GPU ஆதரவுடன் கூடிய Google Colab ஐப் பயன்படுத்தி, Jupyter நோட்புக்குகளை அங்கே ஏற்றிக் கொண்டு ஒன்றரைவிடை இயக்கலாம். +Google Colab ஐவும் பயன்படுத்தலாம், இது இலவச GPU ஆதரவுடன் வருகிறது; Jupyter நோட்புக்களை அங்கே பதிவேற்றியும் ஒவ்வொன்றாக இயக்கலாம். --- -**மறுப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) எனும் AI மொழிபெயர்ப்பு சேவையினைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாம் சரியானதாக முயற்சித்தோமோ என்றாலும், தானியங்கி மொழிபெயர்ப்புகள் தவறுகள் அல்லது துல்லியமற்றவையாக இருக்கக்கூடும் என்பதை தயவுசெய்து கவனியுங்கள். மூல ஆவணம் அதன் பூர்வ மொழியில் அதிகாரப்பூர்வமான மூலமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்பட்ட எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கும் நாங்கள் பொறுப்பேற்கவில்லை. +**மறுப்பு**: +இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை. \ No newline at end of file diff --git a/translations/ta/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/ta/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index e800adac..ebb8ab5e 100644 --- a/translations/ta/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/ta/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# முன்பே பயிற்சி பெற்ற மாதிரிகள் மற்றும் மாற்றம் கற்றல்\n", + "# முன்புதயாரிக்கப்பட்ட மாதிரிகள் மற்றும் மாற்று கல்வி\n", "\n", - "CNNகளை (கன்வல்யூஷனல் நியூரல் நெட்வொர்க்) பயிற்சி செய்வது மிகவும் நேரம் எடுத்துக்கொள்ளக்கூடியது, மேலும் அதற்கான பணிக்குப் பெருமளவு தரவுகள் தேவைப்படும். ஆனால், பெரும்பாலான நேரம் ஒரு நெட்வொர்க் படங்களிலிருந்து முறைபாடுகளை எடுக்க பயன்படுத்தும் சிறந்த தாழ்நிலை வடிகட்டிகளை கற்றுக்கொள்வதற்காக செலவிடப்படுகிறது. ஒரு இயல்பான கேள்வி எழுகிறது - ஒரு தரவுத்தொகுப்பில் பயிற்சி பெற்ற நியூரல் நெட்வொர்க்கை பயன்படுத்தி, முழுமையான பயிற்சி செயல்முறையின்றி வேறு படங்களை வகைப்படுத்துவதற்கு அதை ஏற்றுக்கொள்ள முடியுமா?\n", + "CNN-களை பயிற்றுவது அதிக நேரம் எடுக்கக்கூடியதும், இந்த பணிக்காக நிறைய தரவுக்களம் தேவைப்படும். இருப்பினும், அதிக நேரம் ஒரு நெட்வொர்க் படங்களிலிருந்து டேட்டா எடுக்கும் சிறந்த குறைந்த-நிலை வடிகட்டிகளை கற்றுக்கொள்ள பயன்படுத்தப்படுகிறது. ஒரு இயல்பான கேள்வி எழுகின்றது - ஒரு தரவுத்தொகுதியில் பயிற்றப்பட்ட நியூரல் நெட்வொர்க் மூலம் வேறு படங்களைக் வகைப்பதில் முழு பயிற்றல் தேவையில்லாமல் பயனப்படுத்த முடியுமா?\n", "\n", - "இந்த அணுகுமுறை **மாற்றம் கற்றல்** என்று அழைக்கப்படுகிறது, ஏனெனில் நாம் ஒரு நியூரல் நெட்வொர்க் மாதிரியில் இருந்து மற்றொன்றுக்கு சில அறிவை மாற்றுகிறோம். மாற்றம் கற்றலில், நாம் பொதுவாக ஒரு முன்பே பயிற்சி பெற்ற மாதிரியுடன் தொடங்குகிறோம், இது **ImageNet** போன்ற பெரிய படத் தரவுத்தொகுப்பில் பயிற்சி பெற்றது. அந்த மாதிரிகள் ஏற்கனவே பொதுவான படங்களில் இருந்து பல்வேறு அம்சங்களை எடுக்க சிறந்த வேலை செய்ய முடியும், மேலும் பல சந்தர்ப்பங்களில், அந்த எடுக்கப்பட்ட அம்சங்களின் மேல் ஒரு வகைப்படுத்தியை உருவாக்குவது நல்ல முடிவை வழங்க முடியும்.\n" + "இந்த அணுகுமுறை **மாற்று கல்வி** என அழைக்கப்படுகிறது, ஏனெனில் நாம் ஒரு நியூரல் நெட்வொர்க் மாதிரியில் இருந்து இன்னொரு மாதிரிக்கு சில அறிவுகளை மாற்றுகிறோம். மாற்று கற்றலில், பொதுவாக நாம் ஒரு முன்புதயாரிக்கப்பட்ட மாதிரியைத் தொடங்குகிறோம், இது **ImageNet** போன்ற பெரிய படத் தொகுதியில் பயிற்றப்பட்டிருக்கும். அந்த மாதிரிகள் ஏற்கனவே பொதுவான படங்களிலிருந்து வேறுபட்ட அம்சங்களை எடுக்க சிறந்த திறன் கொண்டவை, பலமுறை அந்த எடுக்கப்பட்ட அம்சங்களை அடிப்படையாக கொண்டு ஒரு வகைப்போர் கட்டும் பின் நல்ல முடிவை தர முடியும்.\n" ] }, { @@ -31,9 +31,9 @@ "source": [ "## பூனைகள் மற்றும் நாய்கள் தரவுத்தொகுப்பு\n", "\n", - "இந்த பிரிவில், பூனைகள் மற்றும் நாய்களின் படங்களை வகைப்படுத்தும் ஒரு உண்மையான பிரச்சினையை தீர்க்கப் போகிறோம். இதற்காக, [Kaggle Cats vs. Dogs Dataset](https://www.kaggle.com/c/dogs-vs-cats) பயன்படுத்தப் போகிறோம், இது [Microsoft-இல் இருந்து](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) பதிவிறக்கம் செய்யலாம்.\n", + "இந்த அலகில், பூனைகள் மற்றும் நாய்களின் படங்களை வகைப்படுத்தும் ஒரு நிஜ வாழ்க்கை பிரச்சனையை நாம தீர்க்கப்போகிறோம். இதற்கு, நாம [Kaggle பூனைகள் மற்றும் நாய்கள் தரவுத்தொகுப்பு](https://www.kaggle.com/c/dogs-vs-cats) பயன்படுத்தப்போகிறோம், மேலும் இதை [Microsoft இல் இருந்து](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) பதிவிறக்கம் செய்யலாம்.\n", "\n", - "இந்த தரவுத்தொகுப்பை பதிவிறக்கி அதை `data` கோப்பகத்தில் வெளியிடுவோம் (இந்த செயல்முறை சில நேரம் எடுக்கலாம்!):\n" + "இந்த தரவுத்தொகுப்பை பதிவிறக்கம் செய்து அதை `data` அடைவில் விபக்தி செய்துவிடுவோம் (இந்த செயல்முறை சில நேரம் எடுக்கும்!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "துரதிர்ஷ்டவசமாக, தரவுத்தொகுப்பில் சில சேதமடைந்த பட கோப்புகள் உள்ளன. சேதமடைந்த கோப்புகளை சரிபார்க்க விரைவான சுத்திகரிப்பை செய்ய வேண்டும். இந்த பயிற்சியை கெடுப்பதில்லை என்பதற்காக, தரவுத்தொகுப்பை சரிபார்க்கும் குறியீட்டை ஒரு தொகுதிக்கு மாற்றினோம்.\n" + "துரதுயிருடன், தரவுத்தொகுதியில் சில கெட்ட படம் கோப்புகள் உள்ளன. கெட்ட கோப்புகளை பரிசோதிக்க விரைவான சுத்திகரிப்பு செய்ய வேண்டியுள்ளது. இந்த பயிற்சிமுறையை பாதிப்பதில்லை என்று உறுதி செய்ய, தரவுத்தொகுதியை சரிபார்க்கும் குறியீட்டை ஒரு மொடியூலுக்கு மாற்றிவிட்டோம்.\n" ] }, { @@ -335,11 +335,11 @@ "source": [ "## தரவுத்தொகுப்பை ஏற்றுதல்\n", "\n", - "முந்தைய உதாரணங்களில், Keras-இல் உள்ள தரவுத்தொகுப்புகளை நாம் ஏற்றினோம். இப்போது, நாங்கள் உருவாக்கிய தனிப்பட்ட தரவுத்தொகுப்பை, படங்களின் அடைவைப் பயன்படுத்தி ஏற்றவிருக்கிறோம்.\n", + "முன் எடுத்துக்காட்டுகளில், நாம் Keras இல் உள்ள கட்டமைக்கப்பட்ட தரவுத்தொகுப்புகளை ஏற்றிக்கொண்டிருந்தோம். இப்போது, நமது சொந்த தரவுத்தொகுப்பை, அப்படியான படங்களின் அடைவு ஒருங்கிணைப்பிலிருந்து ஏற்ற வேண்டியுள்ளது.\n", "\n", - "உண்மையான வாழ்க்கையில், படத் தரவுத்தொகுப்புகளின் அளவு மிகவும் பெரியதாக இருக்கக்கூடும், மேலும் அனைத்து தரவுகளும் நினைவகத்தில் பொருந்தும் என நம்ப முடியாது. எனவே, தரவுத்தொகுப்புகள் பெரும்பாலும் **ஜெனரேட்டர்கள்** ஆக பிரதிநிதித்துவப்படுத்தப்படுகின்றன, இது பயிற்சிக்கு ஏற்ற சிறிய தொகுதிகளில் தரவுகளை வழங்க முடியும்.\n", + "உண்மையான வாழ்க்கையில், படத் தரவுத்தொகுப்புகளின் அளவு மிகப்பெரியதுகூட இருக்கலாம், மற்றும் எல்லா தரவுகளும் நினைவகத்தில் இருக்க முடியும் என்று நம்ப முடியாது. அதனால், தரவுத்தொகுப்புகள் பொதுவாக **உற்பத்தியாளர்களாக** (generators) உள்ளன, இது பயிற்சிக்கான சிறிய தொகுதிகளாக தரவுகளை வழங்கும்.\n", "\n", - "பட வகைப்படுத்தலைச் சமாளிக்க, Keras-ல் `image_dataset_from_directory` என்ற சிறப்பு செயல்பாடு உள்ளது, இது வெவ்வேறு வகைகளுக்கு இணையான துணை அடைவுகளில் இருந்து படங்களை ஏற்ற முடியும். இந்த செயல்பாடு படங்களை அளவிடுவதையும் கவனிக்கிறது, மேலும் தரவுத்தொகுப்பை பயிற்சி மற்றும் சோதனை துணைத் தொகுதிகளாகப் பிரிக்கவும் முடியும்:\n" + "பட வகைப்படுத்தலை கையாள, Keras சிறப்பான செயல்பாடு `image_dataset_from_directory`-ஐ கொண்டுள்ளது, இது வெவ்வேறு வகையான அண்டைவலைகளில் இருந்து படங்களை ஏற்ற முடியும். இந்த செயல்பாடு படங்களின் அளவை சரிசெய்தலும் (scaling), மற்றும் தரவுத்தொகுப்பை பயிற்சி மற்றும் சோதனை தொகdut்களாக பிரிப்பதும் கவனிக்கிறது:\n" ] }, { @@ -383,9 +383,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "இரண்டு அழைப்புகளுக்கும் ஒரே `seed` மதிப்பை அமைப்பது முக்கியம், ஏனெனில் இது பயிற்சி மற்றும் சோதனை தரவுத்தொகுப்புகளுக்கிடையிலான படங்களின் பிரிவை பாதிக்கிறது.\n", + "பயிற்சி மற்றும் சோதனை தரவுத்தொகுப்புகளுக்குள் படங்களை பிரிப்பதில் அது பாதிப்படையுமெனவே, இரண்டு அழைப்புகளுக்கும் ஒரே `seed` மதிப்பை அமைத்துள்ளதுதான் முக்கியம்.\n", "\n", - "தரவுத்தொகுப்பு தானாகவே அடைவுகளிலிருந்து வகுப்பு பெயர்களை எடுக்கிறது, மேலும் அவற்றை தேவைப்பட்டால் நீங்கள் அணுகலாம், இதை அழைப்பதன் மூலம்:\n" + "தரவுத்தொகுப்பு தானாகவே அடைவுகளிலிருந்து வகுப்பு பெயர்களை எடு்கிறது, வேண்டுமானால் நீங்கள் அதை அழைக்கக் கிடைக்கிறீர்கள்:\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "நாம் பெற்றுள்ள தரவுத்தொகுப்புகளை மாடலைப் பயிற்றுவிக்க `fit` செயல்பாட்டிற்கு நேரடியாக அனுப்பலாம். அவற்றில் தொடர்புடைய படங்களும் லேபிள்களும் உள்ளன, அவற்றை கீழே உள்ள கட்டமைப்பைப் பயன்படுத்தி மடக்கி மீண்டும் பயன்படுத்தலாம்:\n" + "நாம் பெறும் தரவுத் தொகுப்புகளை நேரடியாக `fit` செயல்பாட்டுக்கு அனுப்பி மாதிரியை பயிற்றுவிக்கலாம். அவை உடன் தொடர்புடைய படங்கள் மற்றும் லேபிள்களையும் கொண்டுள்ளன, அவற்றை பின்வரும் கட்டமைப்பைப் பயன்படுத்தி சுற்றி பார்க்கலாம்:\n" ] }, { @@ -453,16 +453,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **குறிப்பு**: தரவுத்தொகுப்பில் உள்ள அனைத்து படங்களும் 0-255 வரம்பில் மிதவை புள்ளி டென்சர்களாக பிரதிநிதித்துவப்படுத்தப்பட்டுள்ளன. அவற்றை நரம்பியல் வலையமைப்பிற்கு அனுப்புவதற்கு முன், அந்த மதிப்புகளை 0-1 வரம்பிற்கு அளவிட வேண்டும். படங்களை வரைதல் செய்யும்போது, அதே செயல்முறையை செய்ய வேண்டும், அல்லது மதிப்புகளை `int` வகைக்கு மாற்ற வேண்டும் (மேலே உள்ள குறியீட்டில் நாம் செய்வது போல), அசல் அளவிடப்படாத படத்தை வரைதல் செய்ய விரும்புகிறோம் என்பதை `matplotlib`க்கு காட்டுவதற்காக.\n" + "> **குறிப்பு**: தரவுத்தொகுப்பில் உள்ள அனைத்து படங்களும் 0-255 வரம்புள்ள மிதவை புள்ளி டென்சர்களாக பிரதிநிதித்துவப்படுத்தப்பட்டுள்ளன. அவற்றை நியூரல் நெட்வொர்க்குக்கு அனுப்புவதற்கு முன், அந்த மதிப்புகளை 0-1 வரம்பாக அளவிட வேண்டும். படங்களை வரைபடமாக்கும் போது, அதேதை செய்யவேண்டும் அல்லது மதிப்புகளை `int` வகைக்கு மாற்ற வேண்டும் (மேலே உள்ள குறியீட்டில் நாம் செய்ததைப்போல்), அப்பொழுது `matplotlib`க்கு நாம் அசல் அளவில்லாத படத்தை வரைபடமாக்க விரும்புகிறோம் என்று காட்ட முடியும்.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## முன் பயிற்சியளிக்கப்பட்ட மாதிரிகள்\n", + "## முன்புத்தயாரிக்கப்பட்ட மாதிரிகள்\n", "\n", - "பல பட வகைப்படுத்தல் பணிகளுக்கு முன் பயிற்சியளிக்கப்பட்ட நரம்பியல் நெட்வொர்க் மாதிரிகளை கண்டுபிடிக்கலாம். அவற்றில் பல `keras.applications` namespace-இல் கிடைக்கின்றன, மேலும் இன்னும் பல மாதிரிகள் இணையத்தில் கிடைக்கின்றன. மிக எளிய VGG-16 மாதிரியை எப்படி ஏற்றவும் பயன்படுத்தவும் என்பதை பார்க்கலாம்:\n" + "பல பட வகைமாற்று பணிகளுக்கு முன்புத்தயாரிக்கப்பட்ட நியூரல் நெட்வொர்க் மாதிரிகளை கண்டுபிடிக்க முடியும். அவற்றில் பல மாதிரிகள் `keras.applications` نامவாக்சியில் கிடைக்கும், மேலும் இன்னும் பல மாதிரிகள் இணையத்தில் உள்ளன. எளிய 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", @@ -511,16 +521,16 @@ "metadata": {}, "source": [ "இங்கே சில முக்கியமான விஷயங்கள் உள்ளன:\n", - "* எந்தவொரு முன்பயிற்சி செய்யப்பட்ட நெட்வொர்க்கிற்கும் உள்ளீட்டை அனுப்புவதற்கு முன், அது ஒரு குறிப்பிட்ட முறையில் முன் செயலாக்கப்பட வேண்டும். இது தொடர்புடைய `preprocess_input` செயல்பாட்டை அழைப்பதன் மூலம் செய்யப்படுகிறது, இது படங்களின் தொகுப்பை பெறுகிறது மற்றும் அவற்றின் செயலாக்கப்பட்ட வடிவத்தை திருப்பி அளிக்கிறது. VGG-16 இன் வழக்கில், படங்கள் சாதாரணமாக்கப்படுகின்றன, மேலும் ஒவ்வொரு சேனலுக்கும் முன்கூட்டியே வரையறுக்கப்பட்ட சராசரி மதிப்பு கழிக்கப்படுகிறது. ஏனெனில் VGG-16 இந்த முன் செயலாக்கத்துடன் முதலில் பயிற்சி செய்யப்பட்டது.\n", - "* நரம்பியல் நெட்வொர்க் உள்ளீட்டு தொகுப்புக்கு பயன்படுத்தப்படுகிறது, மேலும் முடிவாக ஒவ்வொரு வகுப்பின் சாத்தியக்கூறுகளை காட்டும் 1000-உறுப்பு டென்சர்களின் தொகுப்பை பெறுகிறோம். இந்த டென்சரில் `argmax` ஐ அழைப்பதன் மூலம் மிகவும் சாத்தியமான வகுப்பு எண்ணை கண்டறியலாம்.\n", - "* பெறப்பட்ட முடிவு [ஒரு `ImageNet` வகுப்பின் எண்](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a) ஆகும். இந்த முடிவின் பொருளை புரிந்துகொள்ள, `decode_predictions` செயல்பாட்டை பயன்படுத்தலாம், இது மேலே n வகுப்புகளையும் அவற்றின் பெயர்களுடன் திருப்பி அளிக்கிறது.\n" + "* எந்த முன்-பயிற்சியிடப்பட்ட நெட்வொர்க்குக்கு உள்ளீட்டை அனுப்புவதற்கு முன், அது ஒரு குறிப்பிட்ட முறையில் முன்-செயலாக்கப்படவேண்டும். இது சம்பந்தப்பட்ட `preprocess_input` செயலியை அழைத்து செய்யப்படுகிறது, இது படம் தொகுப்பை பெறுகிறது மற்றும் அவற்றின் செயலாக்கப்பட்ட வடிவத்தை திருப்பி அளிக்கிறது. VGG-16 இன் போது, படங்கள் சாதாரணப்படுத்தப்படுகின்றன, மற்றும் ஒவ்வொரு சேனலுக்கும் சில முன்-நிர்ணயிக்கப்பட்ட சராசரி மதிப்புகள் கழிக்கப்படுகிறது. இதற்குக் காரணம் VGG-16 முதலில் இந்த முன்-செயலாக்கத்துடன் பயிற்சிபெற்றது.\n", + "* நியூரல் நெட்வொர்க் அந்த உள்ளீடு தொகுப்பில் பயன்படுகிறது, மற்றும் நாம்எந்த வகுப்பு இருக்க வாய்ப்பு அதிகம் என்பதை காட்டும் 1000-உறுப்புகளைக் கொண்ட தொகுப்பை பெறுகிறோம். இந்த tensor இல் `argmax` அழைத்து மிக அதிக வாய்க்கை உள்ள வகுப்பு எணினை கண்டுபிடிக்க முடியும்.\n", + "* கிடைத்த முடிவு என்பது [ஒரு `ImageNet` வகுப்பின் எண்](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). இந்த முடிவை புரிந்துகொள்ள, நாம் `decode_predictions` செயலியையும் பயன்படுத்தி, அதன் பெயர்களுடன் கூடிய மிக முக்கியமான n வகுப்புகளைப் பெறலாம்.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "விஜிஜி-16 நெட்வொர்க்கின் கட்டமைப்பையும் பார்ப்போம்:\n" + "VGG-16 நெட்வொர்க் கட்டமைப்பையும் பார்க்கலாம்:\n" ] }, { @@ -597,9 +607,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## GPU கணக்கீடுகள்\n", + "## GPU கணக்கிடல்கள்\n", "\n", - "VGG-16 மற்றும் பிற நவீன கட்டமைப்புகள் போன்ற ஆழமான நரம்பியல் வலையமைப்புகள் இயங்குவதற்கு மிக அதிக கணினி சக்தியை தேவைப்படுத்துகின்றன. GPU வேகத்தை பயன்படுத்துவது பொருத்தமாக இருக்கும், அது கிடைப்பதானால். அதிர்ஷ்டவசமாக, GPU கிடைப்பதானால், Keras தானாகவே கணக்கீடுகளை வேகமாகச் செய்கிறது. Tensorflow GPU-ஐ பயன்படுத்த முடிகிறதா என்பதை கீழே உள்ள குறியீட்டைப் பயன்படுத்தி சரிபார்க்கலாம்:\n" + "VGG-16 மற்றும் பிற நவீன கட்டமைப்புகளில் போன்ற ஆழமான நำนัก கண்ணிகள் இயக்க அதிக கணித சக்தி தேவைப்படுகிறது. GPU விரைவு அளிப்பதைக் கொண்டு பயன்படும் நல்லது, அது கிடைத்தால். அதிர்ஷ்டவசமாக, Keras, GPU அமைந்தால் அதன் கணக்கிடல்களை தானாகவே விரைவு செய்கிறது. Tensorflow GPU பயன்பாட்டிற்கு உள்ளதா என்பதை பின்வருமாறு உள்ள குறியிட்டு சோதிக்கலாம்:\n" ] }, { @@ -626,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## VGG அம்சங்களை எடுக்க\n", "\n", - "நாம் VGG-16 ஐ பயன்படுத்தி நமது படங்களில் இருந்து அம்சங்களை எடுக்க விரும்பினால், இறுதி வகைப்பாடு அடுக்கு இல்லாமல் மாடலை தேவைப்படும். கீழே உள்ள குறியீட்டை பயன்படுத்தி VGG-16 மாடலை மேல் அடுக்குகள் இல்லாமல் உருவாக்கலாம்:\n" + "## VGG அம்சங்களை எடுக்கிறது\n", + "\n", + "எங்கள் படங்களிலிருந்து அம்சங்களை எடுக்க VGG-16 ஐ பயன்படுத்த விரும்பினால், இறுதி வகைப்பாட்டு அடுக்கு இல்லாமல் முறைமை தேவைப்படுகிறது. VGG-16 மாடலை மேல்தட்டு அடுக்குகள் இல்லாமல் உருவாக்க இதை பயன்படுத்து: \n" ] }, { @@ -680,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "கூறுகளின் டென்சரின் பரிமாணம் 7x7x512 ஆக உள்ளது, ஆனால் அதை காட்சிப்படுத்துவதற்காக, அதை 2D வடிவமாக மாற்ற வேண்டியிருந்தது.\n", + "அம்சத் துண்டின் பரிமாணம் 7x7x512 ஆக உள்ளது, ஆனால் அதை காட்சி வெளிப்படுத்த 2D வடிவத்தில் மறுபிரதிசெய்ய வேண்டியிருந்தது.\n", "\n", - "இப்போது, அந்த கூறுகளை படங்களை வகைப்படுத்த பயன்படுத்த முடியுமா என்று பார்க்க முயற்சிக்கலாம். சில படங்களின் பகுதியை (எங்கள் நிலைமையில் 50 மினி பேட்ச்கள்) கையால் எடுத்து, அவற்றின் கூறு வெக்டர்களை முன்கூட்டியே கணக்கிடலாம். இதற்கு Tensorflow **dataset** API ஐ பயன்படுத்தலாம். `map` செயல்பாடு ஒரு dataset ஐ எடுத்து, கொடுக்கப்பட்ட lambda-function ஐ பயன்படுத்தி அதை மாற்றுகிறது. இந்த முறைமையை பயன்படுத்தி, `ds_features_train` மற்றும் `ds_features_test` என்ற புதிய datasets ஐ உருவாக்குகிறோம், இதில் VGG மூலம் எடுக்கப்பட்ட கூறுகள், மூல படங்களின் பதிலாக இருக்கும்.\n" + "இப்போது அந்த அம்சங்களை படங்களை வகைப்படுத்த பயன்படுத்த முடியுமா என்று பார்க்க முயலலாம். சில படங்களின் ஒரு பகுதியை (எமது அம்சமாக 50 மினி பேட்ச்கள்) தேர்வுசெய்து அவற்றின் அம்ச வெக்டர்களை முன்கூட்டியே கணக்கிடுவோம். அதற்காக Tensorflow **dataset** APIவை பயன்படுத்தலாம். `map` செயல்பாடு ஒரு தரவுத்தொகுதியை எடுத்துக் கொடுத்து குறிப்பிட்ட லாம்டா- செயல்பாட்டை இயக்குகிறது. இந்த முறையைப் பயன்படுத்தி, முழுமையான படங்களுக்குப் பதிலாக VGG-இருந்து எடுக்கப்பட்ட அம்சங்களை கொண்ட புதிய தரவுத்தொகுதிகள், `ds_features_train` மற்றும் `ds_features_test` உருவாக்கப்பட்டன.\n" ] }, { @@ -712,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "நாம் `.take(50)` கட்டமைப்பைப் பயன்படுத்தி தரவுத்தொகுப்பின் அளவை வரையறுத்தோம், எங்கள் விளக்கத்தை வேகமாக செய்ய. நீங்கள் முழு தரவுத்தொகுப்பில் இந்த பரிசோதனையை செய்யலாம்.\n", + "நாங்கள் எங்கள் காட்சி விரைவு செய்யும் நோக்கில `.take(50)` கட்டுமானத்தை dataset அளவை குறைக்கும் வகையில் பயன்படுத்தினோம். முழு dataset-இல் நீங்கள் இந்த முயற்சியை நடத்தலாம்.\n", "\n", - "இப்போது, அம்சங்கள் எடுக்கப்பட்ட ஒரு தரவுத்தொகுப்பை பெற்றுள்ளதால், நாங்கள் பூனைகள் மற்றும் நாய்களை வேறுபடுத்த ஒரு எளிய அடர்த்தியான வகைப்பாட்டாளரை பயிற்றுவிக்க முடியும். இந்த நெட்வொர்க் (7,7,512) வடிவிலான அம்ச வெக்டரை எடுத்துக்கொண்டு, அது நாய் அல்லது பூனைக்கு இணையான ஒரு வெளியீட்டை உருவாக்கும். இது இரும வகைப்பாடு என்பதால், நாங்கள் `sigmoid` செயல்பாட்டு செயல்பாட்டையும் `binary_crossentropy` இழப்பையும் பயன்படுத்துகிறோம்.\n" + "இப்போது நாம் பெறப்பட்ட அம்சங்களுடன் dataset ஒன்றைக் கொண்டுள்ளோம், சிறிய dense வகைப்பாட்டாளரை பயிற்றுவித்து பூனைகள் மற்றும் நாய்களை வேறுபடுத்தலாம். இந்த நெட்வொர்க் (7,7,512) வடிவத்தில் உள்ள அம்ச வெக்டர் ஒன்றைப் பெறும், மற்றும் நாய் அல்லது பூனை என்பதற்கான ஒரு வெளியீட்டை உருவாக்கும். இது binary classification ஆக இருப்பதால், நாம் `sigmoid` activation function மற்றும் `binary_crossentropy` நஷ்டத்தை பயன்படுத்துகிறோம்.\n" ] }, { @@ -743,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "முடிவு மிகச் சிறப்பாக உள்ளது, நாங்கள் ஒரு பூனை மற்றும் ஒரு நாயை 95% சாத்தியத்துடன் வேறுபடுத்த முடிகிறது! ஆனால், இந்த அணுகுமுறையை அனைத்து படங்களின் ஒரு துணுக்கில் மட்டுமே சோதித்துள்ளோம், ஏனெனில் கையேடு மூலம் அம்சங்களை எடுப்பது மிகவும் நேரம் எடுத்துக்கொள்ளும்.\n", + "முடிவு சிறந்ததாக இருக்கிறது, பூனை மற்றும் நாயை சுமார் 95% சாத்தியத்துடன் வேறுபடுத்த முடிகிறது! ஆனாலும், இந்த அணுகுமுறையை நாம் அனைத்து படங்களின் ஒரு துணுக்கில் மட்டும் சோதித்துள்ளோம், ஏனெனில் கைவினை அம்ச எடுப்பது காலம் எடுத்துக்கொள்ளக்கூடியதாக தெரிகிறது.\n", "\n", - "## ஒரு VGG நெட்வொர்க் பயன்படுத்தி டிரான்ஸ்ஃபர் லெர்னிங்\n", + "## ஒரு VGG நெட்வொர்க்கை பயன்படுத்தி மாற்று கற்றல்\n", "\n", - "அம்சங்களை கையேடு மூலம் முன்கூட்டியே கணக்கிடுவதை தவிர்க்க, VGG-16 நெட்வொர்க்கை முழுமையாக பயிற்சியின் போது பயன்படுத்தலாம், அதில் அம்ச எடுப்பை நெட்வொர்க்கின் முதல் அடுக்காக சேர்த்தால் போதும்.\n", + "பயிற்சியின் போது முதன்மை அம்ச எடுப்பாளராக நமது நெட்வொர்க்கில் சேர்க்குவதாக் கொண்டு, முழுமையாக இருந்த ஒரிஜினல் VGG-16 நெட்வொர்க்கை பயன்படுத்தி கைவினைப் பணிகளை தவிர்க்கவும் முடியும்.\n", "\n", - "Keras கட்டமைப்பின் அழகான அம்சம் என்னவென்றால், மேலே நாம் வரையறுத்த VGG-16 மாடலை மற்றொரு நரம்பியல் நெட்வொர்க்கில் ஒரு அடுக்காகவும் பயன்படுத்தலாம்! நாம் செய்ய வேண்டியது, அதன் மேல் ஒரு அடர்த்தியான வகைப்பாட்டாளரை கொண்ட ஒரு நெட்வொர்க்கை உருவாக்கி, பின்னர் முழு நெட்வொர்க்கை பின் பரவலின் மூலம் பயிற்சி செய்ய வேண்டும்.\n" + "Keras பிணையக் கட்டமைப்பின் அழகு என்னவெனில், மேலே நாம் வரையறுத்துள்ள VGG-16 மாதிரியை மற்றொரு நியூரல் நெட்வொர்க்கில் ஒரு அடமாகவும் பயன்படுத்த முடியும்! அதற்கு மேலே மிடுக்கான வகைப்பாட்டாளர் கொண்ட நெட்வொர்க்கை உருவாக்கி, முழு நெட்வொர்க்கையும் பின்வழிச் சீரமைப்பைப் பயன்படுத்தி பயிற்சி செய்ய வேண்டும்.\n" ] }, { @@ -793,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "இந்த மாடல் ஒரு முடிவு-to-முடிவு வகைப்பாடு நெட்வொர்க் போல தோன்றுகிறது, இது ஒரு படத்தை எடுத்து அதன் வகையை திருப்பி அளிக்கிறது. ஆனால், சிக்கலான விஷயம் என்னவென்றால், VGG16 ஒரு அம்சம் எடுக்கும் கருவியாக செயல்பட வேண்டும், மறுபயிற்சி செய்யப்படக்கூடாது. எனவே, **கன்வல்யூஷனல் அம்சம் எடுக்கும் கருவியின் எடைகளை உறைபடுத்த வேண்டும்**. நெட்வொர்கின் முதல் அடுக்கு `model.layers[0]` என்று அழைப்பதன் மூலம் அணுகலாம், மேலும் `trainable` பண்பை `False` ஆக அமைக்க வேண்டும்.\n", + "இந்த மாடல் ஒரு end-to-end வகைப்பாடு நெட்வொர்க்கைப் போன்றது, இது ஒரு படத்தை எடுத்துக்கொண்டு வகுப்பை 반환 செய்கிறது. எனினும், சிக்கலான விஷயம் என்னவென்றால் நாம் VGG16-ஐ ஒரு அம்சப் பறிமாற்றியாக செயல்படவைக்க விரும்புகிறோம், மீண்டும் பயிற்சி செய்யப்பட வேண்டாம். ஆகவே, நாமே **கலக்கு அம்ச பறிமாற்றி எடைங்களை உறுத்த வேண்டும்**. நெட்வொர்க்கின் முதல் அடியினை `model.layers[0]` என்று அழைக்கும் மூலம் அணுகலாம், மேலும் `trainable` பண்பை `False` ஆக அமைக்கவேண்டும்.\n", "\n", - "> **குறிப்பு**: அம்சம் எடுக்கும் கருவியின் எடைகளை உறைபடுத்துவது அவசியம், ஏனெனில், பயிற்சி செய்யப்படாத வகைப்பாட்டு அடுக்கு, கன்வல்யூஷனல் எடுக்கும் கருவியின் முதன்மை பயிற்சி செய்யப்பட்ட எடைகளை அழிக்கக்கூடும்.\n", + "> **குறிப்பு**: அம்ச பறிமாற்றி எடைங்களை உறுத்த தேவையானது, ஏனெனில் பயிற்சி செய்யப்படாத வகைப்படுத்தி அடுக்கு convolutional பறிமாற்றியின் முதன்மை முன்கூட்டியே பயிற்சி செய்யப்பட்ட எடை யை அழிக்கக்கூடும்.\n", "\n", - "நெட்வொர்க்கில் மொத்த அளவிலான அளவுருக்கள் சுமார் 15 மில்லியன் இருக்கும் போது, நாம் 25k அளவுருக்களை மட்டுமே பயிற்சி செய்கிறோம் என்பதை நீங்கள் கவனிக்கலாம். மேல்நிலை கன்வல்யூஷனல் வடிகட்டிகளின் மற்ற அனைத்து அளவுருக்களும் முதன்மை பயிற்சி செய்யப்பட்டவை. இது நல்லது, ஏனெனில் குறைந்த எண்ணிக்கையிலான எடுத்துக்காட்டுகளுடன் குறைந்த எண்ணிக்கையிலான அளவுருக்களை நன்றாகச் சரிசெய்ய முடிகிறது.\n", + "நமது நெட்வொர்க்கில் மொத்த அளவுகோல் சுமார் 15 மில்லியன் இருக்கும்போது, நாங்கள் வெறும் 25k அளவுகோலை மட்டும் பயிற்சி செய்கிறோம் என்பதை கவனிக்கலாம். மேல்நிலை convolutional வடிகட்டிகளின் மற்ற அனைத்து அளவுகோல்களும் முன்கூட்டியே பயிற்சி செய்யப்பட்டவை. இது நன்மை காரணம், ஏனெனில் நாம் சிறிய எண்ணிக்கையுடன் குறைந்த அளவுகோல்களை நன்கு சரிசெய்ய முடியும்.\n", "\n", - "இப்போது நமது நெட்வொர்க்கை பயிற்சி செய்து எவ்வளவு நன்றாக முடியும் என்பதை பார்ப்போம். நீண்ட நேரம் செயல்படுவதை எதிர்பாருங்கள், மேலும் செயல்பாடு சில நேரங்களில் உறைந்தது போல தோன்றினாலும் கவலைப்பட வேண்டாம்.\n" + "இப்போது நமது நெட்வொர்க்கைப் பயிற்சி செய்யும் போது நாம் எவ்வளவு நன்றாக பெற முடியும் என்பதை காண்போம். ஓரிரு நேரமாக ஓடுவதற்கான எதிர்பார்ப்பு வைக்கவும், செயலாக்கம் சில நேரம் நடுங்கும் போல் தெரிந்தாலும் கவலைப்பட வேண்டாம்.\n" ] }, { @@ -824,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "நாம் பூனைகள் மற்றும் நாய்கள் வகைப்பாட்டாளரை நியாயமான அளவில் துல்லியமாகப் பெற்றுள்ளோம் போல தெரிகிறது!\n", + "நாங்கள் சாத்தியமான அளவில் துல்லியமான பூனைகள் மற்றும் நாய்கள் வகைப்பாட்டை பெறுவதாக தெரிகிறது! \n", "\n", - "## மாடலை சேமித்தல் மற்றும் ஏற்றுதல்\n", + "## மாதிரியை சேமித்தல் மற்றும் ஏற்றுதல்\n", "\n", - "மாடலை பயிற்சி செய்த பிறகு, மாடல் கட்டமைப்பையும் பயிற்சி செய்யப்பட்ட எடைகளையும் எதிர்கால பயன்பாட்டுக்காக ஒரு கோப்பில் சேமிக்கலாம்:\n" + "ஒருமுறை மாதிரியை பயிற்றுவித்த பின்னர், நாம் மாதிரி கட்டமைப்பையும் பயிற்றுவிக்கப்பட்ட எடைகளையும் எதிர்கால பயன்பாட்டிற்காக ஒரு கோப்பாக சேமிக்கலாம்:\n" ] }, { @@ -852,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "அப்போது, நாம் எந்த நேரத்திலும் கோப்பில் இருந்து மாடலை ஏற்றலாம். அடுத்த பரிசோதனை மாடலை அழிக்கக்கூடிய சூழலில், நீங்கள் இதை பயனுள்ளதாகக் காணலாம் - நீங்கள் ஆரம்பத்திலிருந்து மீண்டும் தொடங்க வேண்டிய அவசியம் இருக்காது.\n" + "அத்துடன், எப்போது வேண்டுமானாலும் கோப்பிலிருந்து மாதிரியை ஏற்றக்கூடியோம். அடுத்த ஆய்வு மாதிரியை அழிக்கும் நிலவரத்தில் இது பயனுள்ளதாக இருக்கும் - நீங்கள் துவக்கம் முதல் மீண்டும் தொடங்க வேண்டியதில்லை.\n" ] }, { @@ -868,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## டிரான்ஸ்ஃபர் லெர்னிங் ஃபைன்-ட்யூனிங்\n", + "## நுணுக்கமாக மாற்ற கற்றல் செட் செய்தல்\n", "\n", - "முந்தைய பிரிவில், நாங்கள் இறுதி வகைப்பாட்டாளர் அடுக்கு மூலம் எங்கள் சொந்த தரவுத்தொகுப்பில் உள்ள படங்களை வகைப்படுத்த பயிற்சி செய்துள்ளோம். ஆனால், நாங்கள் அம்சங்களை எடுக்கும் பகுதியை மீண்டும் பயிற்சி செய்யவில்லை, மேலும் எங்கள் மாதிரி ImageNet தரவுகளில் கற்றுக்கொண்ட அம்சங்களை நம்பியது. உங்கள் பொருட்கள் ImageNet படங்களிலிருந்து காட்சியளவில் வேறுபடுமானால், இந்த அம்சங்களின் சேர்க்கை சிறந்த முறையில் செயல்படாமல் இருக்கலாம். எனவே, கான்வல்யூஷனல் அடுக்குகளைப் பயிற்சி செய்யத் தொடங்குவது நியாயமானது.\n", + "முந்தைய பகுதியில், நாங்கள் இறுதி வகைப்படுத்தும் அடுக்கை நமது சொந்த தரவுத்தொகுப்பில் உள்ள படங்களை வகைப்படுத்த பயிற்றுவித்தோம். ஆனால், அம்சக் கழிப்பாய்வாளரை மீண்டும் பயிற்றுவிக்கவில்லை மற்றும் நமது மodel் ImageNet தரவின் அம்சங்களையே நம்பியது. உங்கள் பொருட்கள் பொதுவான ImageNet படங்களிலிருந்து கண்ணோட்ட ரீதியாக வேறுபட்டிருந்தால், இந்த அம்சக் கூட்டணி சிறந்ததாக வேலை செய்யாதிருக்கலாம். ஆகவே, தொகுதி அடுக்குகளையும் பயிற்றுவிக்கத் தொடங்குவது நிவர்த்தியானது.\n", "\n", - "அதற்காக, நாம் முன்பு உறைந்த கான்வல்யூஷனல் ஃபில்டர் அளவுருக்களை மீண்டும் திறக்கலாம்.\n", + "அதற்காக, நாங்கள் முந்தய ஃப்ரீஜ் செய்திருந்த தொகுதி வடிகட்டி அளவுருக்களைக் கிளப்ப முடியும்.\n", "\n", - "> **குறிப்பு:** முதலில் அளவுருக்களை உறையவைத்து, வகைப்பாட்டாளர் அடுக்கில் எடை நிலைத்திருக்க பல எபோக்களைப் பயிற்சி செய்வது முக்கியம். நீங்கள் உடனடியாக உறையாத அளவுருக்களுடன் முழு நெட்வொர்க்கை பயிற்சி செய்யத் தொடங்கினால், பெரிய பிழைகள் கான்வல்யூஷனல் அடுக்குகளில் முன்பே பயிற்சி செய்யப்பட்ட எடைகளை அழிக்கக்கூடும்.\n", + "> **குறிப்பு:** முதலில் அளவுருக்களை ஃப்ரீஜ் செய்து, வகைப்படுத்தும் அடுக்கில் எடைகள் நிலைத்திருப்பதற்காக பல இடைவெளிகள் பயிற்சியைச் செய்வது முக்கியம். உங்கள் அகற்றப்பட்ட அளவுருக்களுடன் உடனுக்குடன் முழு இணையத்தை பயிற்றுவித்தால், பெரிய பிழைகள் தொகுதி அடுக்குகளில் இருக்கும் முந்தைய பயிற்சி எடைகளை சேதம் செய்ய வாய்ப்புள்ளது.\n", "\n", - "எங்கள் கான்வல்யூஷனல் VGG-16 மாதிரி முதல் அடுக்கில் உள்ளது, மேலும் இது பல அடுக்குகளை கொண்டது. அதன் அமைப்பைப் பார்ப்போம்:\n" + "நமது தொகுதி VGG-16 மodel் முதல் அடுக்கில் உள்ளது, அது பல அடுக்குகளைக் கொண்டது. அதன் அமைப்பை நாம் பார்ப்போம்:\n" ] }, { @@ -945,7 +956,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "நாம் கான்வல்யூஷனல் அடிப்படையின் அனைத்து அடுக்குகளையும் உருகவிடலாம்:\n" + "நாம் கூட்டிச் சுருக்க அடித்தளத்தின் அனைத்து அடுக்குகளையும் மீள்க்கடத்தலாம்:\n" ] }, { @@ -961,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "எனினும், அவற்றை அனைத்தையும் ஒரே நேரத்தில் உருகச் செய்வது சிறந்த யோசனை அல்ல. முதலில் சில இறுதி சுருட்டல்களின் அடுக்கு மட்டுமே உருகச் செய்யலாம், ஏனெனில் அவை எங்கள் படங்களுக்குத் தொடர்புடைய உயர் நிலை வடிவங்களை கொண்டுள்ளன. உதாரணமாக, தொடக்கத்தில், இறுதி 4 அடுக்குகளைத் தவிர அனைத்து அடுக்குகளையும் உறையவிடலாம்:\n" + "இருப்பினும், அவற்றில் எல்லாவற்றையும் ஒரே நேரத்தில் அன்ஃப்ரீஸ் செய்வது சிறந்த யோசனை அல்ல. முதலில், நாங்கள் வெறும் சில கடைசி convolution அடுக்குகளை மட்டும் அன்ஃப்ரீஸ் செய்யலாம், ஏனெனில் அவைகள் எங்கள் படங்களுக்கே பொருந்தக்கூடிய உயர் மட்டத்தின் மாதிரிகளை கொண்டிருக்கின்றன. உதாரணமாக, முதலில், கடைசி 4 அடுக்குகளை தவிர்த்து மற்ற எல்லா அடுக்குகளையும் ஃப்ரீஸ் செய்யலாம்: \n" ] }, { @@ -1000,11 +1011,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "கற்றுக்கொள்ளக்கூடிய அளவுகோள்களின் எண்ணிக்கை குறிப்பிடத்தக்க அளவில் அதிகரித்துள்ளது, ஆனால் இது இன்னும் மொத்த அளவுகோள்களின் சுமார் 50% மட்டுமே உள்ளது.\n", + "பயிற்சி அளக்க கூடிய அளவுருக்களின் எண்ணிக்கை முக்கியமாக அதிகரித்துள்ளதை கவனியுங்கள், ஆனால் அது இன்னும் அனைத்து அளவுருக்களின் சுமார் 50% ஆகும்.\n", "\n", - "உறைந்த நிலையை நீக்கிய பிறகு, மேலும் சில காலகட்டங்களுக்கு பயிற்சி செய்யலாம் (எங்கள் எடுத்துக்காட்டில், நாம் ஒரு காலகட்டம் மட்டுமே செய்வோம்). முன்பயிற்சியளிக்கப்பட்ட எடைகளின் தாக்கத்தை குறைக்க, குறைந்த கற்றல் வீதத்தைத் தேர்ந்தெடுக்கலாம். ஆனால், குறைந்த கற்றல் வீதத்துடன் கூட, பயிற்சியின் தொடக்கத்தில் துல்லியத்திற்கான மதிப்பு குறையலாம், பின்னர் நிலையான எடைகளின் நிலைமையை விட சிறிது அதிகமான நிலையை அடையும்.\n", + "உறையாமல் வைத்து விடுவதன் பிறகு, நாம் மேலும் சில epoch பயிற்சிகளை செய்யலாம் (எங்கள் எடுத்துக்காட்டில், நாம் ஒரேயொரு epoch செய்யப்போவது). முன்-பயிற்சி அளவுருக்களுக்கு குறைவான தாக்கத்தை ஏற்படுத்த குறைந்த கட்டுப்பாட்டு விகிதத்தை நீங்கள் தேர்வு செய்யவும் முடியும். இருப்பினும், குறைந்த கட்டுப்பாட்டு விகிதத்துடனும், பயிற்சி தொடக்கத்தில் துல்லியம் குறையலாம் என்று எதிர்பார்க்கலாம், இறுதியில் நிரந்தர அளவுருக்களைப் பயன்படுத்தியதைவிட சிறிது அதிகமான நிலைக்கு வரும் வரை.\n", "\n", - "> **குறிப்பு:** இந்த பயிற்சி மிகவும் மெதுவாக நடக்கிறது, ஏனெனில் நெட்வொர்க்கின் பல அடுக்குகள் வழியாக gradients-ஐ மீண்டும் பரப்ப வேண்டும்!\n" + "> **குறிப்பு:** இந்த பயிற்சி மிகவும் மெதுவாக நடக்கும், ஏனெனில் நெட்வொர்க்கின் பல அடுக்குகளினுள் பின்தடங்களை மீண்டும் பரப்ப வேண்டும்!\n" ] }, { @@ -1028,18 +1039,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "நாம் அதிகமான பராமானங்களுடன் சக்திவாய்ந்த நெட்வொர்க்கைப் பயன்படுத்துவதால், அதிக பயிற்சி துல்லியத்தை அடைய வாய்ப்பு உள்ளது, ஆனால் சரிபார்ப்பு துல்லியம் அதே அளவுக்கு அதிகரிக்காது.\n", + "біз көбірек параметрлері бар күшті желіні пайдаланудамыз, сондықтан біз жоғары оқыту дәлдігін жетуге жоғары ықтималдығы бар, бірақ тексеру дәлдігі соншалықты көп өсетін болмас.\n", "\n", - "நெட்வொர்க்கின் மேலும் சில அடுக்குகளை அனுமதித்து, மேலும் பயிற்சி செய்யலாம், அதிக துல்லியத்தை அடைய முடியுமா என்று பார்க்க!\n" + "Желіде бірнеше қабаттарды еркін етіп, көп оқытуға еркін болыңыз, жоғары дәлдікті қол жеткізе алатыныңызды көру үшін!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## பிற கணினி பார்வை மாடல்கள்\n", + "## பிற கணினி காட்சி மாதிரிகள்\n", "\n", - "VGG-16 என்பது எளிய கணினி பார்வை கட்டமைப்புகளில் ஒன்றாகும். Keras பல முன்பே பயிற்சி அளிக்கப்பட்ட நெட்வொர்க்குகளை வழங்குகிறது. அவற்றில் அதிகமாக பயன்படுத்தப்படும் மாடல்கள் **ResNet** கட்டமைப்புகள், Microsoft மூலம் உருவாக்கப்பட்டவை, மற்றும் **Inception** Google மூலம் உருவாக்கப்பட்டவை. உதாரணமாக, மிக எளிய ResNet-50 மாடலின் கட்டமைப்பை ஆராய்வோம் (ResNet என்பது மாடல்களின் குடும்பமாகும், இது வெவ்வேறு ஆழத்துடன் உள்ளது; நீங்கள் உண்மையில் ஆழமான மாடல் எப்படி இருக்கும் என்பதைப் பார்க்க விரும்பினால் ResNet-152 ஐ முயற்சிக்கலாம்):\n" + "VGG-16 என்பது மிக எளிய கணினி காட்சி உருவமைப்புகளில் ஒன்றாகும். Keras பல முன்பே பயிற்றுவிக்கப்பட்ட நெட்வொர்க்குகளை வழங்குகிறது. அவைகளுள் அதிகம் பயன்பாட்டில் உள்ளவை Microsoft உருவாக்கிய **ResNet** உருவமைப்புகள் மற்றும் Google உருவாக்கிய **Inception** ஆகும். உதாரணமாக, மிகவும் எளிய ResNet-50 மாதிரியின் (ResNet என்பது வித்தியாசமான ஆழத்துடன் உள்ள மாதிரிகளின் குடும்பம், நீங்கள் உண்மையான ஆழமான மாதிரி எப்படி இருப்பதென்று பார்க்க ResNet-152 உடன் செயல்பட முயற்சிக்கலாம்) உருவமைப்பை ஆராய்வோம்:\n" ] }, { @@ -1441,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "இந்த மாதிரி, பழக்கமான கட்டமைப்புகளை கொண்டுள்ளது: கான்வல்யூஷனல் லேயர்கள், பூலிங் லேயர்கள் மற்றும் இறுதியில் டென்ஸ் வகைப்பாடு. VGG-16 ஐ டிரான்ஸ்ஃபர் லெர்னிங் செய்ய பயன்படுத்தியதைப் போலவே, இந்த மாதிரியைப் பயன்படுத்தலாம். மேலே கொடுக்கப்பட்டுள்ள குறியீட்டில், வேறு ResNet மாதிரிகளை அடிப்படை மாதிரியாக பயன்படுத்தி பரிசோதித்து, துல்லியத்தில் எப்படி மாற்றங்கள் ஏற்படுகின்றன என்பதைப் பார்க்கலாம்.\n", + "நீங்கள் பார்க்க முடிகிறது போல, மாதிரி அதே பழக்கமுடைய கட்டடக் கட்டுக்கள் கொண்டுள்ளது: ஒத்திகை அடுக்கு, குழாய் அடுக்கு மற்றும் இறுதி தட்டையான வகைப்பாடு. இந்த மாதிரியை நாம் VGG-16 ஐ மாற்றக் கற்றலுக்காக பயன்படுத்தி வந்த மாதிரியில் சரியாக அதே விதத்தில் பயன்படுத்தலாம். மேலே கொடுக்கப்பட்ட குறியீட்டுடன் வேறு ResNet மாதிரிகளை அடிப்படை மாதிரியாக பயன்படுத்தி பரிசோதனை செய்து, துல்லியங்கள் எப்படி மாறுகின்றன என்று பார்க்கலாம்.\n", "\n", - "## பேட்ச் நார்மலைசேஷன்\n", + "## பேட்ச் நிலைநாட்டல்\n", "\n", - "இந்த நெட்வொர்க் இன்னொரு வகையான லேயரை கொண்டுள்ளது: **பேட்ச் நார்மலைசேஷன்**. பேட்ச் நார்மலைசேஷனின் நோக்கம், நரம்பியல் நெட்வொர்க்கில் செல்லும் மதிப்புகளை சரியான இடைவெளிக்குள் கொண்டு வருவது. பொதுவாக, நரம்பியல் நெட்வொர்க்குகள் [-1,1] அல்லது [0,1] இடைவெளியில் உள்ள மதிப்புகளுடன் சிறப்பாக செயல்படுகின்றன, அதனால் நாங்கள் உள்ளீட்டு தரவுகளை அளவிட/சீரமைக்கிறோம். ஆனால், ஒரு ஆழமான நெட்வொர்க்கை பயிற்சி செய்யும் போது, மதிப்புகள் இந்த இடைவெளியை மிக அதிகமாக மீறக்கூடும், இது பயிற்சியை சிக்கலாக்கும். பேட்ச் நார்மலைசேஷன் லேயர் தற்போதைய மினிபேட்சின் அனைத்து மதிப்புகளுக்கான சராசரி மற்றும் நிலையான சிதறலை கணக்கிடுகிறது, மற்றும் நரம்பியல் நெட்வொர்க்கு செல்லும் முன் சிக்னலை சீரமைக்கிறது. இது ஆழமான நெட்வொர்க்குகளின் நிலைத்தன்மையை குறிப்பிடத்தக்க அளவில் மேம்படுத்துகிறது.\n" + "இந்த வலையமைப்பில் இன்னொரு வகை அடுக்கு உள்ளது: **பேட்ச் நிலைநாட்டல்**. பேட்ச் நிலைநாட்டலின் கருத்து, நரையியல் வலையமைப்பில் செல்லும் மதிப்புக்களை சரியான இடைவெளிக்கு கொண்டு வருவது. பொதுவாக, நரையியல் வலையமைப்புகள் அனைத்துப் மதிப்புகளும் [-1,1] அல்லது [0,1] இடையே இருக்கும்போது சிறந்த முறையில் செயல்படுகின்றன, அதனால் நாம் நமது உள்ளீட்டு தரவுகளை அதன் படி அளவுருவாக்க/நிலைநாட்டுகிறோம். ஆனாலும், ஆழமான வலையமைப்பின் பயிற்சியின் போது, மதிப்புகள் இந்த வரம்புக்கு மிகவும் வெளியே செல்லலாம், இது பயிற்சியை பிரச்சனையாக்கும். பேட்ச் நிலைநாட்டல் அடுக்கு தற்போதைய மினிபேட்ச் உள்ள அனைத்து மதிப்புகளுக்கான சராசரி மற்றும் நிலையான விகிதாசாரத்தை கணக்கிட்டு, நரையியல் வலையமைப்பு அடுக்கு மூலம் அமைந்த சிக்னலை நிலைநாட்ட பயன்படுத்துகிறது. இதனால் ஆழமான வலையமைப்புகளின் நிலைத்தன்மை குறிப்பிடத்தகவு உயர்கிறது.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## முக்கிய குறிப்புகள்\n", + "## எடுத்துக்காட்டு\n", "\n", - "டிரான்ஸ்ஃபர் லெர்னிங் பயன்படுத்தி, நாங்கள் எங்கள் தனிப்பயன் பொருள் வகைப்படுத்தல் பணிக்கான வகைப்படுத்தியை விரைவாக உருவாக்கி, அதிக துல்லியத்தை அடைய முடிந்தது. ஆனால், இந்த எடுத்துக்காட்டு முழுமையாக நியாயமானதாக இல்லை, ஏனெனில் VGG-16 நெட்வொர்க் முதலில் பூனைகள் மற்றும் நாய்களை அடையாளம் காண பயிற்சி பெற்றது, எனவே நாங்கள் நெட்வொர்க்கில் ஏற்கனவே உள்ள பெரும்பாலான வடிவங்களை மீண்டும் பயன்படுத்தினோம். உற்பத்தி கோட்டில் உள்ள விவரங்கள் அல்லது வேறு மர இலைகள் போன்ற விசித்திரமான துறை சார்ந்த பொருட்களில், நீங்கள் குறைந்த துல்லியத்தை எதிர்பார்க்கலாம்.\n", + "மாற்று கற்றலினைப் பயன்படுத்தி, நாங்கள் எங்கள் தனிப்பயன் பொருள் வகைப்படுத்தல் பணிக்கு ஒரு வகைப்பாட்டாளரை விரைவாக ஒன்றிணைத்து, உயர் துல்லியத்தை அடைய முடிந்தது. என்றாலும், இந்த எடுத்துக்காட்டு முற்றிலும் நியாயமானது ஆகவில்லை, ஏனெனில் அசல் VGG-16 சப்ளையுடன் பூனைகள் மற்றும் நாய்களை அடையாளம் காண கற்றுக்கொள்ளப்பட்டது, எனவே நாங்கள் அந்த நெட்வொர்க்கில் ஏற்கனவே உள்ள பெரும்பாலான மாதிரிகளை மீண்டும் பயன்படுத்தினோம். உற்பத்தி வரிசையில் உள்ள விவரங்கள் அல்லது வேறுபட்ட மர இலைகள் போன்ற அதிக கிள்ப்பட்ட துறைக்குறிப்புள்ள பொருட்களில் குறைவான துல்லியம் எதிர்பார்க்கலாம்.\n", "\n", - "நாங்கள் தற்போது தீர்க்க முயற்சிக்கும் சிக்கலான பணிகள் அதிக கணினி சக்தியை தேவைப்படுத்துவதை நீங்கள் காணலாம், மேலும் CPU-வில் எளிதாக தீர்க்க முடியாது. அடுத்த பிரிவில், குறைந்த கணினி வளங்களைப் பயன்படுத்தி அதே மாதிரியான மாடலை பயிற்சி செய்ய, மேலும் சற்று குறைந்த துல்லியத்தை மட்டுமே பெறும், எளிதான செயல்பாட்டை முயற்சிக்கப் போகிறோம்.\n" + "நாம் தற்போது தீர்க்கும் மிகக் கம்பிளக்ஸ் பணிகள் அதிக கணக்கீட்டு சக்தி தேவைப்படுவதை காணலாம், மேலும் அவை CPU-இல் எளிதில் தீர்க்க முடியாது. அடுத்த அலகில், குறைந்த கணினி வளங்களைப் பயன்படுத்தி அதே மாதிரியை பயிற்றுவிக்க எளிதான செயல்முறை ஒன்றைப் பயன்படுத்த முயற்சிப்போம், இது சிறிது குறைந்த துல்லியத்தை விளைவிக்கிறது.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**குறிப்பு**: \nஇந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கின்றோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல.\n" + "---\n\n\n**மறுப்பு**:\nஇந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை.\n\n" ] } ], @@ -1484,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-10-11T12:00:57+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "ta" } }, "nbformat": 4, diff --git a/translations/ta/lessons/5-NLP/README.md b/translations/ta/lessons/5-NLP/README.md index 3cee4138..238b8e42 100644 --- a/translations/ta/lessons/5-NLP/README.md +++ b/translations/ta/lessons/5-NLP/README.md @@ -1,59 +1,51 @@ # இயற்கை மொழி செயலாக்கம் -![NLP பணிகளின் சுருக்கம் ஒரு ஓவியத்தில்](../../../../translated_images/ta/ai-nlp.b22dcb8ca4707cea.webp) +![NLP பணிகளின் சுருக்கம் ஒரு டூடிலில்](../../../../translated_images/ta/ai-nlp.b22dcb8ca4707cea.webp) -இந்த பிரிவில், **இயற்கை மொழி செயலாக்கம் (NLP)** தொடர்பான பணிகளை கையாள நரம்பியல் வலையமைப்புகளைப் பயன்படுத்துவதில் கவனம் செலுத்துவோம். கணினிகள் தீர்க்க வேண்டிய பல NLP பிரச்சினைகள் உள்ளன: +இந்த பிரிவில், நாங்கள் நியூரல் நெட்வொர்க்குகளைப் பயன்படுத்தி **இயற்கை மொழி செயலாக்கம் (NLP)** தொடர்பான பணிகளை மேற்கொள்ள கவனம் செலுத்தப்போகிறோம். கணினிகள் தீர்க்க விரும்பும் பல NLP பிரச்சினைகள் உள்ளன: -* **உரை வகைப்படுத்தல்** என்பது உரை வரிசைகளுக்கான ஒரு வழக்கமான வகைப்படுத்தல் பிரச்சினையாகும். உதாரணமாக, மின்னஞ்சல் செய்திகளை ஸ்பாம் மற்றும் ஸ்பாம் அல்ல என வகைப்படுத்துதல் அல்லது கட்டுரைகளை விளையாட்டு, வணிகம், அரசியல் போன்றவையாக வகைப்படுத்துதல். மேலும், சாட் போட்களை உருவாக்கும்போது, பயனர் என்ன சொல்ல விரும்புகிறார் என்பதைப் புரிந்துகொள்ள வேண்டும் - இந்தச் சூழலில் நாம் **நோக்க வகைப்படுத்தல்** (intent classification) பிரச்சினையை கையாளுகிறோம். நோக்க வகைப்படுத்தலில் பல வகைகளை கையாள வேண்டிய நிலை ஏற்படும். +* **ஆயிர்த்தொடர் வர்க்கப்பிரிவு** என்பது உரை தொடர்களுக்கு தொடர்புடைய ஒரு வழக்கமான வகைப்பாடு பிரச்சினை. உதாரணமாக, மின்னஞ்சல் எடை அஞ்சல்கள் ஸ்பாம் அல்லது ஸ்பாம் அல்ல என வகைப்படுத்துதல் அல்லது கட்டுரைகளை விளையாட்டுக் காலம், தொழில், அரசியல் என்பனவாக வகைப்படுத்துதல். மேலும், சாட் பாட்டுகளை உருவாக்கும்போது, பயனர் என்னக் கூற விரும்பினார்களோ அதை புரிந்துகொள்ள வேண்டும் -- இதை **நோக்கம் வகைப்படுத்தல்** என்று கூறுகிறோம். நோக்கம் வகைப்படுத்தலில் பல வகைகளை கையாள வேண்டி இருக்கிறது. +* **புகைப்படம் பகுப்பாய்வு** என்பது ஒரு வழக்கமான மறுபடியும் கணக்கிடுதல் பிரச்சினை, இதில் ஒரு வாக்கியத்தின் பொருள் எவ்வளவு நேர்மறை/எதிர்மறை என ஒரு எண்ணை (புகைப்படம்) நாங்கள் ஒதுக்கவேண்டும். புகைப்படக் கணக்கீட்டின் மேம்பட்ட பதிப்பு **அங்ஙீகங்களை அடிப்படையாகக் கொண்ட புகைப்பட பகுப்பாய்வு** (ABSA), இதில் முழு வாக்கியத்திற்கு மாறாக அதன் வெவ்வேறு பகுதிகளுக்கு (அங்ஙீகங்கள்) புகைப்படம் ஒதுக்கப்படுகிறது, உதாரணமாக *இந்த உணவுக்கடையில், எனக்கு சமையல் பிடித்தது, ஆனால் சூழல் மோசமாக இருந்தது*. +* **பெயர் பொருள் அடையாளம்** (NER) என்பது உரையிலிருந்து குறிப்பிட்ட பொருட்களை எடுக்கும் பிரச்சினை. எடுத்துக்காட்டிற்கு, *நாளை பாரிஸுக்கு பறக்க வேண்டும்* என்ற வாக்கியத்தில் *நாளை* என்பது தேதி (DATE) என்பதையும் *பாரிஸ்* என்பது இடம் (LOCATION) என்பதையும் புரிந்துகொள்ள வேண்டும். +* **துணைக்குறிகள் எடுக்கும் பணிகள்** NER போன்றது, ஆனால் நாங்கள் குறிப்பிட்ட பொருள் வகைகளுக்காக முன் பயிற்சி செய்யாமல் வாக்கியத்தின் பொருளுக்கு முக்கியமான வார்த்தைகளை தானாக எடுக்கவேண்டும். +* **உரை தொகுப்பு** என்பது ஒரே மாதிரியான வாக்கியங்களை குழுவாக்கவேண்டியபோது உதவியாக இருக்கக்கூடும், உதாரணமாக, தொழில்நுட்ப ஆதரவு உரையாடல்களில் ஒரே மாதிரியான கோரிக்கைகள். +* **பிரச்னை பதில் அளித்தல்** என்பது ஒரு மாதிரியால் ஒரு குறிப்பிட்ட கேள்விக்கு பதில் அளிக்கும் திறன். மாதிரி ஒரு உரை பகுதியையும் ஒரு கேள்வியையும் உள்ளீடாக பெறுகிறது, கேள்விக்கு பதில் கொண்டிருக்கும் இடத்தை (அல்லது, சில சமயங்களில், பதில் உரையை உருவாக்க) வழங்க வேண்டும். +* **உரை உருவாக்கம்** என்பது ஒரு மாதிரி புதிய உரையை உருவாக்கும் திறனாகும். இது ஒரு வகைப்பாடு வேலைவாய்ப்பு போல கருதப்படலாம், அடுத்து வரும் அகரவியல்/வார்த்தையை *உரை ஊக்கம்* அடிப்படையில் முன்னறிவிக்கும். GPT-3 போன்ற மேம்பட்ட உரை உருவாக்க மாதிரிகள், [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) அல்லது [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) என்ற முறையைப் பயன்படுத்தி வகைப்படுத்தல் போன்ற மற்ற NLP பணிகளையும் எளிதில் செய்ய முடியும். +* **உரை சுருக்கம்** என்பது கணினி நீண்ட உரையை "படித்து" அதை சில வாக்கியங்களில் சுருக்க வேண்டும் என்று இரு தொழில். +* **மெஷின் மொழிபெயர்ப்பு** என்பது ஒரு மொழியில் உரையை புரிந்து, மற்றொரு மொழியில் உரையை உருவாக்குவதன் கலவையாக பார்க்க முடியும். -* **உணர்வு பகுப்பாய்வு** என்பது ஒரு வழக்கமான மடங்கல் (regression) பிரச்சினையாகும், இதில் ஒரு வாக்கியத்தின் அர்த்தம் எவ்வளவு நேர்மறை/எதிர்மறை என்பதைப் பிரதிபலிக்கும் ஒரு எண்ணை (உணர்வு) வழங்க வேண்டும். உணர்வு பகுப்பாய்வின் மேம்பட்ட பதிப்பு **கோண அடிப்படையிலான உணர்வு பகுப்பாய்வு** (ABSA) ஆகும், இதில் முழு வாக்கியத்திற்கு அல்லாமல் அதன் பல்வேறு பகுதிகளுக்கு (கோணங்கள்) உணர்வை வழங்க வேண்டும், உதாரணமாக *இந்த உணவகத்தில், நான் சமையலை விரும்பினேன், ஆனால் சூழல் மோசமாக இருந்தது*. +ஆரம்பத்தில், பல NLP பணிகள் வழக்கமான வேதியியல் முறைகளைப் பயன்படுத்தி தீர்க்கப்பட்டன. எடுத்துக்காட்டிற்கு, மெஷின் மொழிபெயர்ப்பில் ஆரம்ப வாக்கியத்தை ஒரு வர்க்க மரமாக மாற்ற பர்ஸர்கள் பயன்படுத்தப்பட்டனர், பின்னர் மேல்நிலை பொருள் அமைப்புகள் எடுக்கப்பட்டு வாக்கியத்தின் பொருள் பிரதிநிதித்துவப்படுத்தப்பட்டது, இதற்கும் இலக்க மொழியின் வேதியியலும் அடிப்படையாக கொண்டு முடிவு உருவாக்கப்பட்டது. இந்நிலையில், இன்று பல NLP பணிகள் நியூரல் நெட்வொர்க்குகளைப் பயன்படுத்தி இன்னும் பயனுள்ள முறையில் தீர்க்கப்படுகின்றன. -* **பெயரிடப்பட்ட பொருள் அடையாளம்** (NER) என்பது உரையிலிருந்து குறிப்பிட்ட பொருட்களை எடுப்பதற்கான பிரச்சினையாகும். உதாரணமாக, *நான் நாளை பாரிசுக்கு பறக்க வேண்டும்* என்ற வாக்கியத்தில் *நாளை* என்பது தேதி (DATE) மற்றும் *பாரிஸ்* என்பது இடம் (LOCATION) என்பதைப் புரிந்துகொள்ள வேண்டும். +> பல பாரம்பரிய NLP முறைகள் [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) பைதான் நூலகத்தில் வடிவமைக்கப்பட்டுள்ளன. பல்வேறு NLP பணிகளை NLTK மூலம் எப்படி தீர்க்கலாம் என்பதை கொண்ட ஒரு சிறந்த [NLTK புத்தகம்](https://www.nltk.org/book/) இணையத்தில் கிடைக்கும். -* **முக்கிய வார்த்தை எடுப்பது** NER-க்கு ஒத்ததாக உள்ளது, ஆனால் குறிப்பிட்ட பொருள் வகைகளை முன்பயிற்சி செய்யாமல், வாக்கியத்தின் அர்த்தத்திற்கு முக்கியமான வார்த்தைகளை தானாக எடுக்க வேண்டும். +எங்கள் பாடத்தில், பெரும்பாலும் NLP க்கான நியூரல் நெட்வொர்க்குகளை பயன்படுத்துவோம், தேவையான இடங்களில் NLTK பயன்செய்யப்படும். -* **உரை குழுமம்** (Text clustering) என்பது ஒரே மாதிரியான வாக்கியங்களை ஒன்றாகக் குழுமிக்க உதவியாக இருக்கலாம், உதாரணமாக, தொழில்நுட்ப ஆதரவு உரையாடல்களில் ஒரே மாதிரியான கோரிக்கைகளை. +நாங்கள் ஏற்கனவே நியூரல் நெட்வொர்க்குகள் மூலம் அட்டவணை தரவையும் படங்களையும் கையாள எப்படி என்று கற்றுக்கொண்டுள்ளோம். அந்த வகை தரவுகளுக்கும் உரைக்கும் இடையேயான முக்கிய வேறுபாடு என்னவெனில் உரை ஒரு மாறி நீள கொண்ட தொடர் ஆகும், ஆனால் படங்களின் உள்ளீடு அளவு முன்கூட்டியே தெரியும். கான்வால்யூஷனல் நெட்வொர்க்குகள் உள்ளீடில் இருந்து வடிவங்களை எடுத்துக் கொள்ள முடியும், ஆனால் உரையின் வடிவங்கள் மிகவும் சிக்கலானவை. எடுத்துக்காட்டிற்கு, மறுப்பு (negation) தலைப்பு (subject) இலிருந்து நான் பல வார்த்தைகளுக்கு விலகி இருக்கலாம் (உதா., *நான் ஆரஞ்சுகளை விரும்பவில்லை*, vs. *நான் அந்த பெரிய வண்ணமயமான சுவையான ஆரஞ்சுகளை விரும்பவில்லை*), ஆனால் அதே வடிவமாகவே பொருள்படுத்தப்படவேண்டும். ஆகவே, மொழியை கையாள நமது புதிய நியூரல் நெட்வொர்க்கு வகைகள், உதாரணமாக *ஆரம்ப நெட்வொர்க்குகள்* மற்றும் *டிரான்ஸ்ஃபார்மர்கள்* அறிமுகப்படுத்த வேண்டியிருக்கும். -* **கேள்வி பதில்** (Question answering) என்பது ஒரு மாடல் குறிப்பிட்ட கேள்விக்கு பதிலளிக்கக் கூடிய திறனை குறிக்கிறது. மாடல் ஒரு உரை பகுதி மற்றும் ஒரு கேள்வியை உள்ளீடுகளாகப் பெறுகிறது, மற்றும் கேள்விக்கு பதில் உள்ள இடத்தை உரையில் வழங்க வேண்டும் (அல்லது, சில நேரங்களில், பதில் உரையை உருவாக்க வேண்டும்). +## நூலகங்கள் நிறுவுதல் -* **உரை உருவாக்கல்** (Text Generation) என்பது ஒரு மாடல் புதிய உரையை உருவாக்கும் திறனை குறிக்கிறது. இது ஒரு வகைப்படுத்தல் பணியாகக் கருதப்படலாம், இது *உரைத் தூண்டுதல்* (text prompt) அடிப்படையில் அடுத்த எழுத்து/வார்த்தையை கணிக்கிறது. GPT-3 போன்ற மேம்பட்ட உரை உருவாக்கல் மாடல்கள், [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) அல்லது [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) என்ற தொழில்நுட்பத்தைப் பயன்படுத்தி வகைப்படுத்தல் போன்ற பிற NLP பணிகளைத் தீர்க்க முடியும். - -* **உரை சுருக்கம்** (Text summarization) என்பது ஒரு கணினி நீண்ட உரையை "படித்து" சில வாக்கியங்களில் சுருக்க வேண்டும். - -* **இயந்திர மொழிபெயர்ப்பு** (Machine translation) என்பது ஒரு மொழியில் உரையைப் புரிந்து கொள்ளுதல் மற்றும் மற்றொரு மொழியில் உரை உருவாக்குதல் ஆகியவற்றின் கலவையாகக் கருதலாம். - -தொடக்கத்தில், பல NLP பணிகள் பாரம்பரிய முறைகளைப் பயன்படுத்தி தீர்க்கப்பட்டன, உதாரணமாக, இலக்கணங்கள். இயந்திர மொழிபெயர்ப்பில், ஆரம்ப வாக்கியத்தை ஒரு இலக்கண மரமாக மாற்ற பார்சர்கள் பயன்படுத்தப்பட்டன, பின்னர் வாக்கியத்தின் அர்த்தத்தை பிரதிபலிக்கும் உயர் நிலை அர்த்த அமைப்புகள் எடுக்கப்பட்டன, மற்றும் இந்த அர்த்தத்தின் அடிப்படையில் மற்றும் இலக்கு மொழியின் இலக்கணத்தின் அடிப்படையில் முடிவு உருவாக்கப்பட்டது. இன்று, பல NLP பணிகள் நரம்பியல் வலையமைப்புகளைப் பயன்படுத்தி மேலும் பயனுள்ளதாக தீர்க்கப்படுகின்றன. - -> பல பாரம்பரிய NLP முறைகள் [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python நூலகத்தில் செயல்படுத்தப்பட்டுள்ளன. [NLTK புத்தகம்](https://www.nltk.org/book/) ஆன்லைனில் கிடைக்கிறது, இது NLTK-ஐப் பயன்படுத்தி வெவ்வேறு NLP பணிகளை எப்படி தீர்க்கலாம் என்பதைப் பற்றிக் கூறுகிறது. - -இந்த பாடத்தில், நாங்கள் பெரும்பாலும் NLP க்கு நரம்பியல் வலையமைப்புகளைப் பயன்படுத்துவதில் கவனம் செலுத்துவோம், மேலும் தேவையான இடங்களில் NLTK-ஐப் பயன்படுத்துவோம். - -நாங்கள் ஏற்கனவே டேபிள் தரவுகள் மற்றும் படங்களுக்கான நரம்பியல் வலையமைப்புகளைப் பயன்படுத்துவது பற்றி கற்றுக்கொண்டுள்ளோம். இந்த தரவுகளின் வகைகள் மற்றும் உரையின் இடையே முக்கியமான வேறுபாடு என்னவென்றால், உரை என்பது மாறும் நீளத்துடன் கூடிய வரிசையாகும், ஆனால் படங்களின் வழக்கில் உள்ளீட்டு அளவு முன்கூட்டியே தெரிந்திருக்கும். குவியல்களால் (convolutional networks) உள்ளீட்டு தரவிலிருந்து முறைமைகளை எடுக்க முடியும், ஆனால் உரையில் உள்ள முறைமைகள் மேலும் சிக்கலானவை. உதாரணமாக, *நான் ஆரஞ்சுகளை விரும்பவில்லை* மற்றும் *நான் அந்த பெரிய வண்ணமயமான சுவையான ஆரஞ்சுகளை விரும்பவில்லை* போன்ற வாக்கியங்களில் மறுப்பு (negation) பொருளிலிருந்து பல வார்த்தைகளால் பிரிக்கப்பட்டிருக்கலாம், ஆனால் இது ஒரு முறைமையாகவே பொருள் கொள்ள வேண்டும். எனவே, மொழியை கையாள நாங்கள் புதிய நரம்பியல் வலையமைப்பு வகைகளை அறிமுகப்படுத்த வேண்டும், உதாரணமாக *மீளும் வலையமைப்புகள்* (recurrent networks) மற்றும் *மாற்றிகள்* (transformers). - -## நூலகங்களை நிறுவுதல் - -இந்த பாடத்தை இயக்குவதற்கான உள்ளூர் Python நிறுவலை நீங்கள் பயன்படுத்தினால், கீழே உள்ள கட்டளைகளைப் பயன்படுத்தி NLP க்கு தேவையான அனைத்து நூலகங்களையும் நிறுவ வேண்டும்: +நீங்கள் இந்த பாடத்திட்டத்தைக் கணினியில் உள்ள பைதான் நிறுவலைப் பயன்படுத்தி இயக்கினால், கீழ்காணும் கட்டளைகளைப் பயன்படுத்தி NLP க்கான தேவையான அனைத்து நூலகங்களையும் நிறுவ வேண்டும்: **PyTorch க்கு** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.txt ``` **TensorFlow க்கு** ```bash pip install -r requirements-tf.txt ``` -> TensorFlow-ஐப் பயன்படுத்தி NLP-ஐ [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) இல் முயற்சிக்கலாம். +> TensorFlow உடன் NLP ஐ [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) இல் முயற்சிக்கலாம் ## GPU எச்சரிக்கை -இந்த பிரிவில், சில உதாரணங்களில், நாங்கள் மிகவும் பெரிய மாடல்களைப் பயிற்சி செய்யப் போகிறோம். -* **GPU-இயக்கப்பட்ட கணினியைப் பயன்படுத்தவும்**: பெரிய மாடல்களுடன் வேலை செய்யும்போது காத்திருக்கும் நேரத்தை குறைக்க GPU-இயக்கப்பட்ட கணினியில் உங்கள் நோட்புக்குகளை இயக்க பரிந்துரைக்கப்படுகிறது. -* **GPU நினைவக கட்டுப்பாடுகள்**: GPU-இல் இயக்குவது, குறிப்பாக பெரிய மாடல்களைப் பயிற்சி செய்யும்போது, GPU நினைவகம் குறைவாக இருக்கும் சூழல்களை உருவாக்கலாம். -* **GPU நினைவக பயன்பாடு**: பயிற்சியின் போது GPU நினைவக பயன்பாட்டின் அளவு, மினிபேட்ச் அளவு உள்ளிட்ட பல காரணிகளின் அடிப்படையில் மாறுபடும். -* **மினிபேட்ச் அளவை குறைக்கவும்**: GPU நினைவக பிரச்சினைகளை எதிர்கொள்வீர்கள் என்றால், உங்கள் குறியீட்டில் மினிபேட்ச் அளவை குறைப்பதை ஒரு தீர்வாகக் கருதவும். -* **TensorFlow GPU நினைவக வெளியீடு**: Python கர்னலில் பல மாடல்களைப் பயிற்சி செய்யும்போது, TensorFlow-இன் பழைய பதிப்புகள் GPU நினைவகத்தை சரியாக வெளியிடாமல் இருக்கலாம். GPU நினைவக பயன்பாட்டை திறமையாக நிர்வகிக்க, தேவையான போது GPU நினைவகத்தை ஒதுக்க TensorFlow-ஐ அமைக்கலாம். -* **குறியீட்டு சேர்க்கை**: GPU நினைவக ஒதுக்கீட்டை தேவையான போது மட்டுமே வளரச் செய்ய, உங்கள் நோட்புக்குகளில் கீழே உள்ள குறியீட்டைச் சேர்க்கவும்: +இந்தப் பிரிவில், சில உதாரணங்களில் நாங்கள் பெரிய மாதிரிகளை பயிற்சி செய்யப் போகிறோம். +* **GPU-ஐ இயக்கு கணினியைப் பயன்படுத்தவும்**: பெரிய மாதிரிகளுடன் வேலை செய்யும் போது காத்திருக்கும் நேரங்களை குறைக்க GPU இயக்கு கணினியில் உங்கள் நோட்புக்களை இயக்க பரிந்துரைக்கப்படுகிறது. +* **GPU நினைவகத் தடைகள்**: பெரிய மாதிரிகள் பயிற்சி செய்யும் போது GPU நினைவகம் மூடிவிடும் நிலைகள் ஏற்படலாம். +* **GPU நினைவக பயன்பாடு**: பயிற்சியின் போது பயன்படுத்தப்படும் GPU நினைவக அளவு பல காரணிகளால் பாதிக்கப்படும், அதில் மினிபேட்ச்(குழு அளவு) முக்கியம். +* **மினிபேட்ச் அளவை சிறியது செய்யவும்**: GPU நினைவக பிரச்சினைகள் இருந்தால், உங்கள் குறியீட்டில் மினிபேட்ச் அளவை குறைப்பதைக் கவனிக்கவும். +* **TensorFlow GPU நினைவகம் வெளியேற்றம்**: பழைய TensorFlow பதிப்புகள் ஒரே Python கர்னலில் பல மாதிரிகள் பயிற்சியிடும் போது GPU நினைவகத்தை சரியாக விடு விடாமலிருக்கும். GPU நினைவகத்தை சீராக நிர்வகிக்க, தேவைப்பட்டால் மட்டுமே GPU நினைவகம் ஒதுக்க TensorFlow ஐ அமைக்கலாம். +* **குறியீட்டு உள்ளடக்கம்**: TensorFlow க்கு தேவையான போது மட்டும் GPU நினைவகம் அதிகரிக்க கீழ்காணும் குறியீட்டை உங்கள் நோட்புக்களில் சேர்க்கவும்: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -61,19 +53,21 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -பாரம்பரிய ML பார்வையில் இருந்து NLP பற்றி கற்றுக்கொள்ள ஆர்வமாக இருந்தால், [இந்த பாடங்களின் தொகுப்பை](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) பார்வையிடவும். +நீங்கள் பாரம்பரிய எம்பிஎல் (ML) பார்வையில் NLP பற்றி அறிய விரும்பினால், [இந்த பாடங்களின் தொகுப்பை](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) பார்வையிடவும் -## இந்த பிரிவில் -இந்த பிரிவில் நாம் கற்றுக்கொள்ளப் போகிறோம்: +## இந்தப் பிரிவில் +இந்தப் பிரிவில் நாங்கள் கற்கப்போகும் விஷயங்கள்: -* [உரையை டென்சர்களாக பிரதிபலித்தல்](13-TextRep/README.md) -* [வார்த்தை எம்பெடிங்ஸ்](14-Emdeddings/README.md) -* [மொழி மாதிரிகள்](15-LanguageModeling/README.md) -* [மீளும் நரம்பியல் வலையமைப்புகள்](16-RNN/README.md) -* [உருவாக்கும் வலையமைப்புகள்](17-GenerativeNetworks/README.md) -* [மாற்றிகள்](18-Transformers/README.md) +* [உரை துணைப்பொருள்களாக (tensors) பிரதிநிதிக்கும்](13-TextRep/README.md) +* [வார்த்தை கையிருப்புக்கள்](14-Emdeddings/README.md) +* [மொழிமுறை மாதிரிப்பாக்கம்](15-LanguageModeling/README.md) +* [திரும்பி செயல்படும் நியூரல் நெட்வொர்க்குகள்](16-RNN/README.md) +* [உருவாக்கும் நெட்வொர்க்குகள்](17-GenerativeNetworks/README.md) +* [டிரான்ஸ்ஃபார்மர்கள்](18-Transformers/README.md) --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையை பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. எங்கள் நோக்கம் துல்லியமாக இருக்க வேண்டும் என்பதுதான், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது துல்லியமின்மைகள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ No newline at end of file + +**மறுப்பு**: +இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை. + \ No newline at end of file diff --git a/translations/uk/.co-op-translator.json b/translations/uk/.co-op-translator.json index b6a46558..188eb37a 100644 --- a/translations/uk/.co-op-translator.json +++ b/translations/uk/.co-op-translator.json @@ -5,6 +5,12 @@ "source_file": "AGENTS.md", "language_code": "uk" }, + "CONTRIBUTING.md": { + "original_hash": "c6fd7e781b67111a90abd166d0ce4aa0", + "translation_date": "2026-07-08T15:00:51+00:00", + "source_file": "CONTRIBUTING.md", + "language_code": "uk" + }, "README.md": { "original_hash": "12c8eb6bf0867d2f1c32daf613ac5b8b", "translation_date": "2026-04-06T20:32:03+00:00", @@ -17,6 +23,19 @@ "source_file": "SECURITY.md", "language_code": "uk" }, + "__translation_failures__": { + "lessons/sketchnotes/LICENSE.md": { + "original_hash": "45ab63a2cd8f5faef6c9b150618837a4", + "source_file": "lessons/sketchnotes/LICENSE.md", + "language_code": "uk", + "failure_date": "2026-07-08T14:47:15+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-26T00:45:10+00:00", @@ -54,8 +73,8 @@ "language_code": "uk" }, "examples/README.md": { - "original_hash": "0d1babfdcbeb46525f2db3fbaaa54cd7", - "translation_date": "2025-10-03T11:35:28+00:00", + "original_hash": "7883d52c2e2a221e0b07a7b112a149b9", + "translation_date": "2026-07-08T14:42:16+00:00", "source_file": "examples/README.md", "language_code": "uk" }, @@ -66,8 +85,8 @@ "language_code": "uk" }, "lessons/0-course-setup/how-to-run.md": { - "original_hash": "a4717bd9103b9f6cd84d534b83534689", - "translation_date": "2026-01-16T06:44:10+00:00", + "original_hash": "7ad8c7d8604c53649b3d4d1e2f3a6fa1", + "translation_date": "2026-07-08T14:42:34+00:00", "source_file": "lessons/0-course-setup/how-to-run.md", "language_code": "uk" }, @@ -191,6 +210,12 @@ "source_file": "lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md", "language_code": "uk" }, + "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb": { + "original_hash": "99b816b6a4957ef4100cee4c4221dff9", + "translation_date": "2026-07-08T14:33:05+00:00", + "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", + "language_code": "uk" + }, "lessons/4-ComputerVision/08-TransferLearning/lab/README.md": { "original_hash": "7765935c35fcee69b9fe2d0cfd6963e2", "translation_date": "2025-08-25T23:17:23+00:00", @@ -330,8 +355,8 @@ "language_code": "uk" }, "lessons/5-NLP/README.md": { - "original_hash": "8ef02a9318257ea140ed3ed74442096d", - "translation_date": "2025-08-25T21:30:36+00:00", + "original_hash": "038df6f1a73e49f6430740da083bfd6d", + "translation_date": "2026-07-08T14:43:00+00:00", "source_file": "lessons/5-NLP/README.md", "language_code": "uk" }, diff --git a/translations/uk/CONTRIBUTING.md b/translations/uk/CONTRIBUTING.md new file mode 100644 index 00000000..c86e2f83 --- /dev/null +++ b/translations/uk/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Внесок в AI-For-Beginners + +Дякуємо за вашу зацікавленість у внеску до AI-For-Beginners! Ми вітаємо переклади, виправлення уроків та корекції форматування. + +## Угода ліцензії для учасника Microsoft (CLA) + +Цей проєкт вітає внески та пропозиції. Більшість внесків вимагають від вас погодження з угодою ліцензії для учасника (CLA), яка підтверджує, що ви маєте право і насправді надаєте нам права використовувати ваш внесок. Для деталей відвідайте [https://cla.microsoft.com](https://cla.microsoft.com). + +Коли ви надсилаєте pull request, CLA-бот автоматично визначить, чи потрібно вам надати CLA, і відповідно позначить PR (наприклад, міткою, коментарем). Просто дотримуйтесь інструкцій, які надасть бот. Це потрібно зробити лише один раз для всіх репозиторіїв, які використовують наш CLA. + +## Як зробити внесок + +### 1. Виправлення опечаток / помилок у коді +Якщо ви знайшли опечатку або помилку в будь-якій Jupyter notebook або файлі уроку у markdown: +1. Зробіть форк репозиторію. +2. Виправте опечатку або пошкоджене посилання. +3. Надішліть Pull Request з чітким описом виправлення. + +### 2. Надсилання перекладів +Ми вітаємо переклади уроків іншими мовами! Будь ласка, розміщуйте переклади у директорії `translations/`, використовуючи існуючі імена папок (наприклад `translations/es/`, `translations/pt-BR/`, `translations/zh-CN/`). + +Для докладнішої інформації дивіться [etc/CONTRIBUTING.md](etc/CONTRIBUTING.md). + +--- + + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу штучного інтелекту для перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. + \ No newline at end of file diff --git a/translations/uk/examples/README.md b/translations/uk/examples/README.md index d6d1d57b..0e5a42c3 100644 --- a/translations/uk/examples/README.md +++ b/translations/uk/examples/README.md @@ -1,85 +1,87 @@ -# Приклади штучного інтелекту для початківців +# Приклади Штучного Інтелекту для Початківців -Ласкаво просимо! Цей каталог містить прості, автономні приклади, які допоможуть вам розпочати роботу зі штучним інтелектом та машинним навчанням. Кожен приклад розроблений для початківців із детальними коментарями та покроковими поясненнями. +Ласкаво просимо! Цей каталог містить прості автономні приклади, які допоможуть вам почати працювати зі ШІ та машинним навчанням. Кожен приклад розроблений для початківців із детальними коментарями та покроковими поясненнями. -## 📚 Огляд прикладів +## 📚 Огляд Прикладів -| Приклад | Опис | Складність | Попередні знання | +| Приклад | Опис | Рівень складності | Передумови | |---------|-------------|------------|---------------| -| [Hello AI World](../../../examples/01-hello-ai-world.py) | Ваша перша програма зі штучним інтелектом - просте розпізнавання шаблонів | ⭐ Початківець | Основи Python | -| [Проста нейронна мережа](../../../examples/02-simple-neural-network.py) | Створення нейронної мережі з нуля | ⭐⭐ Початківець+ | Python, базова математика | -| [Класифікатор зображень](./03-image-classifier.ipynb) | Класифікація зображень за допомогою попередньо навченої моделі | ⭐⭐ Початківець+ | Python, numpy | -| [Аналіз текстових настроїв](../../../examples/04-text-sentiment.py) | Аналіз настрою тексту (позитивний/негативний) | ⭐⭐ Початківець+ | Python | +| [Hello AI World](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/01-hello-ai-world.py) | Ваша перша програма ШІ - проста розпізнавальна модель | ⭐ Початковий | Основи Python | +| [Simple Neural Network](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/02-simple-neural-network.py) | Побудова нейронної мережі з нуля | ⭐⭐ Початковий+ | Python, базова математика | +| [Image Classifier](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/03-image-classifier.ipynb) | Класифікація зображень за допомогою попередньо натренованої моделі | ⭐⭐ Початковий+ | Python, numpy | +| [Text Sentiment](https://github.com/microsoft/AI-For-Beginners/blob/main/examples/04-text-sentiment.py) | Аналіз тональності тексту (позитивний/негативний) | ⭐⭐ Початковий+ | Python | ## 🚀 Початок роботи -### Попередні вимоги +### Передумови Переконайтеся, що у вас встановлений Python (рекомендується версія 3.8 або новіша). Встановіть необхідні пакети: ```bash -# For Python scripts +# Для скриптів на Python pip install numpy -# For Jupyter notebooks (image classifier) +# Для Jupyter ноутбуків (класифікатор зображень) pip install jupyter numpy pillow tensorflow ``` -Або скористайтеся середовищем conda з основного курсу: +Або використайте conda середовище з основної навчальної програми: ```bash conda env create --name ai4beg --file ../environment.yml conda activate ai4beg ``` -### Запуск прикладів +### Запуск Прикладів -**Для скриптів Python (.py файли):** +**Для Python скриптів (.py файлів):** ```bash python 01-hello-ai-world.py ``` -**Для Jupyter ноутбуків (.ipynb файли):** +**Для Jupyter ноутбуків (.ipynb файлів):** ```bash jupyter notebook 03-image-classifier.ipynb ``` -## 📖 Навчальний шлях +## 📖 Маршрут Навчання -Рекомендуємо проходити приклади у такому порядку: +Радимо виконувати приклади у такому порядку: -1. **Почніть з "Hello AI World"** - Вивчіть основи розпізнавання шаблонів -2. **Створіть просту нейронну мережу** - Зрозумійте, як працюють нейронні мережі -3. **Спробуйте класифікатор зображень** - Побачте штучний інтелект у дії з реальними зображеннями -4. **Аналізуйте текстові настрої** - Досліджуйте обробку природної мови +1. **Почніть з "Hello AI World"** - Вивчіть основи розпізнавання патернів +2. **Побудуйте просту нейронну мережу** - Зрозумійте, як працюють нейронні мережі +3. **Спробуйте класифікатор зображень** - Побачте ШІ в дії з реальними зображеннями +4. **Аналіз тональності тексту** - Дослідіть обробку природної мови -## 💡 Поради для початківців +## 💡 Поради для Початківців -- **Уважно читайте коментарі до коду** - Вони пояснюють, що робить кожен рядок -- **Експериментуйте!** - Спробуйте змінювати значення і дивіться, що відбувається -- **Не хвилюйтеся, якщо щось не зрозуміло** - Навчання потребує часу -- **Ставте запитання** - Скористайтеся [дошкою обговорень](https://github.com/microsoft/AI-For-Beginners/discussions) +- **Уважно читайте коментарі у коді** - Вони пояснюють, що робить кожен рядок +- **Експериментуйте!** - Спробуйте змінювати значення і спостерігайте що станеться +- **Не хвилюйтеся, якщо не все зрозуміло одразу** - Навчання потребує часу +- **Задавайте питання** - Використовуйте [Дискусійний форум](https://github.com/microsoft/AI-For-Beginners/discussions) -## 🔗 Наступні кроки +## 🔗 Наступні Кроки Після завершення цих прикладів досліджуйте повний курс: -- [Вступ до штучного інтелекту](../lessons/1-Intro/README.md) -- [Нейронні мережі](../lessons/3-NeuralNetworks/README.md) -- [Комп'ютерне бачення](../lessons/4-ComputerVision/README.md) -- [Обробка природної мови](../lessons/5-NLP/README.md) +- [Вступ до ШІ](../lessons/1-Intro/README.md) +- [Нейронні Мережі](../lessons/3-NeuralNetworks/README.md) +- [Комп'ютерний Зір](../lessons/4-ComputerVision/README.md) +- [Обробка Природної Мови](../lessons/5-NLP/README.md) -## 🤝 Внесок +## 🤝 Співпраця -Ці приклади були корисними? Допоможіть нам їх покращити: -- Повідомляйте про проблеми або пропонуйте покращення +Ці приклади були корисними? Допоможіть покращити їх: +- Повідомляйте про помилки або пропонуйте покращення - Додавайте більше прикладів для початківців -- Покращуйте документацію та коментарі +- Покращуйте документацію і коментарі --- -*Пам'ятайте: кожен експерт колись був початківцем. Щасливого навчання! 🎓* +*Пам’ятайте: Кожен експерт колись був початківцем. Успішного навчання! 🎓* --- -**Відмова від відповідальності**: -Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу штучного інтелекту для перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. + \ No newline at end of file diff --git a/translations/uk/lessons/0-course-setup/how-to-run.md b/translations/uk/lessons/0-course-setup/how-to-run.md index 99bc1f26..083d8cbd 100644 --- a/translations/uk/lessons/0-course-setup/how-to-run.md +++ b/translations/uk/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,12 @@ -# Як запустити код +# Як Запустити Код -Цей навчальний курс містить багато виконуваних прикладів і лабораторних робіт, які ви захочете запустити. Для цього вам потрібна можливість виконувати код Python у Jupyter Notebook, які є частиною цього курсу. Ви маєте кілька варіантів запуску коду: +Ця навчальна програма містить багато виконуваних прикладів і лабораторних робіт, які ви захочете запустити. Для цього вам потрібна можливість виконувати код Python у Jupyter Notebook, наданих як частина цієї програми. У вас є кілька варіантів запуску коду: -## Запуск локально на вашому комп'ютері +## Запуск локально на вашому комп’ютері -Щоб запустити код локально на вашому комп'ютері, потрібна установка Python. Однією з рекомендацій є встановлення **[miniconda](https://conda.io/en/latest/miniconda.html)** - це досить легка установка, яка підтримує пакетний менеджер `conda` для різних **віртуальних середовищ** Python. +Щоб запускати код локально на вашому комп’ютері, потрібна установка Python. Одним із варіантів є встановлення **[miniconda](https://conda.io/en/latest/miniconda.html)** — це досить легка установка, яка підтримує менеджер пакетів `conda` для різних Python **віртуальних середовищ**. -Після встановлення miniconda склонуйте репозиторій і створіть віртуальне середовище для використання в цьому курсі: +Після встановлення miniconda, клонувати репозиторій і створити віртуальне середовище, яке буде використовуватися для цього курсу: ```bash git clone http://github.com/microsoft/ai-for-beginners @@ -17,17 +17,17 @@ conda activate ai4beg ### Використання Visual Studio Code з розширенням Python -Цей курс найкраще використовувати, відкриваючи його у [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) з [розширенням Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Цю навчальну програму найкраще використовувати, відкриваючи її у [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) з [розширенням Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Примітка**: Після того, як ви склонуєте і відкриєте каталог у VS Code, він автоматично запропонує встановити розширення Python. Також вам доведеться встановити miniconda, як описано вище. +> **Примітка**: Після клонування і відкриття каталогу у VS Code він автоматично запропонує встановити розширення для Python. Також вам доведеться встановити miniconda, як описано вище. -> **Примітка**: Якщо VS Code запропонує вам пере-відкрити репозиторій у контейнері, варто відмовитися, щоб використовувати локальну інсталяцію Python. +> **Примітка**: Якщо VS Code запропонує вам заново відкрити репозиторій у контейнері, варто відмовитись від цього, щоб використовувати локальну установку Python. ### Використання Jupyter у браузері -Ви також можете використовувати оточення Jupyter у браузері на власному комп’ютері. І класичний Jupyter, і JupyterHub забезпечують зручне середовище розробки з автозаповненням, підсвічуванням коду тощо. +Ви також можете використовувати середовище Jupyter у браузері на вашому комп'ютері. І класичний Jupyter, і JupyterHub забезпечують зручне середовище розробки з автодоповненням, підсвічуванням коду тощо. -Щоб запустити Jupyter локально, перейдіть у каталог курсу і виконайте: +Щоб запустити Jupyter локально, перейдіть у каталог курсу та виконайте: ```bash jupyter notebook @@ -36,36 +36,36 @@ jupyter notebook ```bash jupyterhub ``` -Після цього ви можете перейти до будь-якого з файлів `.ipynb`, відкрити їх і почати роботу. +Ви можете потім перейти до будь-якого з файлів `.ipynb`, відкрити їх і почати працювати. ### Запуск у контейнері -Однією з альтернатив встановленню Python є запуск коду у контейнері. Оскільки наш репозиторій містить спеціальну папку `.devcontainer`, що інструктує, як збудувати контейнер для цього репозиторію, VS Code пропонує можливість заново відкрити код у контейнері. Це вимагає встановлення Docker і є більш складним, тому ми рекомендуємо це більш досвідченим користувачам. +Однією з альтернатив установці Python є запуск коду у контейнері. Оскільки наш репозиторій містить спеціальну папку `.devcontainer`, яка вказує, як зібрати контейнер для цього репо, VS Code пропонує можливість повторно відкрити код у контейнері. Для цього потрібно встановити Docker, і це буде складніше, тому ми рекомендуємо це більш досвідченим користувачам. ## Запуск у хмарі -Якщо ви не хочете встановлювати Python локально і маєте доступ до хмарних ресурсів — гарною альтернативою буде запуск коду у хмарі. Існує кілька способів зробити це: +Якщо ви не хочете встановлювати Python локально і маєте доступ до хмарних ресурсів, гарною альтернативою буде запуск коду у хмарі. Є кілька способів це зробити: -* Використання **[GitHub Codespaces](https://github.com/features/codespaces)**, який є віртуальним середовищем, створеним для вас на GitHub і доступним через інтерфейс VS Code у браузері. Якщо у вас є доступ до Codespaces, ви можете просто натиснути кнопку **Code** у репозиторії, стартувати codespace і почати роботу без зволікань. -* Використання **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) пропонує безкоштовні обчислювальні ресурси у хмарі, щоб ви могли випробувати код на GitHub. На головній сторінці є кнопка для відкриття репозиторію в Binder — вона швидко перекине вас на сайт Binder, який побудує базовий контейнер і плавно запустить веб-інтерфейс Jupyter. +* Використання **[GitHub Codespaces](https://github.com/features/codespaces)** — це віртуальне середовище, створене для вас на GitHub, доступне через веб-інтерфейс VS Code. Якщо у вас є доступ до Codespaces, ви можете просто натиснути кнопку **Code** у репозиторії, запустити codespace і почати працювати миттєво. +* Використання **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) надає безкоштовні обчислювальні ресурси у хмарі для людей, які хочуть спробувати код на GitHub. На головній сторінці є кнопка для відкриття репозиторію у Binder — це швидко направить вас на сайт binder, який створить контейнер і безшовно запустить Jupyter у веб-інтерфейсі для вас. -> **Примітка**: Щоб запобігти зловживанням, до деяких веб-ресурсів доступ від Binder обмежений. Це може перешкодити роботі деяких частин коду, що завантажують моделі і/або набори даних з публічного Інтернету. Вам можливо доведеться шукати обхідні шляхи. Також обчислювальні ресурси в Binder досить базові, тому навчання буде повільним, особливо у пізніших, більш складних уроках. +> **Примітка**: Щоб запобігти зловживанню, Binder має заблокований доступ до деяких веб-ресурсів. Це може завадити роботі деякого коду, який завантажує моделі та/або набори даних з публічного Інтернету. Можливо, доведеться шукати обхідні шляхи. Також обчислювальні ресурси Binder досить базові, отже навчання буде повільним, особливо на пізніших, більш складних уроках. ## Запуск у хмарі з GPU -Деякі пізніші уроки цього курсу значно виграють від підтримки GPU. Наприклад, тренування моделей може бути вкрай повільним без GPU. Є кілька варіантів, особливо якщо у вас є доступ до хмари через [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) або через ваш навчальний заклад: +Деякі пізніші уроки цієї програми значно виграють від підтримки GPU. Навчання моделей, наприклад, інакше може бути дуже повільним. Існує кілька варіантів, якщо ви маєте доступ до хмари через [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) або через вашу установу: -* Створити [Віртуальну машину для Data Science](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) і підключитись до неї через Jupyter. Ви можете клонувати репозиторій безпосередньо на машину і почати навчання. VM серії NC підтримують GPU. +* Створіть [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) і підключіться до неї через Jupyter. Ви можете клонувати репозиторій безпосередньо на машину та почати навчання. Віртуальні машини серії NC підтримують GPU. -> **Примітка**: Деякі підписки, включно з Azure for Students, за замовчуванням не надають підтримку GPU. Можливо, треба буде подати технічне звернення для отримання додаткових GPU-ядер. +> **Примітка**: Деякі підписки, включно з Azure for Students, не надають підтримку GPU за замовчуванням. Можливо, доведеться запросити додаткові ядра GPU через технічну підтримку. -* Створити [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) і використовувати функцію Notebook там. [Цей відеоогляд](https://azure-for-academics.github.io/quickstart/azureml-papers/) показує, як клонувати репозиторій у Azure ML notebook і почати працювати. +* Створіть [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) і потім використовуйте функцію Notebook там. [Цей відеоролик](https://azure-for-academics.github.io/quickstart/azureml-papers/) показує, як клонувати репозиторій у Azure ML notebook і почати його використовувати. -Ви також можете скористатися Google Colab, який має часткову безкоштовну підтримку GPU, і завантажити туди Jupyter Notebooks для поетапного виконання. +Ви також можете використовувати Google Colab, який має безкоштовну підтримку GPU, і завантажувати туди Jupyter Notebook для поступового виконання. --- -**Застереження**: -Цей документ був перекладений з використанням сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатись до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу штучного інтелекту для перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb b/translations/uk/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb index d3a2a5b0..df64da7e 100644 --- a/translations/uk/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb +++ b/translations/uk/lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb @@ -4,11 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Попередньо натреновані моделі та перенесення навчання\n", + "# Попередньо навчені моделі та передачі навчання\n", "\n", - "Навчання CNN може займати багато часу, і для цього завдання потрібна велика кількість даних. Однак значна частина часу витрачається на те, щоб навчити найкращі низькорівневі фільтри, які мережа використовує для вилучення шаблонів із зображень. Виникає природне питання - чи можемо ми використати нейронну мережу, натреновану на одному наборі даних, і адаптувати її для класифікації інших зображень без повного процесу навчання?\n", + "Навчання CNN може займати багато часу, і для цього завдання потрібно багато даних. Однак більшість часу витрачається на вивчення найкращих низькорівневих фільтрів, які мережа використовує для вилучення патернів зображень. Постає природнє запитання – чи можемо ми використати нейронну мережу, навчену на одному наборі даних, і адаптувати її для класифікації інших зображень без повного процесу навчання?\n", "\n", - "Цей підхід називається **перенесенням навчання**, оскільки ми переносимо певні знання з однієї моделі нейронної мережі до іншої. У перенесенні навчання ми зазвичай починаємо з попередньо натренованої моделі, яка була навчена на великому наборі зображень, наприклад, **ImageNet**. Ці моделі вже добре справляються з вилученням різних ознак із загальних зображень, і в багатьох випадках побудова класифікатора поверх цих вилучених ознак може дати хороший результат.\n" + "Цей підхід називається **передачею навчання**, тому що ми передаємо певні знання з однієї моделі нейронної мережі в іншу. У передачі навчання ми зазвичай починаємо з попередньо навченої моделі, яка була навчена на великому наборі зображень, наприклад на **ImageNet**. Ці моделі вже добре справляються з вилученням різних ознак із загальних зображень, і в багатьох випадках просто побудова класифікатора поверх цих вилучених ознак може дати хороший результат.\n" ] }, { @@ -29,11 +29,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Набір даних \"Коти проти собак\"\n", + "## Набір даних \"Кішки проти собак\"\n", "\n", - "У цьому розділі ми вирішимо реальну задачу класифікації зображень котів і собак. Для цього ми використаємо [Набір даних \"Коти проти собак\" з Kaggle](https://www.kaggle.com/c/dogs-vs-cats), який також можна завантажити [з сайту Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", + "У цьому розділі ми розв’яжемо реальну задачу класифікації зображень кішок та собак. З цією метою ми використаємо [набір даних Kaggle Cats vs. Dogs](https://www.kaggle.com/c/dogs-vs-cats), який також можна завантажити [з Microsoft](https://www.microsoft.com/en-us/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste).\n", "\n", - "Давайте завантажимо цей набір даних і розпакуємо його в директорію `data` (цей процес може зайняти деякий час!):\n" + "Давайте завантажимо цей набір даних і розпакуємо його у директорію `data` (цей процес може зайняти деякий час!):\n" ] }, { @@ -64,7 +64,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "На жаль, у наборі даних є деякі пошкоджені файли зображень. Нам потрібно швидко очистити дані, щоб перевірити пошкоджені файли. Щоб не перевантажувати цей підручник, ми перенесли код для перевірки набору даних у модуль.\n" + "На жаль, у наборі даних є деякі пошкоджені файли зображень. Нам потрібно швидко очистити дані, щоб перевірити на наявність пошкоджених файлів. Щоб не псувати цей підручник, ми перемістили код для перевірки набору даних у модуль.\n" ] }, { @@ -335,11 +335,11 @@ "source": [ "## Завантаження набору даних\n", "\n", - "У попередніх прикладах ми завантажували набори даних, які вбудовані в Keras. Тепер ми працюватимемо з власним набором даних, який потрібно завантажити з каталогу зображень.\n", + "У попередніх прикладах ми завантажували набори даних, які вбудовані в Keras. Тепер ми будемо працювати з нашим власним набором даних, який потрібно завантажити з каталогу зображень.\n", "\n", - "У реальному житті розмір наборів даних із зображеннями може бути досить великим, і не можна розраховувати, що всі дані помістяться в пам'ять. Тому набори даних часто представляються у вигляді **генераторів**, які можуть повертати дані невеликими партіями, придатними для навчання.\n", + "У реальному житті розмір наборів зображень може бути досить великим, і не можна розраховувати на те, що всі дані помістяться в пам’ять. Тому набори даних часто представлені як **генератори**, які можуть повертати дані невеликими пакетами, що підходять для навчання.\n", "\n", - "Для роботи з класифікацією зображень Keras включає спеціальну функцію `image_dataset_from_directory`, яка може завантажувати зображення з підкаталогів, що відповідають різним класам. Ця функція також автоматично масштабує зображення і може розділяти набір даних на навчальну та тестову підмножини:\n" + "Для роботи з класифікацією зображень Keras містить спеціальну функцію `image_dataset_from_directory`, яка може завантажувати зображення з підкаталогів, що відповідають різним класам. Ця функція також автоматично масштабує зображення і може розділяти набір даних на навчальну та тестову підмножини:\n" ] }, { @@ -385,7 +385,7 @@ "source": [ "Важливо встановити однакове значення `seed` для обох викликів, оскільки це впливає на розподіл зображень між навчальним і тестовим наборами даних.\n", "\n", - "Набір даних автоматично визначає назви класів із директорій, і ви можете отримати до них доступ, якщо потрібно, викликавши:\n" + "Dataset автоматично отримує імена класів з директорій, і ви можете отримати до них доступ, якщо потрібно, викликавши:\n" ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Набори даних, які ми отримали, можуть бути безпосередньо передані до функції `fit` для навчання моделі. Вони містять як відповідні зображення, так і мітки, які можна перебирати за допомогою наступної конструкції:\n" + "Набори даних, які ми отримали, можна безпосередньо передати у функцію `fit` для навчання моделі. Вони містять як відповідні зображення, так і мітки, по яких можна пройтися в циклі за допомогою наступної конструкції:\n" ] }, { @@ -453,16 +453,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "> **Примітка**: Усі зображення в наборі даних представлені як тензори з плаваючою точкою в діапазоні 0-255. Перед передачею їх до нейронної мережі, нам потрібно масштабувати ці значення до діапазону 0-1. При відображенні зображень ми також повинні зробити те саме або конвертувати значення в тип `int` (що ми робимо в коді вище), щоб показати `matplotlib`, що ми хочемо відобразити оригінальне немасштабоване зображення.\n" + "> **Примітка**: Усі зображення в наборі даних представлені у вигляді тензорів з плаваючою комою в діапазоні 0–255. Перед передачею їх у нейронну мережу необхідно масштабувати ці значення в діапазон 0–1. При відображенні зображень ми повинні зробити те ж саме або конвертувати значення у тип `int` (що ми й робимо у наведеному вище коді), щоб показати `matplotlib`, що ми хочемо відобразити оригінальне немасштабоване зображення.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Попередньо навчені моделі\n", + "## Попередньо натреновані моделі\n", "\n", - "Для багатьох завдань класифікації зображень можна знайти попередньо навчені моделі нейронних мереж. Багато з цих моделей доступні в просторі імен `keras.applications`, а ще більше моделей можна знайти в Інтернеті. Давайте подивимося, як можна завантажити та використати найпростішу модель VGG-16:\n" + "Для багатьох завдань класифікації зображень можна знайти попередньо навчені моделі нейронних мереж. Багато з цих моделей доступні в просторі імен `keras.applications`, і ще більше моделей можна знайти в Інтернеті. Давайте подивимось, як можна завантажити та використати найпростішу модель 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", @@ -511,10 +521,9 @@ "metadata": {}, "source": [ "Є кілька важливих моментів:\n", - "\n", - "* Перед тим, як передати вхідні дані до будь-якої попередньо навченої мережі, їх необхідно попередньо обробити певним чином. Це здійснюється шляхом виклику відповідної функції `preprocess_input`, яка отримує пакет зображень і повертає їх оброблену форму. У випадку VGG-16 зображення нормалізуються, і від кожного каналу віднімається певне заздалегідь визначене середнє значення. Це пов’язано з тим, що VGG-16 спочатку була навчена з таким попереднім обробленням.\n", - "* Нейронна мережа застосовується до вхідного пакета, і як результат ми отримуємо пакет тензорів із 1000 елементів, які показують ймовірність кожного класу. Найбільш ймовірний номер класу можна знайти, викликавши `argmax` для цього тензора.\n", - "* Отриманий результат — це [номер класу `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Щоб зрозуміти цей результат, можна також скористатися функцією `decode_predictions`, яка повертає топ n класів разом із їхніми назвами.\n" + "* Перед тим, як передавати вхідні дані у будь-яку попередньо натреновану мережу, їх потрібно певним чином попередньо обробити. Це робиться викликом відповідної функції `preprocess_input`, яка приймає пакет зображень і повертає їх оброблену форму. У випадку VGG-16, зображення нормалізуються, і від кожного каналу віднімається певне заздалегідь визначене середнє значення. Це тому, що VGG-16 спочатку була натренована з таким попереднім обробленням.\n", + "* Нейронна мережа застосовується до вхідного пакету, і в результаті ми отримуємо пакет тензорів розміром 1000 елементів, які показують ймовірність кожного класу. Ми можемо знайти найбільш ймовірний номер класу, викликавши `argmax` на цьому тензорі.\n", + "* Отриманий результат — це [номер класу `ImageNet`](https://gist.github.com/yrevar/942d3a0ac09ec9e5eb3a). Щоб зрозуміти цей результат, ми також можемо використати функцію `decode_predictions`, яка повертає топ n класів разом з їхніми назвами.\n" ] }, { @@ -600,7 +609,7 @@ "source": [ "## Обчислення на GPU\n", "\n", - "Глибокі нейронні мережі, такі як VGG-16 та інші сучасні архітектури, потребують значної обчислювальної потужності для виконання. Логічно використовувати прискорення на GPU, якщо воно доступне. На щастя, Keras автоматично прискорює обчислення на GPU, якщо він доступний. Ми можемо перевірити, чи Tensorflow здатний використовувати GPU, за допомогою наступного коду:\n" + "Глибокі нейронні мережі, такі як VGG-16 та інші більш сучасні архітектури, потребують досить багато обчислювальних ресурсів для роботи. Має сенс використовувати прискорення на GPU, якщо воно доступне. На щастя, Keras автоматично прискорює обчислення на GPU, якщо він доступний. Ми можемо перевірити, чи Tensorflow може використовувати GPU за допомогою наступного коду:\n" ] }, { @@ -627,9 +636,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "\n", "## Витягування ознак VGG\n", "\n", - "Якщо ми хочемо використовувати VGG-16 для витягування ознак з наших зображень, нам потрібна модель без фінальних шарів класифікації. Ми можемо створити модель VGG-16 без верхніх шарів за допомогою цього коду:\n" + "Якщо ми хочемо використовувати VGG-16 для витягування ознак із наших зображень, нам потрібна модель без фінальних шарів класифікації. Ми можемо створити екземпляр моделі VGG-16 без верхніх шарів, використовуючи цей код:\n" ] }, { @@ -681,9 +691,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Розмір тензора ознак становить 7x7x512, але для його візуалізації нам довелося перетворити його у двовимірну форму.\n", + "Розмір тензора ознак становить 7x7x512, але для візуалізації ми мусили перетворити його у 2D форму.\n", "\n", - "Тепер спробуємо перевірити, чи можна використовувати ці ознаки для класифікації зображень. Давайте вручну візьмемо частину зображень (у нашому випадку 50 мініпакетів) і попередньо обчислимо їхні векторні ознаки. Для цього ми можемо скористатися API **dataset** у Tensorflow. Функція `map` бере набір даних і застосовує задану лямбда-функцію для його трансформації. Ми використовуємо цей механізм для створення нових наборів даних, `ds_features_train` і `ds_features_test`, які містять ознаки, отримані за допомогою VGG, замість оригінальних зображень.\n" + "Тепер спробуємо визначити, чи можна використовувати ці ознаки для класифікації зображень. Візьмемо вручну деяку частину зображень (50 мініпакетів, у нашому випадку) і попередньо обчислимо їхні вектори ознак. Для цього можемо використати API **dataset** Tensorflow. Функція `map` приймає датасет і застосовує задану лямбда-функцію для його трансформації. Ми використовуємо цей механізм, щоб створити нові датасети, `ds_features_train` і `ds_features_test`, які містять ознаки, витягнуті за допомогою VGG, замість оригінальних зображень.\n" ] }, { @@ -713,9 +723,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ми використали конструкцію `.take(50)` для обмеження розміру набору даних, щоб прискорити нашу демонстрацію. Звісно, ви можете виконати цей експеримент на повному наборі даних.\n", + "Ми використали конструкцію `.take(50)`, щоб обмежити розмір набору даних, щоб прискорити нашу демонстрацію. Звісно, ви можете виконати цей експеримент на повному наборі даних.\n", "\n", - "Тепер, коли у нас є набір даних із витягнутими ознаками, ми можемо навчити простий щільний класифікатор для розрізнення між котами та собаками. Ця мережа прийматиме вектор ознак форми (7,7,512) і генеруватиме один вихід, який відповідає або собаці, або коту. Оскільки це бінарна класифікація, ми використовуємо функцію активації `sigmoid` і втрату `binary_crossentropy`.\n" + "Тепер, коли у нас є набір даних з витягнутими ознаками, ми можемо навчити простий щільний класифікатор для розрізнення котів і собак. Ця мережа прийматиме вхідний вектор ознак форми (7,7,512) і вироблятиме один вихід, що відповідатиме або собаці, або коту. Оскільки це бінарна класифікація, ми використовуємо функцію активації `sigmoid` та втрати `binary_crossentropy`.\n" ] }, { @@ -744,13 +754,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Результат чудовий, ми можемо розрізняти кота і собаку з майже 95% ймовірністю! Однак, ми протестували цей підхід лише на підмножині всіх зображень, оскільки ручне вилучення ознак займає багато часу.\n", + "Результат чудовий, ми можемо відрізнити кота від собаки з ймовірністю майже 95%! Однак ми протестували цей підхід лише на підмножині всіх зображень, тому що ручне вилучення ознак, здається, займає багато часу.\n", "\n", - "## Трансферне навчання за допомогою однієї мережі VGG\n", + "## Трансферне навчання з використанням однієї мережі VGG\n", "\n", - "Ми також можемо уникнути ручного попереднього обчислення ознак, використовуючи оригінальну мережу VGG-16 повністю під час навчання, додаючи витягувач ознак до нашої мережі як перший шар.\n", + "Ми також можемо уникнути ручного попереднього обчислення ознак, використовуючи оригінальну мережу VGG-16 як єдине ціле під час навчання, додавши витягувач ознак до нашої мережі як перший шар.\n", "\n", - "Перевага архітектури Keras полягає в тому, що модель VGG-16, яку ми визначили вище, також може бути використана як шар в іншій нейронній мережі! Нам просто потрібно побудувати мережу з щільним класифікатором поверх неї, а потім навчити всю мережу за допомогою зворотного поширення.\n" + "Красота архітектури Keras полягає в тому, що модель VGG-16, яку ми визначили вище, також може використовуватися як шар в іншій нейронній мережі! Нам просто потрібно побудувати мережу з щільним класифікатором зверху, а потім навчити всю мережу за допомогою зворотного поширення.\n" ] }, { @@ -794,13 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ця модель виглядає як мережа для класифікації \"від початку до кінця\", яка приймає зображення і повертає клас. Однак складність полягає в тому, що ми хочемо, щоб VGG16 працювала як екстрактор ознак, а не була перенавчена. Тому нам потрібно **заморозити ваги конволюційного екстрактора ознак**. Ми можемо отримати доступ до першого шару мережі, викликавши `model.layers[0]`, і нам просто потрібно встановити властивість `trainable` у значення `False`.\n", + "Ця модель виглядає як мережа для кінцевої класифікації, яка приймає зображення і повертає клас. Однак, складність полягає в тому, що ми хочемо, щоб VGG16 виступав як екстрактор ознак і не проходив повторного навчання. Отже, нам потрібно **заморозити ваги згорткового екстрактора ознак**. Ми можемо отримати доступ до першого шару мережі, викликавши `model.layers[0]`, і нам просто потрібно встановити властивість `trainable` в `False`.\n", "\n", - "> **Note**: Заморожування ваг екстрактора ознак необхідне, тому що в іншому випадку ненавчений класифікаційний шар може зруйнувати початкові попередньо навчені ваги конволюційного екстрактора.\n", + "> **Примітка**: Заморожування ваг екстрактора ознак необхідне, тому що інакше немаринований шар класифікатора може зруйнувати оригінальні попередньо навчені ваги згорткового екстрактора.\n", "\n", - "Ви можете помітити, що хоча загальна кількість параметрів у нашій мережі становить близько 15 мільйонів, ми навчаємо лише 25 тисяч параметрів. Усі інші параметри верхнього рівня конволюційних фільтрів є попередньо навченими. Це добре, тому що ми можемо налаштувати меншу кількість параметрів за допомогою меншої кількості прикладів.\n", + "Ви можете помітити, що хоча загальна кількість параметрів у нашій мережі становить близько 15 мільйонів, ми навчаємося лише 25 тисяч параметрів. Всі інші параметри верхньорівневих згорткових фільтрів є попередньо навченими. Це добре, тому що ми можемо тонко налаштовувати меншу кількість параметрів з меншою кількістю прикладів.\n", "\n", - "Тепер ми будемо навчати нашу мережу і подивимося, наскільки хороших результатів ми можемо досягти. Очікуйте досить тривалого часу виконання, і не хвилюйтеся, якщо здається, що виконання \"зависло\" на деякий час.\n" + "Тепер ми навчимо нашу мережу і подивимось, наскільки добре вийде. Очікуйте досить тривалий час роботи, і не хвилюйтеся, якщо виконання здається замороженим деякий час.\n" ] }, { @@ -825,11 +835,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Здається, ми отримали досить точний класифікатор для котів і собак!\n", + "Схоже, що ми отримали досить точний класифікатор котів проти собак! \n", "\n", - "## Збереження та завантаження моделі\n", + "## Збереження і завантаження моделі\n", "\n", - "Після того, як ми натренували модель, ми можемо зберегти архітектуру моделі та натреновані ваги у файл для подальшого використання:\n" + "Після тренування моделі ми можемо зберегти архітектуру моделі та навчені ваги у файл для майбутнього використання:\n" ] }, { @@ -853,7 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ми можемо завантажити модель з файлу в будь-який час. Це може бути корисним у випадку, якщо наступний експеримент знищить модель - вам не доведеться починати з нуля.\n" + "Потім ми можемо завантажити модель з файлу в будь-який момент. Це може бути корисно, якщо наступний експеримент зіпсує модель — вам не доведеться починати спочатку.\n" ] }, { @@ -869,15 +879,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Тонке налаштування перенесення навчання\n", + "## Тонке налаштування трансферного навчання\n", "\n", - "У попередньому розділі ми навчили фінальний шар класифікатора для класифікації зображень у нашому власному наборі даних. Однак ми не перенавчали екстрактор ознак, і наша модель покладалася на ознаки, які вона навчилася на даних ImageNet. Якщо ваші об'єкти візуально відрізняються від звичайних зображень ImageNet, така комбінація ознак може працювати не найкращим чином. Тому має сенс почати навчання і згорткових шарів.\n", + "У попередньому розділі ми навчили кінцевий шар класифікатора класифікувати зображення у нашому власному наборі даних. Однак ми не перенавчали екстрактор ознак, і наша модель покладалася на ознаки, які вона навчилася на даних ImageNet. Якщо ваші об’єкти візуально відрізняються від звичайних зображень ImageNet, це поєднання ознак може працювати не найкраще. Тож має сенс почати тренування й згорткових шарів.\n", "\n", - "Для цього ми можемо розморозити параметри згорткових фільтрів, які раніше були заморожені.\n", + "Для цього ми можемо розморозити параметри згорткових фільтрів, які попередньо були заморожені.\n", "\n", - "> **Примітка:** Важливо спочатку заморозити параметри та виконати кілька епох навчання, щоб стабілізувати ваги у шарі класифікації. Якщо одразу почати навчання мережі від початку до кінця з розмороженими параметрами, великі помилки можуть зруйнувати попередньо навчені ваги у згорткових шарах.\n", + "> **Примітка:** Важливо спочатку заморозити параметри та виконати декілька епох навчання, щоб стабілізувати ваги в шарі класифікації. Якщо відразу почати навчання мережі «від краю до краю» з розмороженими параметрами, великі помилки можуть зруйнувати попередньо навчені ваги в згорткових шарах.\n", "\n", - "Наша згорткова модель VGG-16 знаходиться всередині першого шару і сама складається з багатьох шарів. Ми можемо переглянути її структуру:\n" + "Наша згорткова модель VGG-16 розташована в межах першого шару і складається з багатьох шарів. Ми можемо поглянути на її структуру:\n" ] }, { @@ -945,7 +955,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Ми можемо розморозити всі шари згорткової бази:\n" + ] }, { "cell_type": "code", @@ -960,7 +972,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Однак розморожування всіх шарів одночасно — не найкраща ідея. Спочатку ми можемо розморозити лише кілька останніх шарів згорток, оскільки вони містять високорівневі шаблони, які є релевантними для наших зображень. Наприклад, для початку ми можемо заморозити всі шари, окрім останніх 4:\n" + "Однак розморозити їх усі одразу — не найкраща ідея. Спочатку ми можемо розморозити лише кілька останніх шарів згорток, оскільки вони містять вищого рівня патерни, релевантні для наших зображень. Наприклад, спочатку ми можемо заморозити всі шари, крім останніх 4: \n" ] }, { @@ -999,9 +1011,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Зверніть увагу, що кількість параметрів, які можна навчати, значно зросла, але все ще становить близько 50% від усіх параметрів.\n", + "Зверніть увагу, що кількість навчаємих параметрів значно зросла, але все ще становить близько 50% від усіх параметрів.\n", "\n", - "Після розморожування ми можемо провести ще кілька епох навчання (у нашому прикладі ми виконаємо лише одну). Ви також можете вибрати нижчу швидкість навчання, щоб мінімізувати вплив на попередньо навчені ваги. Однак, навіть із низькою швидкістю навчання, можна очікувати, що точність спочатку знизиться на початку навчання, а потім поступово досягне трохи вищого рівня, ніж у випадку з фіксованими вагами.\n", + "Після розморожування ми можемо провести ще кілька епох навчання (у нашому прикладі ми проведемо лише одну). Ви також можете обрати нижчу швидкість навчання, щоб мінімізувати вплив на попередньо навчені ваги. Однак навіть при низькій швидкості навчання можна очікувати, що точність спочатку впаде, поки зрештою не досягне трохи вищого рівня, ніж у випадку фіксованих ваг.\n", "\n", "> **Примітка:** Це навчання відбувається значно повільніше, оскільки нам потрібно поширювати градієнти назад через багато шарів мережі!\n" ] @@ -1027,18 +1039,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Ми, ймовірно, досягнемо вищої точності навчання, оскільки використовуємо більш потужну мережу з більшою кількістю параметрів, але точність перевірки зросте не так сильно.\n", + "Ми, ймовірно, досягнемо більшої точності навчання, оскільки використовуємо потужнішу мережу з більшою кількістю параметрів, але точність на валідації зросте не так значно.\n", "\n", - "Не соромтеся розморозити ще кілька шарів мережі та продовжити навчання, щоб перевірити, чи зможете ви досягти вищої точності!\n" + "Не соромтеся розблокувати ще кілька шарів мережі та продовжити навчання, щоб перевірити, чи зможете ви досягти вищої точності!\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Інші моделі комп'ютерного зору\n", + "## Інші моделі комп’ютерного зору\n", "\n", - "VGG-16 — одна з найпростіших архітектур комп'ютерного зору. Keras надає багато інших попередньо навчених мереж. Найчастіше використовуваними серед них є архітектури **ResNet**, розроблені Microsoft, та **Inception** від Google. Наприклад, давайте розглянемо архітектуру найпростішої моделі ResNet-50 (ResNet — це сімейство моделей з різною глибиною, ви можете спробувати експериментувати з ResNet-152, якщо хочете побачити, як виглядає дійсно глибока модель):\n" + "VGG-16 — це одна з найпростіших архітектур комп’ютерного зору. Keras пропонує ще багато попередньо навчених мереж. Найчастіше використовуваними серед них є архітектури **ResNet**, розроблені Microsoft, і **Inception** від Google. Наприклад, давайте розглянемо архітектуру найпростішьої моделі ResNet-50 (ResNet — це сімейство моделей з різною глибиною, ви можете спробувати експериментувати з ResNet-152, якщо хочете побачити, як виглядає справді глибока модель):\n" ] }, { @@ -1440,29 +1452,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Як ви бачите, модель містить ті ж самі знайомі будівельні блоки: шари згортки, шари підвибірки та фінальний щільний класифікатор. Ми можемо використовувати цю модель точно так само, як ми використовували VGG-16 для перенесення навчання. Ви можете спробувати експериментувати з кодом вище, використовуючи різні моделі ResNet як базову модель, і подивитися, як змінюється точність.\n", + "Як ви бачите, модель містить ті ж знайомі будівельні блоки: згорткові шари, шари підвибірки та фінальний щільний класифікатор. Ми можемо використовувати цю модель точно так само, як ми використовували VGG-16 для перенесеного навчання. Ви можете спробувати виконати експерименти з наведеним вище кодом, використовуючи різні моделі ResNet як базову модель, і подивитися, як змінюється точність.\n", "\n", - "## Нормалізація пакетів\n", + "## Нормалізація за пакетами\n", "\n", - "Ця мережа містить ще один тип шару: **Нормалізація пакетів**. Ідея нормалізації пакетів полягає в тому, щоб привести значення, які проходять через нейронну мережу, до правильного інтервалу. Зазвичай нейронні мережі працюють найкраще, коли всі значення знаходяться в діапазоні [-1,1] або [0,1], і саме тому ми масштабуємо/нормалізуємо наші вхідні дані відповідно. Однак під час навчання глибокої мережі може статися так, що значення значно виходять за межі цього діапазону, що ускладнює навчання. Шар нормалізації пакетів обчислює середнє значення та стандартне відхилення для всіх значень поточного мініпакету і використовує їх для нормалізації сигналу перед його передачею через шар нейронної мережі. Це значно покращує стабільність глибоких мереж.\n" + "Ця мережа містить ще один тип шару: **нормалізація за пакетами (Batch Normalization)**. Ідея нормалізації за пакетами полягає в тому, щоб привести значення, що проходять через нейронну мережу, до правильного інтервалу. Зазвичай нейронні мережі працюють найкраще, коли всі значення знаходяться в діапазоні [-1,1] або [0,1], і саме тому ми відповідним чином масштабуємо/нормалізуємо вхідні дані. Однак під час тренування глибокої мережі може трапитися, що значення значно виходять за цей діапазон, що ускладнює навчання. Шар нормалізації за пакетами обчислює середнє значення та стандартне відхилення для всіх значень поточного мініпакета і використовує їх для нормалізації сигналу перед передачею через шар нейронної мережі. Це значно покращує стабільність глибоких мереж.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Основні висновки\n", + "## Висновок\n", "\n", - "Використовуючи трансферне навчання, ми змогли швидко створити класифікатор для нашого завдання класифікації об'єктів і досягти високої точності. Однак цей приклад не був повністю справедливим, оскільки оригінальна мережа VGG-16 була попередньо навчена розпізнавати котів і собак, і ми просто повторно використовували більшість шаблонів, які вже були присутні в мережі. Ви можете очікувати нижчої точності для більш екзотичних об'єктів, специфічних для певної галузі, наприклад, деталей на виробничій лінії на заводі або різних листків дерев.\n", + "Використовуючи трансферне навчання, ми змогли швидко створити класифікатор для нашого завдання класифікації користувацьких об’єктів і досягти високої точності. Проте цей приклад було не зовсім справедливим, тому що початкова мережа VGG-16 була попередньо навчена розпізнавати котів і собак, і тому ми просто повторно використовували більшість шаблонів, які вже були в мережі. Ви можете очікувати нижчу точність на більш екзотичних предметах, специфічних для конкретної сфери, таких як деталі на виробничій лінії на заводі або різні листя дерев.\n", "\n", - "Як ви бачите, більш складні завдання, які ми вирішуємо зараз, вимагають більшої обчислювальної потужності і не можуть бути легко виконані на процесорі. У наступному розділі ми спробуємо використати більш легковагову реалізацію для навчання тієї ж моделі з меншими обчислювальними ресурсами, що призведе до лише незначного зниження точності.\n" + "Ви можете побачити, що більш складні завдання, які ми розв’язуємо зараз, вимагають більшої обчислювальної потужності і не можуть бути легко розв’язані на ЦПУ. У наступному розділі ми спробуємо використати більш легку реалізацію для навчання тієї самої моделі з меншими обчислювальними ресурсами, що призведе лише до трохи нижчої точності.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Відмова від відповідальності**: \nЦей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.\n" + "---\n\n\n**Відмова від відповідальності**:\nЦей документ було перекладено за допомогою сервісу штучного інтелекту для перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.\n\n" ] } ], @@ -1483,12 +1495,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" - }, - "coopTranslator": { - "original_hash": "c189abc107848f96051085cc30945129", - "translation_date": "2025-08-30T09:10:54+00:00", - "source_file": "lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb", - "language_code": "uk" } }, "nbformat": 4, diff --git a/translations/uk/lessons/5-NLP/README.md b/translations/uk/lessons/5-NLP/README.md index 8213ef3c..2d00ff5b 100644 --- a/translations/uk/lessons/5-NLP/README.md +++ b/translations/uk/lessons/5-NLP/README.md @@ -1,34 +1,34 @@ # Обробка природної мови -![Резюме задач NLP у вигляді малюнка](../../../../translated_images/uk/ai-nlp.b22dcb8ca4707cea.webp) +![Підсумок завдань NLP у малюнку](../../../../translated_images/uk/ai-nlp.b22dcb8ca4707cea.webp) -У цьому розділі ми зосередимося на використанні нейронних мереж для вирішення задач, пов'язаних із **обробкою природної мови (NLP)**. Існує багато проблем NLP, які ми хочемо, щоб комп'ютери могли вирішувати: +У цьому розділі ми зосередимося на використанні нейронних мереж для виконання завдань, пов’язаних із **Обробкою природної мови (NLP)**. Існує багато проблем NLP, які ми хочемо, щоб комп’ютери вміли розв’язувати: -* **Класифікація тексту** — це типова задача класифікації, що стосується текстових послідовностей. Приклади включають класифікацію електронних листів як спам або не спам, або категоризацію статей як спорт, бізнес, політика тощо. Також, при розробці чат-ботів, нам часто потрібно зрозуміти, що користувач хотів сказати — у цьому випадку ми маємо справу з **класифікацією намірів**. У класифікації намірів часто доводиться працювати з багатьма категоріями. -* **Аналіз настроїв** — це типова задача регресії, де потрібно приписати числове значення (настрій), що відповідає тому, наскільки позитивним/негативним є значення речення. Більш просунута версія аналізу настроїв — це **аналіз настроїв на основі аспектів** (ABSA), де ми приписуємо настрій не всьому реченню, а його окремим частинам (аспектам), наприклад: *У цьому ресторані мені сподобалася кухня, але атмосфера була жахливою*. -* **Розпізнавання іменованих сутностей** (NER) стосується задачі вилучення певних сутностей із тексту. Наприклад, нам може знадобитися зрозуміти, що у фразі *Мені потрібно летіти до Парижа завтра* слово *завтра* означає ДАТУ, а *Париж* — ЛОКАЦІЮ. -* **Виділення ключових слів** схоже на NER, але тут потрібно автоматично виділяти слова, важливі для значення речення, без попереднього навчання для конкретних типів сутностей. -* **Кластеризація тексту** може бути корисною, коли ми хочемо згрупувати схожі речення, наприклад, схожі запити в технічній підтримці. -* **Відповіді на запитання** стосуються здатності моделі відповідати на конкретне запитання. Модель отримує текстовий уривок і запитання як вхідні дані, і повинна надати місце в тексті, де міститься відповідь на запитання (або, іноді, згенерувати текст відповіді). -* **Генерація тексту** — це здатність моделі створювати новий текст. Це можна розглядати як задачу класифікації, яка прогнозує наступну літеру/слово на основі певного *текстового запиту*. Просунуті моделі генерації тексту, такі як GPT-3, здатні вирішувати інші задачі NLP, наприклад класифікацію, використовуючи техніку [програмування запитів](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) або [інженерії запитів](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Резюмування тексту** — це техніка, коли ми хочемо, щоб комп'ютер "прочитав" довгий текст і підсумував його кількома реченнями. -* **Машинний переклад** можна розглядати як комбінацію розуміння тексту однією мовою та генерації тексту іншою. +* **Класифікація тексту** — типова задача класифікації, що стосується послідовностей тексту. Прикладами є класифікація електронних листів як спам або не спам, або категоризація статей як спорт, бізнес, політика тощо. Також при розробці чат-ботів часто необхідно зрозуміти, що користувач хотів сказати — у цьому випадку ми маємо справу з **класифікацією намірів**. Часто при класифікації намірів потрібно працювати з багатьма категоріями. +* **Аналіз настроїв** — типова задача регресії, де потрібно призначити число (настрій), що відповідає тому, наскільки позитивним чи негативним є сенс речення. Більш просунута версія аналізу настроїв — це **аналіз настроїв за аспектами** (ABSA), де настрій призначається не всьому реченню, а різним його частинам (аспектам), напр., *У цьому ресторані мені сподобалась кухня, але атмосфера була жахливою*. +* **Розпізнавання іменованих сутностей** (NER) стосується проблеми вилучення певних сутностей із тексту. Наприклад, потрібно зрозуміти, що у фразі *I need to fly to Paris tomorrow* слово *tomorrow* позначає ДАТУ, а *Paris* — МІСЦЕ. +* **Виділення ключових слів** схоже на NER, але ми повинні автоматично вилучати слова, важливі для сенсу речення, без попереднього навчання для конкретних типів сутностей. +* **Кластеризація тексту** може бути корисною, коли ми хочемо групувати схожі речення, наприклад, схожі запити в технічній підтримці. +* **Відповіді на питання** — це здатність моделі відповідати на конкретне питання. Модель отримує на вхід текстовий уривок і питання, і має вказати місце в тексті, де міститься відповідь на питання (або іноді згенерувати текст відповіді). +* **Генерація тексту** — здатність моделі генерувати новий текст. Її можна вважати задачею класифікації, що передбачає наступну літеру/слово на основі певного *текстового підказки*. Просунуті моделі генерації тексту, такі як GPT-3, можуть розв’язувати й інші завдання NLP, як-от класифікацію, використовуючи техніку, що називається [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) або [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) +* **Текстове резюмування** — це техніка, коли ми хочемо, щоб комп’ютер «прочитав» великий текст і підсумував його в кількох реченнях. +* **Машинний переклад** можна розглядати як комбінацію розуміння тексту однією мовою та генерації тексту іншою мовою. -Спочатку більшість задач NLP вирішувалися за допомогою традиційних методів, таких як граматики. Наприклад, у машинному перекладі використовувалися парсери для перетворення початкового речення у синтаксичне дерево, потім витягувалися семантичні структури вищого рівня для представлення значення речення, і на основі цього значення та граматики цільової мови генерувався результат. Сьогодні багато задач NLP ефективніше вирішуються за допомогою нейронних мереж. +Спочатку більшість завдань NLP розв’язувалися за допомогою традиційних методів, таких як граматики. Наприклад, у машинному перекладі парсери використовувалися для перетворення початкового речення у синтаксичне дерево, потім витягувалися вищого рівня семантичні структури для представлення смислу речення, і на основі цього значення та граматики цільової мови генерувався результат. Сьогодні багато завдань NLP більш ефективно розв’язуються за допомогою нейронних мереж. -> Багато класичних методів NLP реалізовані у Python-бібліотеці [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Існує чудова [книга NLTK](https://www.nltk.org/book/), доступна онлайн, яка охоплює, як різні задачі NLP можна вирішувати за допомогою NLTK. +> Багато класичних методів NLP реалізовано в бібліотеці Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Існує чудова [книга NLTK](https://www.nltk.org/book/), доступна онлайн, що охоплює, як різні завдання NLP можна розв’язати за допомогою NLTK. -У нашому курсі ми здебільшого зосередимося на використанні нейронних мереж для NLP, і будемо використовувати NLTK за потреби. +У нашому курсі ми здебільшого зосередимось на використанні нейронних мереж для NLP і використовуватимемо NLTK за потребою. -Ми вже вивчили використання нейронних мереж для роботи з табличними даними та зображеннями. Основна відмінність між цими типами даних і текстом полягає в тому, що текст — це послідовність змінної довжини, тоді як розмір вхідних даних у випадку зображень відомий заздалегідь. Хоча згорткові мережі можуть витягувати шаблони з вхідних даних, шаблони в тексті є більш складними. Наприклад, заперечення може бути відокремлене від суб'єкта довільною кількістю слів (наприклад, *Мені не подобаються апельсини* проти *Мені не подобаються ті великі кольорові смачні апельсини*), і це все одно має інтерпретуватися як один шаблон. Таким чином, для обробки мови нам потрібно впроваджувати нові типи нейронних мереж, такі як *рекурентні мережі* та *трансформери*. +Ми вже вивчали використання нейронних мереж для роботи з табличними даними та зображеннями. Основна відмінність між цими типами даних і текстом у тому, що текст — це послідовність змінної довжини, тоді як розмір вхідних даних у випадку зображень відомий наперед. Хоча згорткові мережі можуть витягувати патерни з вхідних даних, патерни в тексті складніші. Наприклад, заперечення може відділятися від підмета на багато слів (напр., *I do not like oranges* проти *I do not like those big colorful tasty oranges*), і все це має інтерпретуватись як один патерн. Тому для роботи з мовою потрібно вводити нові типи нейронних мереж, такі як *рекурентні мережі* і *трансформери*. ## Встановлення бібліотек -Якщо ви використовуєте локальну установку Python для запуску цього курсу, можливо, вам потрібно встановити всі необхідні бібліотеки для NLP за допомогою наступних команд: +Якщо ви використовуєте локальну інсталяцію Python для проходження цього курсу, можливо, вам знадобиться встановити всі необхідні бібліотеки для NLP за допомогою таких команд: **Для PyTorch** ```bash -pip install -r requirements-torch.txt +pip install -r requirements-pytorch.txt ``` **Для TensorFlow** ```bash @@ -39,13 +39,13 @@ pip install -r requirements-tf.txt ## Попередження щодо GPU -У цьому розділі в деяких прикладах ми будемо навчати досить великі моделі. -* **Використовуйте комп'ютер із підтримкою GPU**: Рекомендується запускати ваші ноутбуки на комп'ютері з підтримкою GPU, щоб зменшити час очікування при роботі з великими моделями. -* **Обмеження пам'яті GPU**: Робота на GPU може призвести до ситуацій, коли пам'ять GPU закінчується, особливо при навчанні великих моделей. -* **Споживання пам'яті GPU**: Кількість пам'яті GPU, що споживається під час навчання, залежить від різних факторів, включаючи розмір мініпакету. -* **Мінімізуйте розмір мініпакету**: Якщо ви стикаєтеся з проблемами пам'яті GPU, розгляньте можливість зменшення розміру мініпакету у вашому коді як потенційне рішення. -* **Вивільнення пам'яті GPU у TensorFlow**: Старі версії TensorFlow можуть некоректно вивільняти пам'ять GPU при навчанні кількох моделей в одному ядрі Python. Щоб ефективно керувати використанням пам'яті GPU, ви можете налаштувати TensorFlow на виділення пам'яті GPU лише за потреби. -* **Включення коду**: Щоб налаштувати TensorFlow на зростання виділення пам'яті GPU лише за потреби, включіть наступний код у ваші ноутбуки: +У цьому розділі в деяких прикладах ми тренуватимемо досить великі моделі. +* **Використовуйте комп’ютер із підтримкою GPU**: рекомендовано запускати ваші ноутбуки на комп’ютері з підтримкою GPU, щоб зменшити час очікування при роботі з великими моделями. +* **Обмеження пам’яті GPU**: запуск на GPU може призводити до ситуацій, коли пам’яті GPU не вистачає, особливо при тренуванні великих моделей. +* **Використання пам’яті GPU**: обсяг пам’яті GPU, що використовується під час тренування, залежить від різних факторів, зокрема від розміру міні-пакету. +* **Зменшення розміру міні-пакету**: якщо ви стикаєтеся з проблемами пам’яті GPU, спробуйте зменшити розмір міні-пакету у вашому коді як потенційне рішення. +* **Звільнення пам’яті GPU в TensorFlow**: старі версії TensorFlow можуть некоректно звільняти пам’ять GPU під час тренування кількох моделей у одному ядрі Python. Щоб ефективно управляти використанням пам’яті GPU, можна налаштувати TensorFlow так, щоб він виділяв пам’ять GPU тільки за потребою. +* **Включення коду**: щоб налаштувати TensorFlow на поступове виділення пам’яті GPU, додайте в свої ноутбуки наступний код: ```python physical_devices = tf.config.list_physical_devices('GPU') @@ -53,17 +53,21 @@ if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) ``` -Якщо вас цікавить вивчення NLP з точки зору класичного ML, відвідайте [цей набір уроків](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) +Якщо ви зацікавлені у вивченні NLP з класичної перспективи машинного навчання, відвідайте [цей набір уроків](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ## У цьому розділі -У цьому розділі ми навчимося: +У цьому розділі ми вивчимо: -* [Представлення тексту у вигляді тензорів](13-TextRep/README.md) -* [Вбудовування слів](14-Emdeddings/README.md) +* [Подання тексту у вигляді тензорів](13-TextRep/README.md) +* [Векторне подання слів (Word Embeddings)](14-Emdeddings/README.md) * [Моделювання мови](15-LanguageModeling/README.md) * [Рекурентні нейронні мережі](16-RNN/README.md) * [Генеративні мережі](17-GenerativeNetworks/README.md) * [Трансформери](18-Transformers/README.md) -**Відмова від відповідальності**: -Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file +--- + + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу штучного інтелекту для перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. + \ No newline at end of file