Hvis du læser dette, er du utvivlsomt allerede begyndt på din tur ind i dyb læring. Hvis du er ny inden for dette emne, er deep learning en tilføjelse, der bruger unikke hjernelignende strukturer kaldet kunstige neurale netværk til at konstruere menneskelignende computere, der tackler problemer i den virkelige verden.
For at hjælpe med udviklingen af disse designs har teknologiske giganter som Google, Facebook og Uber udviklet en række rammer for Pythons dybe læringsmiljø, hvilket gør det nemmere at forstå, skabe og træne forskellige neurale netværk.
En deep learning framework er et stykke software, som akademikere og dataforskere bruger til at skabe og træne deep learning-modeller.
Målet med disse rammer er at gøre det muligt for individer at træne deres modeller uden at skulle forstå teknikkerne bag dyb læring, neurale netværk og maskinlæring.
Gennem en programmeringsgrænseflade på højt niveau giver disse rammer byggesten til at konstruere, træne og verificere modeller.
Vi vil se på TensorFlow, Keras, Apache MXNet, Microsoft CNTK og DeepLearing4j som alternativer til PyTorch, som er en meget brugt dyb læringsramme.
Hvad er Pytorch?
PyTorch er et gratis, open source maskinlæringsbibliotek bygget med Torch Python-biblioteket.
Det blev oprettet af Facebooks AI Research-gruppe og udgivet som et gratis og open source-bibliotek i januar 2016 med applikationer inden for computervision, deep learning og naturlig sprogbehandling.
Det har et imperativt og pytonisk programmeringssprog, der understøtter kode som model, letter fejlfinding og er kompatibelt med andre populære videnskabelige computerbiblioteker, alt imens det forbliver effektivt og aktiverer hardwareacceleratorer som GPU'er.
PyTorch er vokset i popularitet blandt deep learning-forskere takket være dets fokus på brugervenlighed og grundige præstationsovervejelser.
Den indeholder en grundlæggende datastruktur, Tensor, som er et multidimensionelt array svarende til Numpy-arrays, som gør det muligt for programmører nemt at designe en kompliceret neurale netværk.
Det bliver mere populært i de nuværende sektorer og i det akademiske samfund på grund af dets fleksibilitet, hastighed og lette implementering, hvilket gør det til et af de mest populære deep learning-værktøjer.
Pytorchs nøglefunktioner
- PyTorch er Python-centreret eller "pythonic", idet det er beregnet til dyb integration med Python-programmering i stedet for at tjene som en grænseflade til et bibliotek udviklet på et andet sprog.
- Enkel at lære – PyTorch følger samme struktur som traditionel programmering og er blevet omhyggeligt dokumenteret, hvor udviklerfællesskabet altid forsøger at forbedre det. Det er derfor nemt at lære for både programmører og ikke-programmører.
- PyTorch kan opdele beregningsarbejde over flere CPU eller GPU kerner ved hjælp af dataparallelisme. Selvom lignende parallelitet kan opnås med andre maskinlæringsteknikker, gør PyTorch det meget nemmere.
- Debugging: Et af de mange almindeligt tilgængelige Python-fejlretningsværktøjer (for eksempel Pythons pdb- og ipdb-værktøjer) kan bruges til at fejlsøge PyTorch.
- PyTorch understøtter dynamiske beregningsgrafer, hvilket indebærer, at netværkets adfærd kan ændres dynamisk under kørsel.
- PyTorch kommer med forskellige speciallavede moduler, som f.eks torchtext, torchvision og torchaudio, der kan bruges til at håndtere forskellige områder af dyb læring, såsom NLP, computersyn og stemmebehandling.
Pytorch-begrænsninger
- Begrænsede overvågnings- og visualiseringsgrænseflader: Mens TensorFlow inkluderer et kraftfuldt visualiseringsværktøj til generering af modelgrafen (TensorBoard), mangler PyTorch i øjeblikket denne funktion. Som et resultat kan udviklere oprette forbindelse til TensorBoard eksternt eller bruge en af de mange eksisterende Python datavisualiseringsværktøjer.
- PyTorch er ikke en ende-til-ende machine learning udviklingsplatform; det implementerer applikationer til servere, arbejdsstationer og mobile enheder.
Af alle disse grunde ville det være en klog beslutning at søge efter de bedste alternativer til Pytorch.
Mest populære Pytorch-alternativer
Her er listen over bedste alternativer til Pytorch.
1. Tensorflow
TensorFlow er en dyb læringsfokuseret, open source-ramme skabt af Google. Den understøtter også standard machine learning. TensorFlow blev designet med store numeriske beregninger i tankerne snarere end dyb læring.
Ydermere viste det sig også at være ret værdifuldt for udvikling af dyb læring, så Google gjorde det tilgængeligt gratis. TensorFlow tager data i form af multidimensionelle arrays med større dimensioner, kendt som tensorer. Når man beskæftiger sig med enorme mængder af data, er multidimensionelle arrays nyttige.
TensorFlow er baseret på node-edge data flow grafer. Fordi udførelsesmetoden har form af grafer, er det meget nemmere at udføre TensorFlow-kode over en klynge af computere, mens du bruger GPU'er.
C#, Haskell, Julia, R, Ruby, Rust og Scala er blandt de sprog, som TensorFlows fællesskab har skabt support til. TensorFlow tilbyder fordelen ved at have et stort antal adgangspunkter.
Bortset fra sprog, har TensorFlow en lang række værktøjer, der forbinder med det eller er bygget oven på det.
Fordele
- Det er brugervenligt. Hvis du er bekendt med Python, vil det være nemt at hente.
- Støtte fra samfundet. TensorFlow forbedres praktisk talt hver dag af Google og andre organisationers ekspertudviklere.
- TensorFlow Lite kan bruges til at udføre TensorFlow-modeller på mobile enheder.
- Tensorboard er et værktøj til overvågning og visualisering af data. Hvis du vil se dine dybe læringsmodeller i aktion, er dette et glimrende værktøj at bruge.
- Tensorflow.js giver dig mulighed for at bruge JavaScript til at køre real-time deep learning-modeller i browseren.
Ulemper
- TensorFlow har en unik struktur, der gør det sværere at opdage og fejlfinde fejl.
- Der er ingen OpenCL-understøttelse.
- TensorFlow giver ikke mange muligheder for brugere af Windows-operativsystemet. Det låser op for et væld af muligheder for Linux-brugere. Windows-brugere kan dog stadig downloade TensorFlow ved hjælp af anaconda-prompten eller pip-pakken.
- TensorFlow falder bagud med hensyn til at tilbyde symbolske loops for ubestemte sekvenser. Det har en specifik anvendelse til bestemte sekvenser, hvilket gør det til et brugbart system. Som følge heraf omtales det som en lav-niveau API.
2. Keras
Keras er et Python-baseret deep learning-bibliotek, som adskiller det fra andre deep learning-rammer.
Det er et programmeringssprog på højt niveau, der definerer en neurale netværk API definition. Det kan bruges både som en brugergrænseflade og til at forbedre mulighederne for de dybe læringsrammer, som det kører på.
Det er en minimalistisk ramme, der er let og nem at bruge. Af disse grunde er Keras en del af TensorFlows kerne-API. En Keras frontend giver mulighed for hurtig prototyping af neurale netværksmodeller i forskning.
API'en er ligetil at forstå og bruge, med den ekstra bonus, at modeller nemt kan overføres mellem frameworks.
Fordele
- Keras API er enkel at bruge. API'en er veldesignet, objektorienteret og tilpasningsdygtig, hvilket resulterer i en mere behagelig brugeroplevelse.
- Support til distribueret træning og multi-GPU parallelitet er indbygget.
- Keras er et indbygget Python-modul, der giver enkel adgang til det komplette Python-datavidenskabsmiljø. Keras-modeller kan for eksempel bruges ved hjælp af Python scikit-learn API.
- Keras inkluderer præ-trænede vægte til adskillige deep learning-modeller. Vi kan bruge disse modeller direkte til at lave forudsigelser eller udtrække funktioner.
Ulemper
- Det kan være utroligt irriterende at få problemer med backend på lavt niveau regelmæssigt. Disse problemer opstår, når vi forsøger at udføre opgaver, som det ikke var meningen, at Keras skulle udføre.
- Sammenlignet med dens backends kan den være træg på GPU'er og tage længere tid at beregne. Som følge heraf er vi muligvis nødt til at gå på kompromis med hastigheden for at være brugervenlig.
- Sammenlignet med andre pakker såsom sci-kit-learn, er Keras dataforbehandlingskapaciteter ikke så tiltalende.
3. Apache MX Net
En anden fremtrædende Deep Learning ramme er MXNet. MXNet, som blev skabt af Apache Software Foundation, understøtter en række forskellige sprog, herunder JavaScript, Python og C++.
Amazon Web Services understøtter også MXNet i udviklingen af deep learning-modeller. Det er ekstremt skalerbart, hvilket giver mulighed for hurtig modeltræning, og det er kompatibelt med en række forskellige computersprog.
For at optimere hastighed og produktivitet giver MXNet dig mulighed for at blande symbolske og imperative programmeringssprog. Den er baseret på en dynamisk afhængighedsplanlægger, der paralleliserer symbolske og imperative aktiviteter i realtid.
Oven i det gør et grafoptimeringslag symbolsk eksekvering hurtig og hukommelse økonomisk. MXNet er et bærbart og let bibliotek.
Den er drevet af NVIDIA PascalTM GPU'er og skalerbar over flere GPU'er og noder, så du kan træne modeller hurtigere.
Fordele
- Understøtter GPU'er og har en multi-GPU-tilstand.
- Effektiv, skalerbar og lynhurtig.
- Alle større platforme er om bord.
- Modelvisning er enkel, og API'en er hurtig.
- Scala, R, Python, C++ og JavaScript er blandt de understøttede programmeringssprog.
Ulemper
- MXNet har en mindre open source fællesskab end TensorFlow.
- Forbedringer, fejlrettelser og andre forbedringer tager længere tid at implementere på grund af mangel på betydelig fællesskabsstøtte.
- Selvom MxNet er bredt ansat af adskillige firmaer i it-branchen, er det ikke så kendt som Tensorflow.
4. Microsoft CNTK
Microsoft Cognitive Toolkit (CNTK) er en kommercielt levedygtig open source-ramme for distribueret dyb læring. Det bruges generelt til at skabe neurale netværk, men kan også bruges til maskinlæring og kognitiv databehandling.
Den understøtter en række sprog og er nem at bruge i skyen. På grund af disse kvaliteter passer CNTK til en række forskellige AI-applikationer. Selvom vi kan bruge C++ til at påkalde dets funktioner, er den hyppigste mulighed at bruge et Python-program.
Når det kører på flere computere, er Microsoft Cognitive Toolkit anerkendt for at give bedre ydeevne og skalerbarhed end værktøjssæt som Theano eller TensorFlow.
Microsoft Cognitive Toolkit understøtter både RNN og CNN neurale modeller, hvilket gør det velegnet til billed-, håndskrifts- og talegenkendelsesopgaver.
Fordele
- Enkel at integrere med Apache Spark, en dataanalysemotor.
- CNTKs skalerbarhed har gjort det til et populært valg i mange virksomheder. Der er flere optimerede komponenter.
- Tilbyder stabil og god ydeevne.
- Fungerer fint med Azure Cloud, som begge er understøttet af Microsoft.
- Ressourceudnyttelse og styring er effektiv.
Ulemper
- I sammenligning med Tensorflow er der mindre fællesskabsstøtte.
- En stejl indlæringskurve.
- Det mangler et visualiseringskort samt ARM-understøttelse.
5. DeepLearning4j
Hvis Java er dit primære programmeringssprog, er DeepLearning4j en god ramme at bruge. Det er et distribueret deep-learning-bibliotek, der er af kommerciel kvalitet og open source.
Alle hovedtyper af neurale netværksdesign, såsom RNN'er og CNN'er, understøttes. Deeplearning4j er et Java- og Scala-bibliotek til dyb læring.
Det fungerer også fint med Hadoop og Apache Spark. Deeplearning4j er et vidunderligt alternativ til Java-baserede deep learning-løsninger, fordi det også understøtter GPU'er.
Når det kommer til Eclipse Deeplearning4j deep learning-rammeværket, inkluderer nogle af de iøjnefaldende funktioner parallel træning via iterative reduktioner, tilpasning af mikroservicearkitektur og distribuerede CPU'er og GPU'er.
Fordele
- Den har fremragende dokumentation og fællesskabshjælp.
- Apache Spark-integrationen er enkel.
- Den er skalerbar og i stand til at håndtere enorme mængder data.
Ulemper
- I sammenligning med Tensorflow og PyTorch er det mindre populært.
- Java er det eneste tilgængelige programmeringssprog.
Konklusion
At vælge den bedste deep learning-ramme er en vanskelig opgave. Mere, da der er så mange af dem, vokser listen som efterspørgsel efter kunstig intelligens forskning og maskinlæringsapplikationer vokser. Hver ramme har sit eget sæt af fordele og ulemper.
Der skal tages flere overvejelser, herunder sikkerhed, skalerbarhed og ydeevne. I systemer i virksomhedskvalitet bliver pålidelighed endnu vigtigere.
Hvis du lige er startet, er Tensorflow et godt sted at starte. Vælg CNTK, hvis du udvikler et Windows-baseret kommercielt produkt. Hvis du foretrækker Java, så brug DL4J.
Giv en kommentar