Ohjelmointi

Mikä on TensorFlow? Koneoppimiskirjasto selitti

Koneoppiminen on monimutkainen ala. Koneoppimismallien toteuttaminen on kuitenkin paljon vähemmän pelottavaa ja vaikeaa kuin ennen, koneoppimisen puitteiden - kuten Googlen TensorFlow - ansiosta, jotka helpottavat tietojen hankintaa, koulutusmalleja, ennusteiden tarjoamista ja tulevien tulosten parantamista.

Google Brain -tiimin luoma TensorFlow on avoimen lähdekoodin kirjasto numeeriseen laskentaan ja laajamittaiseen koneoppimiseen. TensorFlow yhdistää joukon koneoppimisen ja syvällisen oppimisen (alias hermoverkko) malleja ja algoritmeja ja tekee niistä hyödyllisiä yhteisen metaforan avulla. Se käyttää Pythonia tarjoamaan kätevän käyttöliittymän sovellusliittymälle sovellusten rakentamiseen kehyksen kanssa samalla, kun nämä sovellukset suoritetaan korkean suorituskyvyn C ++: ssa.

TensorFlow voi kouluttaa ja suorittaa syviä hermoverkkoja käsinkirjoitettuun numeroluokitukseen, kuvan tunnistamiseen, sanojen upotuksiin, toistuviin hermoverkkoihin, sekvenssisarjamalleista konekääntämistä varten, luonnollisen kielen käsittelyyn ja PDE-pohjaisiin simulaatioihin. Mikä parasta, TensorFlow tukee tuotannon ennustamista mittakaavassa samoilla malleilla, joita käytetään koulutuksessa.

Kuinka TensorFlow toimii

TensorFlow antaa kehittäjien luoda datavuokaaviot—Rakenteet, jotka kuvaavat kuinka data liikkuu kaavion tai prosessointisolmujen sarjan läpi. Jokainen kaavion solmu edustaa matemaattista operaatiota, ja jokainen solmujen välinen yhteys tai reuna on moniulotteinen datasarja tai tensori.

TensorFlow tarjoaa kaiken tämän ohjelmoijalle Python-kielellä. Python on helppo oppia ja työskennellä, ja tarjoaa käteviä tapoja ilmaista, kuinka korkean tason abstraktit voidaan yhdistää toisiinsa. TensorFlow'n solmut ja tensorit ovat Python-objekteja, ja TensorFlow-sovellukset ovat itse Python-sovelluksia.

Todellisia matemaattisia operaatioita ei kuitenkaan suoriteta Pythonissa. TensorFlow-palvelun kautta saatavissa olevat muunnoskirjastot kirjoitetaan korkean suorituskyvyn C ++ -binaareina. Python vain ohjaa liikennettä kappaleiden väliin ja tarjoaa korkean tason ohjelmointikuviot yhdistää ne yhteen.

TensorFlow-sovelluksia voidaan käyttää useimmissa kohteissa, jotka ovat käteviä: paikallisessa koneessa, pilvipaketissa, iOS- ja Android-laitteissa, suorittimissa tai näytönohjaimissa. Jos käytät Googlen omaa pilvipalvelua, voit käyttää TensorFlow'ta Googlen mukautetulla TensorFlow Processing Unit (TPU) -piillä kiihdytystä varten. Tuloksena olevat TensorFlow'n luomat mallit voidaan kuitenkin ottaa käyttöön useimmissa laitteissa, joissa niitä käytetään ennusteiden tarjoamiseen.

Lokakuussa 2019 julkaistu TensorFlow 2.0 uudisti kehyksen monin tavoin käyttäjien palautteen perusteella helpottamaan työskentelyä (esim. Käyttämällä suhteellisen yksinkertaista Keras-sovellusliittymää mallikoulutukseen) ja suorituskykyisempää. Hajautettua harjoittelua on helpompi suorittaa uuden sovellusliittymän ansiosta, ja TensorFlow Lite -tuen ansiosta mallit voidaan ottaa käyttöön useilla eri alustoilla. Aikaisemmille TensorFlow-versioille kirjoitettu koodi on kuitenkin kirjoitettava uudelleen - toisinaan vain vähän, toisinaan merkittävästi - uusien TensorFlow 2.0 -ominaisuuksien hyödyntämiseksi mahdollisimman tehokkaasti.

TensorFlow-edut

