Kontakt os

PyTorch og Tensorflow er blandt de mest populære biblioteker til dyb læring, som er et underfelt af maskinlæring. På samme måde som den måde, menneskelige hjerner behandler information på, strukturerer dyb læring algoritmer i lag, der skaber dybe kunstige neurale netværk, som den kan lære og træffe beslutninger på egen hånd.
Denne artikel inviterer dig til at se nærmere på disse rammer for dyb læring at forstå deres funktioner, nøgleforskelle og hvordan man vælger mellem PyTorch og TensorFlow.
PyTorch er et maskinlæringsbibliotek, der Facebook AI-forskningslaboratorium udviklet. Det blev først introduceret i 2016 og distribueres på BSD-licensen som gratis open source-software.
Som tidligere forklaret i en af vores artiklerPython har et stort antal Datavidenskabspakker. PyTorch har en Python-grænseflade, og dens funktionaliteter er bygget som Python-klasser og er således en del af Python-pakkeøkosystem. At være et Python-baseret bibliotek gør det lettere at udvide dets funktionaliteter med andre Python-biblioteker, såsom SciPy og NumPy. PyTorch-brugere kan dog også programmere i C/C ++, da biblioteket deler noget C ++ backend med Torch, den dybe læringsramme.
TensorFlow er et open source maskinlæringsbibliotek oprettet af Google Brain-teamet. Dens første udgivelse var i 2015, og den er skrevet i Python, C ++ og CUDA.
På samme måde som PyTorch har TensorFlow også et højt fokus på dybe neurale netværk og gør det muligt for brugeren at oprette og kombinere forskellige typer deep learning-modeller og generere grafer over modellens ydeevne under træning. Selvom det er et Python-bibliotek, introducerede TensorFlow i 2017 desuden en R-grænseflade til R Studio.
Både PyTorch og Tensorflow er meget populære rammer vedrørende anvendelsen af neurale netværk. Faktisk overvejes de ofte af projektledere og dataforskere de foretrukne biblioteker, når de håndterer udviklingen af innovative Deep Learning-applikationer eller endda research.

