Theano vs TensorFlow: Isang Mabilis na Paghahambing ng Mga Framework



Ang artikulong ito sa Theano vs TensorFlow ay magbibigay sa iyo ng isang maikli at malutong paghahambing sa pagitan ng dalawang Frameworks at tutulungan kang pumili ng isa na nababagay sa iyo.

Ang panahon ng Malalim na Pag-aaral at ay nasa rurok nito. Lilikha ito 2.3 Milyon Trabaho sa pamamagitan ng 2020. Sa mga bagong balangkas na paparating tuwing buwan, ang TensorFlow at Theano ay nandoon sandali at nakakuha rin ng isang mahusay na halaga ng katanyagan. Kaya sa artikulong Theano vs TensorFlow na ito, tatalakayin ko ang mga sumusunod na paksa:

Ano ang Theano?

Ang Theano ay maaaring tukuyin bilang isang silid-aklatan para sa Siyentipikong Pag-compute . Ito ay binuo ng Université de Montréal at magagamit mula pa noong 2007.





theano-logo

Pinapayagan kang tukuyin, i-optimize, at suriin ang mga expression ng matematika na kinasasangkutan ng mga multi-dimensional na arrays nang mahusay. Maaari itong tumakbo sa parehong CPU at GPU.



Ano ang TensorFlow?

TensorFlow ay isang open-source software library ng Google Brain para sa programflow ng dataflow sa iba't ibang mga gawain.

pag-uri-uriin ang c ++ array

Ito ay isang simbolikong silid-aklatan ng matematika na ginagamit para sa mga application ng machine learning tulad ng .



Theano vs TensorFlow

Ihahambing namin ang Theano vs TensorFlow batay sa mga sumusunod na Sukatan:

Katanyagan:

Theano TensorFlow
Si Theano na isang dating Framework ay hindi ganun kasikat kabilang sa , Mga Mananaliksik. Ito ay noong unang panahonAng TensorFlow ay ibinaba ang pinakasikat Deep Framework ng Pag-aaral at ginagamit sa maraming pagsasaliksik.

Bilis ng Pagpapatupad:

Theano TensorFlow
Gumagawa ng Mga Gawain na Mas Mabilis kaysa sa TensorFlow. Lalo na ang solong GPU Tasks na tumatakbo, napakabilis sa Theano.Ang bilis ng Pagpapatupad ng TensorFlow ay Mas Mabagal kumpara sa Theano, Ngunit sa Mga Gawain na Multi-GPU kinakailangan itong Manguna.

Mga Pakinabang sa Teknolohiya:

Theano TensorFlow
Sinusuportahan nito ang isang malawak na hanay ng Mga Operasyon.

Kinukuwenta ni Theano ang gradient kapag tinutukoy ang kamalian

Mayroon kang buong kontrol sa mga Optimizer tulad ng kailangan mong i-code ito nang husto.

Ang TensorFlow ay kailangan pa ring makasama sa Theano.

Hindi iyon ang kaso para sa TensorFlow

Nagbibigay ito ng pag-access sa maraming magagaling na Mga Optimizer sa labas ng kahon. Na ginagawang Mas Madali ang Coding

Pagkatugma:

Theano TensorFlow
Ang Keras isang kamangha-manghang Deep Learning Library ay katugma sa Theano. Sumasama na rin Ito.

Mayroon itong Suporta sa Katutubong Windows.

Sinusuportahan din nito ang Mga High-Level Wrappers tulad ng Lasagne.

Ngunit sa kaso ng TensorFlow, hindi pa ito nandiyan. Gayunpaman, sa v2.0 hindi ito ang magiging kaso.

Sa kasalukuyan, kulang ang TensorFlow sa Suporta na ito.

Walang Suporta para sa Lasagne.

Suporta sa Komunidad:

Nag-uuri ang c ++
Theano TensorFlow
Ang Theano ay mayroong Mas Malaking Suporta sa Komunidad dahil bago ito dumating sa TensorFlow.

Mayroon itong Higit na Dokumentasyon kaysa sa TensorFlow

TensorFlow's Online Community Support ay mabilis na Dumarami kasama ang Katanyagan.

Ang dokumentasyon ay medyo mas mababa.

Kakayahang mabasa ang Code:

Paghambingin natin ang Theano vs TensorFlow batay sa kanilang Code. Narito ako Kumukuha ng isang Pangunahing Halimbawa ng Script kung saan kukuha kami ng ilang data ng Phony at isimulan ang pinakamahusay na akma para sa data na iyon upang mahulaan nito ang mga puntos ng data sa hinaharap.

Theano Code:

i-import ang theano import theano.tensor bilang T import numpy # Muli, gumawa ng 100 puntos sa numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Intialise ang Theano model X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1.0, 1.0, (1, 2)), name = 'W') y = W.dot (X) + b # Compute the gradients WRT the mean-squared-error for each parameter cost = T.mean (T.sqr (y - Y)) gradientW = T.grad (gastos = gastos, wrt = W) gradientB = T.grad (gastos = gastos, wrt = b) mga update = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] tren = theano.function (mga input = [X, Y], mga output = gastos, mga update = update, allow_input_downcast = True) para sa i in xrange (0, 201): sanayin (x_data, y_data) i-print ang W.get_value (), b.get_value ()

Katumbas na TensorFlow Code:

i-import ang tensorflow bilang tf import numpy bilang np # Gumawa ng 100 puntos ng data ng phony sa NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Random input y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Bumuo ng isang linear na modelo. b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # I-minimize ang mga parisukat na error. pagkawala = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) tren = optimizer.minimize (loss) # Para sa pagsisimula ng mga variable. init = tf.initialize_all_variables () # Ilunsad ang graph sess = tf.Session () sess.run (init) # Pagkasyahin ang eroplano. para sa hakbang sa xrange (0, 201): sess.run (tren) kung hakbang% 20 == 0: i-print ang hakbang, sess.run (W), sess.run (b) # Ang natututo na pinakaangkop ay W: [[0.100 0.200]], b: [0.300]

Haba ng Karunungan Parehong ang Code ay halos Katulad walang gaanong pagkakaiba. Dalawang magkatulad na nabuo arrays na naglalarawan ng input, at ang target na output. Ngunit kung titingnan natin ang Model Initialization.

Initialization ng Modelo:

# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random .uniform (-1.0, 1.0, (1, 2)), pangalan = 'W') y = W.dot (X) + b

Tulad ng nakikita mo dito na ang TensorFlow ay hindi nangangailangan ng anumang Espesyal na Paggamot ng X at Y Variables. Sa kabilang banda, nangangailangan ang Theano ng labis na pagsisikap upang matiyak na ang mga variable ay Mga Simbolong Input sa Pag-andar. Ang kahulugan ng b at W ay nagpapaliwanag at mas maganda din.

Ang Pag-aaral: Pag-optimize

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano cost = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (gastos = gastos, wrt = W) # (2) gradientB = T.grad (gastos = gastos, wrt = b) # (2) mga update = [[W, W - gradientW * 0.5], [b, b - gradientB * 0.5]] # (2) tren = theano.function (mga input = [X, Y], mga output = gastos, mga update = mga update, allow_input_downcast = True) # (3)

Para sa (1) ang MSE ay halos pareho para sa Theano vs TensorFlow.

Para sa (2) Pagtukoy sa Optimizer ay madali at simple habang nakukuha ito sa kaso ng TensorFlow, ngunit binibigyan ka ng Theanno ng isang kontrol ng lantad sa mga Optimizer kahit na ang haba nito at nagdaragdag ng Pagsisikap sa Pag-verify.

Para sa (3) Pag-andar sa Pagsasanay ang Code ay halos magkatulad

Katawan sa Pagsasanay:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) para sa hakbang sa xrange (0, 201): sess.run (tren) # Theano para sa i sa xrange (0, 201): sanayin (x_data, y_data) i-print ang W.get_value (), b.get_value ()

Ang code para sa Pagsasanay ay halos magkapareho, ngunit ang Encapsulate ng Pagsasagawa ng Grap sa Bagay ng Session ay Konseptwal na Mas Malinis kaysa kay Theano.

Pangwakas na Hatol: Theano vs TensorFlow

Sa isang Pangwakas na Tala, masasabing ang parehong mga API ay mayroong a katulad na Interface . Ngunit ang TensorFlow ay maihahambing mas madali gagamitin mo dahil nagbibigay ito ng maraming Mga Tool sa Pagsubaybay at Pag-debug. Si Theano ang nangunguna Kakayahang magamit at Bilis , ngunit ang TensorFlow ay mas angkop para sa Pag-deploy. Mga papeles o Dokumentasyon para kay Theano ay higit pa sa TensorFlow at TensorFlow na isang bagong Wika ang mga tao ay walang maraming mapagkukunan, upang magsimula sa. Ang mga open-source deep-library tulad ng Keras, Lasagne at Blocks ay naging itinayo sa tuktok ng Theano.

Inaasahan kong sapat ang paghahambing na ito para sa iyo na magpasya kung aling balangkas ang pipiliin, suriin ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang Pagsasanay sa Sertipikasyon na ito ay na-curate ng mga propesyonal sa industriya ayon sa mga kinakailangan at hinihingi sa industriya. Mapagtutuunan mo ang mga konsepto tulad ng pag-andar ng SoftMax, Autoencoder Neural Networks, Pinaghihigpitang Boltzmann Machine (RBM) at gagana sa mga aklatan tulad ng Keras & TFLearn.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng 'Theano vs TensorFlow' at babalikan ka namin.