Suurin yksittäinen hyöty, jonka TensorFlow tarjoaa koneoppimisen kehittämiselle abstraktio. Kehittäjä voi keskittyä sovelluksen kokonaislogiikkaan sen sijaan, että käsittelisi algoritmien toteuttamisen hienoja yksityiskohtia tai keksisi oikeita tapoja kytkeä yhden toiminnon lähtö toisen tuloon. TensorFlow huolehtii kulissien takana olevista yksityiskohdista.

TensorFlow tarjoaa lisäpalveluita kehittäjille, joiden on selvitettävä ja tutkittava TensorFlow-sovelluksia. Innokkaan suoritustilan avulla voit arvioida ja muokata kutakin kuvaajan toimintaa erikseen ja läpinäkyvästi sen sijaan, että koko kaavio rakennettaisiin yhtenä läpinäkymättömänä objektina ja arvioitaisiin se kaikki kerralla. TensorBoard-visualisointipaketin avulla voit tarkastaa ja profiloida kaavioiden suoritustavan interaktiivisen, verkkopohjaisen hallintapaneelin avulla.

TensorFlow saa myös monia etuja A-listan kaupallisten asujen tuesta Googlessa. Google ei ole vain tukenut projektin nopeaa kehitystahtia, mutta on myös luonut TensorFlow'n ympärille monia merkittäviä tarjouksia, jotka helpottavat käyttöönottoa ja käyttöä: yllä mainittu TPU-pii nopeuttaa suorituskykyä Googlen pilvessä; verkkokeskus kehysten kanssa luotujen mallien jakamiseen; kehyksen selaimen sisäiset ja mobiiliystävälliset inkarnaatiot; ja paljon enemmän.

Yksi huomautus: Jotkin TensorFlow'n toteutuksen yksityiskohdat vaikeuttavat täysin determinististen mallikoulutustulosten saamista joillekin koulutustöille. Joskus yhdessä järjestelmässä koulutettu malli eroaa hieman toisessa koulutetusta mallista, vaikka heille syötettäisiin täsmälleen samat tiedot. Syyt tähän ovat liukkaita - esim. Kuinka satunnaisluvut kylvetään ja mihin, tai tietyt ei-deterministiset käyttäytymiset GPU: ita käytettäessä). Siitä huolimatta on mahdollista kiertää nämä ongelmat, ja TensorFlow-tiimi harkitsee lisää kontrolleja, jotka vaikuttavat determinismiin työnkulussa.

Aiheeseen liittyvä video: Koneoppiminen ja tekoälyn tulkinta

Koneoppimisen ja tekoälyn ympärillä vallitsevan hyökkäyksen läpi paneelimme puhuu tekniikan määritelmät ja vaikutukset.

TensorFlow vs. kilpailu

TensorFlow kilpailee joukon muiden koneoppimisen puitteiden kanssa. PyTorch, CNTK ja MXNet ovat kolme pääkehystä, jotka vastaavat moniin samoihin tarpeisiin. Alla olen huomannut, missä he erottuvat ja kohtaavat TensorFlow'n.

  • PyTorchSen lisäksi, että se on rakennettu Pythonilla, ja sillä on monia muita yhtäläisyyksiä TensorFlow'n kanssa: konepellin alla olevat laitteistokiihdytetyt komponentit, erittäin vuorovaikutteinen kehitysmalli, joka mahdollistaa suunnittelun alusta asti, ja monia hyödyllisiä komponentteja, jotka ovat jo mukana. PyTorch on yleensä parempi valinta sellaisten projektien nopeaan kehittämiseen, joiden on oltava käynnissä ja käynnissä lyhyessä ajassa, mutta TensorFlow voittaa suuremmissa projekteissa ja monimutkaisemmissa työnkulkuissa.

  • CNTK, Microsoft Cognitive Toolkit, kuten TensorFlow, käyttää kuvaajarakennetta kuvaamaan tietovirtaa, mutta keskittyy eniten syvällisten oppivien hermoverkkojen luomiseen. CNTK käsittelee monia hermoverkkotöitä nopeammin, ja sillä on laajempi joukko sovellusliittymiä (Python, C ++, C #, Java). CNTK: ta ei kuitenkaan tällä hetkellä ole yhtä helppo oppia tai ottaa käyttöön kuin TensorFlow.

  • Apache MXNet, jonka Amazon on hyväksynyt AWS: n johtavaksi syvälliseksi oppimiskehykseksi, voi skaalata melkein lineaarisesti useille näytönohjaimille ja useille koneille. Se tukee myös monenlaisia ​​kieli-sovellusliittymiä - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go, vaikka sen alkuperäiset sovellusliittymät eivät ole yhtä miellyttäviä työskennellä kuin TensorFlow.