„Theano“ ir „TensorFlow“: greitas karkasų palyginimas

Šis straipsnis apie „Theano“ ir „TensorFlow“ suteiks jums trumpą ir aiškų dviejų sistemų palyginimą ir padės išsirinkti jums tinkamiausią.

Eros Gilus mokymasis ir yra didžiausias. Tai ketina kurti 2,3 mln Darbai iki 2020 m. Kiekvieną mėnesį atsirandant naujoms sistemoms, „TensorFlow“ ir „Theano“ jau kurį laiką buvo ten ir sulaukė nemažai populiarumo. Taigi šiame „Theano vs TensorFlow“ straipsnyje aptarsiu šias temas:

Kas yra „Theano“?

„Theano“ galima apibrėžti kaip Mokslinis skaičiavimas . Jį sukūrė Monrealio universitetas ir jis buvo prieinamas nuo 2007 m.

theano-logo

Tai leidžia efektyviai apibrėžti, optimizuoti ir įvertinti matematines išraiškas, apimančias daugialypius masyvus. Jis gali veikti tiek procesoriuje, tiek GPU.

Kas yra „TensorFlow“?

„TensorFlow“ yra „Google Brain“ atviro kodo programinės įrangos biblioteka, skirta duomenų srautui programuoti įvairioms užduotims atlikti.

Tai simbolinė matematikos biblioteka, naudojama mašininio mokymosi programoms, tokioms kaip .

„Theano“ ir „TensorFlow“

Palyginsime „Theano“ ir „TensorFlow“ pagal šias metrikas:

Populiarumas:

Theano „TensorFlow“
Tai yra senas pagrindas nėra toks populiarus tarp , Tyrinėtojai. Kažkada tai buvo„TensorFlow“ nuleidžia rankas Garsiausios „Deep Learning Framework“ ir naudojama daugelyje tyrimų.

Vykdymo greitis:

„cloudera“ sertifikuotas „Apache hadoop“ kūrėjas
Theano „TensorFlow“
Užduotis atlieka greičiau nei „TensorFlow“. Ypač greitai „Theano“ veikia vienos GPU užduotys.„TensorFlow“ vykdymo greitis yra lėtesnis, palyginti su „Theano“, tačiau „Multi-GPU“ užduotyse jis užima pirmaujančią vietą.

Technologijos pranašumai:

Theano „TensorFlow“
Jis palaiko platų operacijų spektrą.

Theano apskaičiuodamas gradientą, nustatydamas klaida.

nustatyti java kelią languose

Jūs visiškai kontroliuojate „Optimizer“, nes turite jį koduoti.

„TensorFlow“ vis tiek turi prilygti Theano.

Tai nėra „TensorFlow“ atvejis

Tai suteikia prieigą prie daugybės gerų optimizatorių. Dėl to lengviau koduoti

Suderinamumas:

Theano „TensorFlow“
„Keras“ yra nuostabi „Deep Learning“ biblioteka, suderinama su „Theano“. Tai gerai integruojasi.

Jis turi „Windows“ palaikymą.

Jis taip pat palaiko aukšto lygio vyniotuvus, tokius kaip „Lasagne“.

Tačiau „TensorFlow“ atveju tai dar nėra. Tačiau v2.0 versijoje to nebus.

Šiuo metu „TensorFlow“ trūksta šios paramos.

Nėra palaikymo „Lasagne“.

Bendruomenės parama:

Theano „TensorFlow“
„Theano“ teikia didesnę bendruomenės paramą, kaip tai buvo dar prieš „TensorFlow“.

Jis turi daugiau dokumentų nei „TensorFlow“

„TensorFlow“ internetinė bendruomenės parama sparčiai auga populiarėjant.

Dokumentacija yra palyginti mažesnė.

Kodo įskaitomumas:

Palyginkime „Theano“ ir „TensorFlow“ pagal jų kodą. Čia aš imuosi pagrindinio scenarijaus pavyzdžio, kuriame mes paimsime keletą apsimestinių duomenų ir inicijuosime geriausiai tinkančius šiems duomenims, kad jis galėtų numatyti būsimus duomenų taškus.

„Theano“ kodas:

importuoti theano importuoti theano.tensor kaip T importuoti numpy # Vėlgi, padarykite 100 taškų numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0,3 # Intializuokite „Theano“ modelį X = T.matrica () Y = T.vektorius () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1,0, 1,0, (1, 2)), vardas = 'W' y = W.dot (X) + b # Apskaičiuokite gradientus WRT kiekvieno parametro sąnaudų vidutinio kvadrato paklaida = T. Vidutinis (T.qqr (y - Y)) gradientasW = T.grad (kaina = kaina, wrt = W) gradientasB = T.grad (kaina = kaina, wrt = b) atnaujinimai = [[W, W - gradientas W * 0,5], [b, b - gradientasB * 0,5]] traukinys = theano.funkcija (įėjimai = [X, Y], išėjimai = kaina, atnaujinimai = atnaujinimai, allow_input_downcast = True) i i xrange (0, 201): traukinys (x_data, y_data) spausdinti W.get_value (), b.get_value ()

