Programovanie

Čo je TensorFlow? Vysvetlila knižnica strojového učenia

Strojové učenie je zložitá disciplína. Implementácia modelov strojového učenia je však oveľa menej skľučujúca a zložitá ako predtým, a to vďaka rámcom strojového učenia - ako je Google TensorFlow - ktoré uľahčujú proces získavania údajov, výcvikové modely, poskytovanie predpovedí a vylepšovanie budúcich výsledkov.

TensorFlow, ktorý vytvoril tím Google Brain, je open source knižnica pre numerické výpočty a rozsiahle strojové učenie. TensorFlow spája dohromady množstvo modelov a algoritmov strojového učenia a hlbokého učenia (aka neurónových sietí) a robí ich užitočnými prostredníctvom spoločnej metafory. Používa Python na poskytovanie pohodlného rozhrania front-end API na vytváranie aplikácií v rámci, zatiaľ čo tieto aplikácie spúšťa vo vysoko výkonnom jazyku C ++.

TensorFlow dokáže trénovať a prevádzkovať hlboké neurónové siete na ručne písanú klasifikáciu číslic, rozpoznávanie obrázkov, vkladanie slov, opakujúce sa neurónové siete, modely postupnosti pre strojový preklad, spracovanie prirodzeného jazyka a simulácie založené na PDE (parciálna diferenciálna rovnica). Najlepšie na tom všetkom je, že TensorFlow podporuje predikciu výroby v rozsahu, s rovnakými modelmi, ktoré sa používajú na školenie.

Ako funguje TensorFlow

TensorFlow umožňuje vývojárom vytvárať grafy toku údajov—Štruktúry, ktoré popisujú, ako sa údaje pohybujú v grafe alebo v sérii uzlov spracovania. Každý uzol v grafe predstavuje matematickú operáciu a každé spojenie alebo hrana medzi uzlami je viacrozmerné dátové pole, alebo tenzor.

TensorFlow poskytuje toto všetko programátorovi prostredníctvom jazyka Python. Program Python sa ľahko učí a pracuje s ním a poskytuje pohodlné spôsoby, ako vyjadriť, ako je možné kombinovať abstrakcie na vysokej úrovni. Uzly a tenzory v TensorFlow sú objekty Pythonu a aplikácie TensorFlow sú samotné aplikácie v Pythone.

Samotné matematické operácie sa však v Pythone nevykonávajú. Knižnice transformácií, ktoré sú k dispozícii prostredníctvom TensorFlow, sú napísané ako vysoko výkonné binárne súbory v C ++. Python iba usmerňuje prenos medzi jednotlivými časťami a poskytuje abstrakcie programovania na vysokej úrovni, aby ich spojil.

Aplikácie TensorFlow je možné spustiť na väčšine účelných cieľov: lokálny počítač, klaster v cloude, zariadenia so systémom iOS a Android, CPU alebo GPU. Ak používate vlastný cloud spoločnosti Google, môžete pre ďalšiu akceleráciu spustiť TensorFlow na vlastnom kremíku spoločnosti TensorFlow Processing Unit (TPU) od spoločnosti Google. Výsledné modely vytvorené programom TensorFlow je však možné nasadiť na väčšinu zariadení, kde sa budú používať na poskytovanie predpovedí.

TensorFlow 2.0, vydaný v októbri 2019, vylepšil rámec mnohými spôsobmi na základe spätnej väzby od používateľov, aby sa s ním ľahšie pracovalo (napr. Používaním relatívne jednoduchého rozhrania Keras API na výcvik modelu) a výkonnejší. Distribuované školenie sa dá ľahšie spustiť vďaka novému API a podpora TensorFlow Lite umožňuje nasadiť modely na väčšiu škálu platforiem. Avšak kód napísaný pre staršie verzie TensorFlow musí byť prepísaný - niekedy len mierne, inokedy výrazne - aby sa čo najlepšie využili výhody nových funkcií TensorFlow 2.0.

Výhody TensorFlow

