Kung binabasa mo ito, walang alinlangan na nasimulan mo na ang iyong paglalakbay sa malalim na pag-aaral. Kung bago ka sa paksang ito, ang malalim na pag-aaral ay isang add-on na gumagamit ng mga natatanging istrukturang tulad ng utak na tinatawag na mga artificial neural network upang bumuo ng mga computer na tulad ng tao na tumutugon sa mga isyu sa totoong mundo.
Upang tumulong sa pagbuo ng mga disenyong ito, ang mga tech behemoth tulad ng Google, Facebook, at Uber ay bumuo ng iba't ibang mga framework para sa Python deep learning environment, na ginagawang mas simple ang pag-unawa, paggawa, at pagsasanay ng magkakaibang neural network.
Ang isang malalim na balangkas ng pag-aaral ay isang piraso ng software na ginagamit ng mga akademya at data scientist upang lumikha at magsanay ng mga modelo ng malalim na pag-aaral.
Ang layunin ng mga balangkas na ito ay gawing posible para sa mga indibidwal na sanayin ang kanilang mga modelo nang hindi kinakailangang maunawaan ang mga diskarte sa likod malalim na pag-aaral, mga neural network, at machine learning.
Sa pamamagitan ng isang mataas na antas na interface ng programming, ang mga framework na ito ay nagbibigay ng mga bloke ng gusali para sa pagbuo, pagsasanay, at pag-verify ng mga modelo.
Titingnan natin ang TensorFlow, Keras, Apache MXNet, Microsoft CNTK, at DeepLearing4j bilang mga alternatibo sa PyTorch, na malawakang ginagamit malalim na balangkas ng pag-aaral.
Ano ang Pytorch?
PyTorch ay isang libre, open-source machine learning library na binuo gamit ang Torch Python library.
Nilikha ito ng AI Research group ng Facebook at na-publish bilang libre at open-source na library noong Enero 2016 na may mga application sa computer vision, malalim na pag-aaral, at natural na pagproseso ng wika.
Mayroon itong kailangan at Pythonic na programming language na sumusuporta sa code bilang isang modelo, nagpapadali sa pag-debug, at tugma sa iba pang sikat na scientific computing library, habang nananatiling mahusay at pinapagana ang mga hardware accelerators tulad ng mga GPU.
Ang PyTorch ay lumago sa katanyagan sa mga malalim na pag-aaral ng mga mananaliksik salamat sa pagtutok nito sa kakayahang magamit at masusing pagsasaalang-alang sa pagganap.
Naglalaman ito ng pangunahing istraktura ng data, Tensor, na isang multi-dimensional na array na katulad ng Numpy arrays, na nagbibigay-daan sa mga programmer na madaling magdisenyo ng isang kumplikadong neural network.
Ito ay nagiging mas popular sa kasalukuyang mga sektor at sa akademikong komunidad dahil sa kanyang flexibility, bilis, at kadalian ng pagpapatupad, na ginagawa itong isa sa mga pinakasikat na deep learning tool.
Mga Pangunahing Tampok ng Pytorch
- Ang PyTorch ay Python-centric, o "pythonic," dahil nilayon ito para sa malalim na pagsasama sa Python programming sa halip na magsilbi bilang isang interface sa isang library na binuo sa ibang wika.
- Simpleng Matuto – Sinusunod ng PyTorch ang parehong istraktura gaya ng tradisyonal na programming at masusing naidokumento, kasama ang komunidad ng developer na laging sinusubukang pagandahin ito. Kaya't simpleng matutunan para sa parehong mga programmer at hindi programmer.
- Maaaring hatiin ng PyTorch ang computational work sa ilang CPU o GPU mga core gamit ang data parallelism capability. Bagama't ang katulad na paralelismo ay maaaring magawa sa iba pang mga diskarte sa machine-learning, ginagawang mas madali ng PyTorch.
- Pag-debug: Ang isa sa maraming malawak na naa-access na mga tool sa pag-debug ng Python (halimbawa, mga tool ng pdb at ipdb ng Python) ay maaaring gamitin upang i-debug ang PyTorch.
- Sinusuportahan ng PyTorch ang mga dynamic na computational graph, na nagpapahiwatig na ang pag-uugali ng network ay maaaring dynamic na baguhin sa panahon ng runtime.
- Ang PyTorch ay may kasamang iba't ibang espesyal na nilikhang mga module, tulad ng torchtext, torchvision, at torchaudio, na magagamit upang harapin ang magkakaibang larangan ng malalim na pag-aaral, gaya ng NLP, computer vision, at pagpoproseso ng boses.
Mga Limitasyon ng Pytorch
- Limitadong pagsubaybay at visualization interface: Habang ang TensorFlow ay may kasamang makapangyarihang visualization tool para sa pagbuo ng model graph (TensorBoard), ang PyTorch ay kasalukuyang kulang sa feature na ito. Bilang resulta, maaaring kumonekta ang mga developer sa TensorBoard sa labas o gamitin ang isa sa maraming umiiral na Python mga tool sa visualization ng data.
- Ang PyTorch ay hindi isang end-to-end machine learning platform ng pag-unlad; nag-deploy ito ng mga application sa mga server, workstation, at mobile device.
Para sa lahat ng mga kadahilanang ito, ang paghahanap ng pinakamahusay na mga alternatibo sa Pytorch ay isang matalinong desisyon.
Pinakatanyag na mga alternatibong Pytorch
Narito ang listahan ng mga pinakamahusay na alternatibo sa Pytorch.
1. Tensorflow
TensorFlow ay isang malalim na nakatuon sa pag-aaral, open-source na framework na ginawa ng Google. Sinusuportahan din nito ang pamantayan machine learning. Dinisenyo ang TensorFlow na nasa isip ang malalaking kalkulasyon sa numero, sa halip na malalim na pag-aaral.
Higit pa rito, napatunayang ito ay lubos na mahalaga para sa malalim na pag-unlad ng pag-aaral pati na rin, kaya ginawa itong available ng Google nang libre. Kinukuha ng TensorFlow ang data sa anyo ng mga multi-dimensional na array na may mas malalaking dimensyon, na kilala bilang tensor. Kapag nakikitungo sa napakalaking dami ng data, nakakatulong ang mga multi-dimensional na array.
Ang TensorFlow ay batay sa mga graph ng daloy ng data ng node-edge. Dahil ang paraan ng pagpapatupad ay nasa anyo ng mga graph, mas madaling magsagawa ng TensorFlow code sa isang kumpol ng mga computer habang gumagamit ng mga GPU.
Ang C#, Haskell, Julia, R, Ruby, Rust, at Scala ay kabilang sa mga wika na nilikha ng komunidad ng TensorFlow ng suporta. Nag-aalok ang TensorFlow ng benepisyo ng pagkakaroon ng malaking bilang ng mga access point.
Bukod sa mga wika, ang TensorFlow ay may malaking hanay ng mga tool na kumokonekta dito o binuo sa ibabaw nito.
Bentahe
- Ito ay user-friendly. Kung pamilyar ka sa Python, madali itong kunin.
- Suporta mula sa komunidad. Ang TensorFlow ay halos araw-araw na pinapabuti ng Google at ng mga dalubhasang developer ng iba pang organisasyon.
- Maaaring gamitin ang TensorFlow Lite para magsagawa ng mga modelong TensorFlow sa mga mobile device.
- Ang Tensorboard ay isang tool para sa pagsubaybay at pagpapakita ng data. Kung gusto mong panoorin ang iyong mga modelo ng malalim na pag-aaral sa pagkilos, ito ay isang mahusay na tool upang magamit.
- Binibigyang-daan ka ng Tensorflow.js na gumamit ng JavaScript upang magpatakbo ng mga real-time na deep learning na modelo sa browser.
Mga Disbentaha
- Ang TensorFlow ay may natatanging istraktura, na nagpapahirap sa pagtuklas at pag-debug ng mga error.
- Walang suporta sa OpenCL.
- Ang TensorFlow ay hindi nagbibigay ng maraming kakayahan para sa mga user ng Windows operating system. Nagbubukas ito ng napakaraming kakayahan para sa mga gumagamit ng Linux. Gayunpaman, ang mga user ng Windows ay maaari pa ring mag-download ng TensorFlow gamit ang anaconda prompt o ang pip package.
- Nahuhuli ang TensorFlow sa mga tuntunin ng pag-aalok ng mga simbolikong loop para sa mga hindi tiyak na pagkakasunud-sunod. Ito ay may partikular na paggamit para sa mga partikular na sequence, na ginagawa itong isang magagamit na sistema. Bilang resulta, ito ay tinutukoy bilang isang mababang antas ng API.
2. Keras
Keras ay isang Python-based na deep learning library, na nakikilala ito sa iba pang deep learning frameworks.
Ito ay isang mataas na antas ng programming language na tumutukoy sa a neural network Depinisyon ng API. Maaari itong magamit pareho bilang isang user interface at upang mapabuti ang mga kakayahan ng malalim na mga balangkas sa pag-aaral kung saan ito tumatakbo.
Ito ay isang minimalist na balangkas na magaan at madaling gamitin. Para sa mga kadahilanang ito, ang Keras ay bahagi ng pangunahing API ng TensorFlow. Ang isang front end ng Keras ay nagbibigay-daan para sa mabilis na prototyping ng mga modelo ng neural network sa pananaliksik.
Ang API ay diretsong maunawaan at gamitin, kasama ang karagdagang bonus ng pagpayag sa mga modelo na madaling mailipat sa pagitan ng mga balangkas.
Bentahe
- Ang Keras API ay simpleng gamitin. Ang API ay mahusay na dinisenyo, object-oriented, at madaling ibagay, na nagreresulta sa isang mas kasiya-siyang karanasan ng user.
- Naka-built-in ang suporta para sa distributed na pagsasanay at multi-GPU parallelism.
- Ang Keras ay isang Python native module na nagbibigay ng simpleng access sa kumpletong Python data science environment. Ang mga modelo ng Keras, halimbawa, ay maaaring gamitin gamit ang Python scikit-learn API.
- Kasama sa Keras ang mga pre-trained na timbang para sa ilang deep learning models. Maaari naming gamitin ang mga modelong ito nang direkta upang gumawa ng mga hula o mag-extract ng mga feature.
Mga Disbentaha
- Maaari itong maging hindi kapani-paniwalang nakakainis na makakuha ng mga isyu sa backend na mababa ang antas nang regular. Ang mga problemang ito ay bumangon kapag sinubukan naming gawin ang mga gawain na hindi sinadyang gawin ni Keras.
- Kung ihahambing sa mga backend nito, maaaring matamlay ito sa mga GPU at mas matagal mag-compute. Bilang resulta, maaaring kailanganin nating ikompromiso ang bilis para sa pagiging kabaitan ng gumagamit.
- Kung ihahambing sa iba pang mga pakete tulad ng sci-kit-learn, ang mga kakayahan ng Keras data-preprocessing ay hindi kasing-akit.
3. Apache MX Net
Isa pang prominenteng Balangkas ng Deep Learning ay MXNet. Ang MXNet, na nilikha ng Apache Software Foundation, ay sumusuporta sa iba't ibang wika, kabilang ang JavaScript, Python, at C++.
Sinusuportahan din ng Amazon Web Services ang MXNet sa pagbuo ng mga modelo ng malalim na pag-aaral. Ito ay lubhang nasusukat, na nagbibigay-daan para sa mabilis na pagsasanay sa modelo, at ito ay tugma sa iba't ibang wika ng computer.
Upang ma-optimize ang bilis at produktibidad, pinapayagan ka ng MXNet na pagsamahin ang mga simboliko at kinakailangang mga programming language. Ito ay nakabatay sa isang dynamic na dependency scheduler na parallelizes symbolic at imperative na aktibidad sa real-time.
Higit pa rito, ginagawang mabilis ng isang layer ng pag-optimize ng graph ang simbolikong pagpapatupad at matipid ang memorya. Ang MXNet ay isang portable at magaan na library.
Pinapatakbo ito ng mga NVIDIA PascalTM GPU at nasusukat sa ilang GPU at node, na nagbibigay-daan sa iyong sanayin ang mga modelo nang mas mabilis.
Bentahe
- Sinusuportahan ang mga GPU at may multi-GPU mode.
- Mahusay, nasusukat, at napakabilis ng kidlat.
- Nakasakay na ang lahat ng pangunahing platform.
- Simple ang paghahatid ng modelo, at mabilis ang API.
- Ang Scala, R, Python, C++, at JavaScript ay kabilang sa mga programming language na sinusuportahan.
Mga Disbentaha
- Ang MXNet ay may mas maliit open source komunidad kaysa sa TensorFlow.
- Ang mga pagpapabuti, pag-aayos ng bug, at iba pang mga pagpapabuti ay mas tumatagal upang ipatupad dahil sa kakulangan ng makabuluhang suporta sa komunidad.
- Ang MxNet, bagama't malawak na nagtatrabaho sa maraming kumpanya sa industriya ng IT, ay hindi gaanong kilala bilang Tensorflow.
4. Microsoft CNTK
Microsoft Cognitive Toolkit (CNTK) ay isang open-source na framework na magagamit sa komersyo para sa distributed deep learning. Ito ay karaniwang ginagamit upang lumikha neural network, ngunit maaari ding gamitin para sa machine learning at cognitive computing.
Sinusuportahan nito ang iba't ibang wika at simpleng gamitin sa cloud. Dahil sa mga katangiang ito, ang CNTK ay angkop para sa iba't ibang mga AI application. Bagama't maaari nating gamitin ang C++ upang i-invoke ang mga function nito, ang pinakamadalas na opsyon ay ang paggamit ng Python program.
Kapag tumatakbo sa ilang computer, kinikilala ang Microsoft Cognitive Toolkit na nagbibigay ng mas mahusay na performance at scalability kaysa sa mga toolkit tulad ng Theano o TensorFlow.
Sinusuportahan ng Microsoft Cognitive Toolkit ang parehong RNN at CNN neural na mga modelo, na ginagawa itong angkop para sa mga gawain sa imahe, sulat-kamay, at pagkilala sa pagsasalita.
Bentahe
- Simpleng isama sa Apache Spark, isang data analytics engine.
- Dahil sa scalability ng CNTK, naging popular itong pagpipilian sa maraming negosyo. Mayroong ilang mga na-optimize na bahagi.
- Nag-aalok ng matatag at mahusay na pagganap.
- Gumagana nang maayos sa Azure Cloud, na parehong sinusuportahan ng Microsoft.
- Ang paggamit at pamamahala ng mapagkukunan ay mahusay.
Mga Disbentaha
- Kung ihahambing sa Tensorflow, mas kaunti ang suporta ng komunidad.
- Isang matarik na kurba ng pag-aaral.
- Wala itong visualization board pati na rin ang suporta sa ARM.
5. DeepLearning4j
Kung Java ang iyong pangunahing programming language, ang DeepLearning4j ay isang magandang framework na gagamitin. Isa itong distributed deep-learning library na commercial-grade at open-source.
Ang lahat ng pangunahing uri ng mga disenyo ng neural network, gaya ng mga RNN at CNN, ay sinusuportahan. Ang Deeplearning4j ay isang library ng Java at Scala para sa malalim na pag-aaral.
Ito ay mahusay na gumagana sa Hadoop at Apache Spark pati na rin. Ang Deeplearning4j ay isang magandang alternatibo para sa Java-based na deep learning solution dahil sinusuportahan din nito ang mga GPU.
Pagdating sa Eclipse Deeplearning4j deep learning framework, ang ilan sa mga namumukod-tanging feature ay kinabibilangan ng parallel training sa pamamagitan ng iterative reductions, micro-service architecture adaptation, at mga distributed na CPU at GPU.
Bentahe
- Mayroon itong mahusay na dokumentasyon at tulong ng komunidad.
- Ang pagsasama ng Apache Spark ay simple.
- Ito ay nasusukat at may kakayahang pangasiwaan ang napakalaking dami ng data.
Mga Disbentaha
- Kung ihahambing sa Tensorflow at PyTorch, hindi gaanong sikat.
- Ang Java ay ang tanging programming language na magagamit.
Konklusyon
Ang pagpili ng pinakamahusay na deep learning framework ay isang mahirap na gawain. Higit pa dahil napakarami sa kanila, lumalaki ang listahan bilang demand para sa artificial intelligence lumalaki ang mga application sa pananaliksik at machine learning. Ang bawat balangkas ay may sariling hanay ng mga kalamangan at kahinaan.
Maraming pagsasaalang-alang ang dapat gawin, kabilang ang seguridad, scalability, at performance. Sa mga enterprise-grade system, ang pagiging maaasahan ay nagiging mas mahalaga.
Kung nagsisimula ka pa lang, ang Tensorflow ay isang magandang lugar para magsimula. Piliin ang CNTK kung gumagawa ka ng produktong komersyal na nakabatay sa Windows. Kung mas gusto mo ang Java, gamitin ang DL4J.
Mag-iwan ng Sagot