Lygiavertis „TensorFlow“ kodas:

importuoti tensorflow kaip tf importuoti numpy kaip np # Padaryti 100 suklastotų duomenų taškų programoje NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Atsitiktinis įvestis y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # Sukonstruokite tiesinį modelį. b = tf.Kintamasis (tf.zeros ([1])) W = tf.Kintamasis (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Sumažinkite klaidas kvadratu. nuostolis = tf.reduce_mean (tf.kvadratas (y - y_data)) optimizatorius = tf.train.GradientDescentOptimizer (0.5) traukinys = optimizatorius.minimize (nuostolis) # Kintamųjų inicializavimui. init = tf.initialize_all_variables () # Paleiskite grafiką sess = tf.Session () sess.run (init) # Pritaikykite plokštumą. žingsniui xrange (0, 201): sess.run (traukinys), jei% 20 žingsnis == 0: spausdinimo žingsnis, sess.run (W), sess.run (b) # Sužinoja, kad geriausiai tinka W: [[0.100 0,200]], b: [0,300]

Ilgis išmintingas Abu kodeksai yra beveik Panašus nėra didelio skirtumo. Du identiškai sugeneruoti masyvai, apibūdinantys įvestį ir tikslinę išvestį. Bet jei pažvelgsime į modelio inicijavimą.

Modelio inicijavimas:

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

Kaip matote čia, „TensorFlow“ nereikia specialaus X ir Y kintamųjų gydymo. Kita vertus, Theano reikalauja papildomų pastangų, kad įsitikintų, jog kintamieji yra Simboliniai įėjimai į Funkciją. B ir W apibrėžimai yra aiškinamieji ir gražesni.

Mokymasis: optimizavimas

# 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) gradientas W = T.grad (kaina = kaina, wrt = W) # (2) gradientas B = T.grad (kaina = kaina, wrt = b) # (2) atnaujinimai = [[W, W - gradientasW * 0.5], [b, b - gradientasB * 0.5]] # (2) traukinys = theano.funkcija (įėjimai = [X, Y], išėjimai = kaina, atnaujinimai = atnaujinimai, allow_input_downcast = True) # (3)

Dėl (1) MSE yra beveik tas pats „Theano“ ir „TensorFlow“.

mokytis informatikos žingsnis po žingsnio

Už (2) „Optimizer“ yra lengva ir paprasta, kaip tai būna „TensorFlow“ atveju, tačiau „Theanno“ suteikia jums daugybę valdymo, nes tai gana ilga ir padidina tikrinimo pastangas.

Už (3) Mokymo funkcija kodas beveik panašus

Treniruočių įstaiga:

# TensorFlow init = tf.inicial_all_variables () sess = tf.Session () sess.run (init) xrange (0, 201) žingsniui: sess.run (train) # Theano i xrange (0, 201): traukinys (x_data, y_data) spausdinti W.get_value (), b.get_value ()

Mokymo kodas yra beveik identiškas, tačiau grafiko vykdymo uždėjimas seanso objekte yra Konceptualiai švaresnė nei Theano.

Galutinis nuosprendis: „Theano“ ir „TensorFlow“

Baigiamojoje pastaboje galima sakyti, kad abi API turi panaši sąsaja . Tačiau „TensorFlow“ yra palyginti lengviau yo naudoti, nes tai suteikia daug stebėjimo ir derinimo įrankių. Theano užima lyderio poziciją Naudingumas ir greitis , bet „TensorFlow“ geriau tinka diegimui. Dokumentų tvarkymas arba Dokumentacija nes „Theano“ yra daugiau nei „TensorFlow“ ir „TensorFlow“ yra nauja kalba, pirmiausia žmonės neturi daug išteklių. Buvo atviro kodo giliosios bibliotekos, tokios kaip „Keras“, „Lasagne“ ir „Blocks“ pastatytas ant Theano.

Tikiuosi, kad šio palyginimo pakako, kad galėtumėte nuspręsti, kurią sistemą pasirinkti, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. Šiuos sertifikavimo mokymus kuruoja pramonės specialistai pagal pramonės reikalavimus ir reikalavimus. Išmoksite tokias sąvokas kaip „SoftMax“ funkcija, „Autoencoder“ neuroniniai tinklai, „Restricted Boltzmann Machine“ (RBM) ir dirbsite su tokiomis bibliotekomis kaip „Keras & TFLearn“.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje „Theano vs TensorFlow“ ir mes su jumis susisieksime.