Jedinou najväčšou výhodou, ktorú TensorFlow poskytuje pre rozvoj strojového učenia, je abstrakcia. Namiesto riešenia podrobností implementácie algoritmov alebo hľadania správnych spôsobov, ako zapojiť výstup jednej funkcie do vstupu inej, sa vývojár môže sústrediť na celkovú logiku aplikácie. O detaily v zákulisí sa stará TensorFlow.

TensorFlow ponúka ďalšie vymoženosti pre vývojárov, ktorí potrebujú ladiť a získať introspekciu v aplikáciách TensorFlow. Režim nedočkavého spustenia vám umožňuje vyhodnotiť a upraviť každú operáciu grafu osobitne a transparentne, namiesto toho, aby ste celý graf zostavili ako jeden nepriehľadný objekt a vyhodnotili ho naraz. Vizualizačná sada TensorBoard vám umožňuje kontrolovať a profilovať spôsob, akým grafy bežia, pomocou interaktívneho webového dashboardu.

TensorFlow tiež získava mnoho výhod z podpory komerčného oblečenia v zozname A spoločnosti Google. Google nielen podporil rýchle tempo vývoja, ktoré za týmto projektom stojí, ale vytvoril okolo TensorFlow mnoho významných ponúk, ktoré uľahčujú jeho nasadenie a ľahšie sa používajú: vyššie spomenutý kremík TPU pre zrýchlený výkon v cloude spoločnosti Google; online hub pre zdieľanie modelov vytvorených v rámci; inkarnácia rámca do prehliadača a vhodná pre mobilné zariadenia; a oveľa viac.

Jedna výhrada: Niektoré podrobnosti o implementácii TensorFlow sťažujú získanie úplne deterministických výsledkov školenia modelu pre niektoré školiace úlohy. Niekedy sa model trénovaný v jednom systéme bude mierne líšiť od modelu trénovaného v inom systéme, aj keď sú kŕmené úplne rovnakými údajmi. Dôvody sú klzké - napríklad to, ako a kde sú naočkované náhodné čísla, alebo určité nedeterministické správanie pri použití GPU). To znamená, že je možné tieto problémy obísť a tím spoločnosti TensorFlow zvažuje viac ovládacích prvkov, ktoré ovplyvnia determinizmus v pracovnom toku.

Súvisiace video: Strojové učenie a AI dešifrované

Pri prekonávaní humbuku okolo strojového učenia a umelej inteligencie náš panel hovorí o definíciách a dôsledkoch tejto technológie.

TensorFlow vs. konkurencia

TensorFlow súťaží s množstvom ďalších rámcov strojového učenia. PyTorch, CNTK a MXNet sú tri hlavné rámce, ktoré vyhovujú mnohým rovnakým potrebám. Ďalej som si všimol, kde vynikajú a sú proti TensorFlow.

  • PyTorch, okrem toho, že je postavený na platforme Python, má mnoho ďalších podobností s TensorFlow: hardvérovo akcelerované komponenty pod kapotou, vysoko interaktívny vývojový model, ktorý umožňuje prácu podľa návrhu, a mnoho užitočných súčastí už obsiahnutých. PyTorch je všeobecne lepšou voľbou pre rýchly vývoj projektov, ktoré musia byť v prevádzke v krátkom čase, ale TensorFlow vyhráva pre väčšie projekty a zložitejšie pracovné postupy.

  • CNTK, Microsoft Cognitive Toolkit, podobne ako TensorFlow, používa grafickú štruktúru na popis toku údajov, ale najviac sa zameriava na vytváranie neurónových sietí s hlbokým učením. CNTK zvláda veľa úloh neurónových sietí rýchlejšie a má širšiu sadu API (Python, C ++, C #, Java). Avšak CNTK nie je v súčasnosti také ľahké sa naučiť alebo nasadiť ako TensorFlow.

  • Apache MXNet, ktorý Amazon prijal ako prvý rámec pre hlboké vzdelávanie na AWS, je možné škálovať takmer lineárne na viacerých GPU a viacerých strojoch. Podporuje tiež širokú škálu jazykových rozhraní API - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - aj keď s natívnymi rozhraniami API nie je také príjemné pracovať ako s rozhraním TensorFlow.

$config[zx-auto] not found$config[zx-overlay] not found