Desuden har PyTorch og Tensorflow stadig (nogle) forskellige måder at fungere på, selvom de plejede at have meget flere forskelle! Over tid er de blevet så konkurrencedygtige, at stort set alle de gode funktioner i øjeblikket er inkluderet i begge rammer.
Grafer bruges til at beskrive beregninger. En graf er en datastruktur, der består af noder og kanter. Under træningsprocessen for dybe neurale netværk gemmer beregningsgrafer aktiveringerne af det neurale netværk under en fremadpasning. EN tilbageforplantningstrin bruger derefter beregningsgraferne til at beregne opdateringer til hver af netværkets vægte og dermed træne netværket.
For at forstå deres forskelle, lad os først forstå, hvad PyTorch og TensorFlow har til fælles med hensyn til deres grafdefinition. For det første ser de begge enhver model som en DAG (Rettet acyklisk graf) og operere på tensorer. Tensorer beskriver forholdet mellem sæt af objekter til et vektorrum. Ikke desto mindre har de meget forskellige grafdefinitioner.
TensorFlow giver brugeren mulighed for at udføre operationer på tensorer ved at oprette en statusfuld dataflowgraf. Beregningsgrafen defineres statisk, før modellen kan køre.
Tværtimod, PyTorch er mere dynamisk og gør det muligt for brugeren at udføre noderne, mens modellen kører. Med andre ord oprettes beregningsgrafen på hvert udførelsespunkt, og det er muligt at udføre ændringer i grafen under kørselstid.
Af denne grund, PyTorch foretrækkes ofte i forskning da det er mere egnet at oprette brugerdefinerede modeller, og at være dynamisk kan gøre det lettere at interagere med modellernes indre.
Men i 2019, TensorFlow 2.0 indførte også dynamiske grafer, der gjorde det muligt at evaluere operationer ved kørselstid uden at generere en graf, der skal køres senere. Derfor er det, der tidligere var en af de største forskelle mellem begge biblioteker, ikke så signifikant i betragtning af at brugeren kan operere dynamisk eller statisk på begge rammer.
I 2020 introducerede PyTorch TorchServe, som er et modelimplementeringsværktøj. Dette værktøj giver det grundlæggende sæt funktioner, såsom målinger, en API-endepunkt specifikation, et modelarkiveringsværktøj, og så videre.
Til gengæld har TensorFlow TensorFlow servering, som er et indbygget modelimplementeringsværktøj, der bruges til at implementere maskinlæringsmodeller såvel som gRPC-servere. Derudover muliggør det også fjernadgang til gRPC-servere. Samlet set giver TensorFlow Serving brugeren mulighed for at implementere nye algoritmer, mens de bevares serverarkitektur og API'er. Dette værktøj er blevet testet på mange Google-projekter, og det er designet til produktionsmiljøer.
PyTorch og TensorFlow understøtter visualiseringsværktøjer, som letter fejlfinding og giver brugeren mulighed for hurtigt at visualisere resultaterne og have et bredt overblik over modellens træningsproces.
På den ene side har PyTorch ikke nødvendigvis et dedikeret visualiseringsværktøj, men det har det Visdom, et minimalistisk visualiseringsværktøj. Visdom kan bruges med Numpy eller PyTorch. Det giver begrænsede grundlæggende funktioner, men det er også rimeligt nemt at bruge, fleksibelt og understøtter PyTorch-tensorer.
På den anden side har TensorFlow Tensorboard, som tilbyder en række apps, der giver brugeren mulighed for at forstå den dybe læringsmodel gennem Fem forskellige visualiseringer: (1) grafer; (2) lyd; (3) billeder; (4) fordelinger og histogrammer; (5) skalarer.
Alt i alt betragtes Tensorboard som et mere alsidigt visualiseringsværktøj end Visdom, hvorfor PyTorch 1.2.0-versionen har gjort det muligt at integrere Tensorboard også.
Fejlfinding i Python kan udføres med Pythons standard debuggere (f.eks. PyCharm debugger og pdb). Da PyTorch definerer grafer dynamisk ved kørselstid, kan de fleste Python-værktøjer faktisk let integreres.
Det er mere komplekst end PyTorch at debugge TensorFlow-modelkoden. I dette tilfælde skal brugeren lære bibliotekets debugger - tfdbg - samt de ønskede variabler fra en session.
PyTorch og TensorFlow er begge utrolige værktøjer; ellers ville de ikke være så populære. Faktisk, de har foretaget så mange forbedringer gennem årene, at det aldrig har været mere udfordrende at vælge mellem begge.
Når det kommer til at beslutte mellem PyTorch og TensorFlow, er det først afgørende at have en stor forståelse af hvordan neurale netværk vil hjælpe med at opbygge bedre deep learning-modeller til specifikke formål. Værktøjerne følger denne viden og ikke omvendt.
En nyttig og meget enkel tilgang til at vælge mellem begge værktøjer er, at hvis brugeren er vant til at bruge Python som programmeringssprog, så er PyTorch et godt valg, da det er meget Python-venligt.
PyTorch har vundet en masse popularitet blandt forskningsorienterede udviklere, understøtter dynamisk træning. Det er også et glimrende valg til en mere ligetil fejlfindingsoplevelse.
TensorFlow giver forskellige muligheder for modeludvikling på højt niveau og betragtes normalt som et mere modent bibliotek end PyTorch. Desuden giver denne ramme støtte til mobile platforme.
Med hensyn til fællesskab er begge rammer velorganiserede og giver omfattende dokumentation med mange ressourcer og gratis tutorials.
PyTorch og TensorFlow sigter begge mod ekspertise med hensyn til dybe neurale netværk. Begge rammer har løbende forbedret og kopieret hinandens topfunktioner - hvilket gør det meget udfordrende at vælge, hvilken der er bedre.
Mens TensorFlow betragtes som en mere modent bibliotek; PyTorch, har også vist sig at være utroligt magtfulde. Normalt foretrækker Python-entusiaster PyTorch, men det har for det meste vundet popularitet inden for forskningsområdet, mens TensorFlow oftere er forbundet med bygning Kunstig intelligens produkter.


Marketing praktikant med særlig interesse for teknologi og forskning. I min fritid spiller jeg volleyball og forkæler min hund så meget som muligt.

Data Scientist med en dyb passion for teknik, fysik, og matematik. Jeg kan godt lide at lytte til og lave musik, rejse, og ride mountainbike-stier.
People who read this post, also found these interesting: