Aradi Bernadett. 2017/18 ősz. TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 1 / 11

Hasonló dokumentumok
Deep Learning a gyakorlatban Python és LUA alapon Tanítás: alap tippek és trükkök

A TensorFlow rendszer és a mély tanulás. TensorFlow system and deep learning

Deep learning szoftverek

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Ismerkedés a TensorFlow rendszerrel

A kibontakozó új hajtóerő a mesterséges intelligencia

BIG DATA ÉS GÉPI TANULÁS KÖRNYEZET AZ MTA CLOUD-ON KACSUK PÉTER, NAGY ENIKŐ, PINTYE ISTVÁN, HAJNAL ÁKOS, LOVAS RÓBERT

Bevezetés a mesterséges intelligencia mély tanulás eszközrendszerébe

Komputeralgebra rendszerek

Komputeralgebra rendszerek

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Számítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Python tanfolyam Python bevezető I. rész

Neurális Hálók. és a Funkcionális Programozás. Berényi Dániel Wigner GPU Labor

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

MATLAB alapismeretek I.

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

SAT probléma kielégíthetőségének vizsgálata. masszív parallel. mesterséges neurális hálózat alkalmazásával

SZOFTVERFEJLESZTÉS. Földtudományi mérnöki mesterszak / Geoinformatikus-mérnöki szakirány. 2017/18 II. félév. A kurzus ebben a félévben nem indult

Gépi tanulás. Féligellenőrzött tanulás. Pataki Béla (Bolgár Bence)

Statisztikai programcsomagok gyakorlat Pót zárthelyi dolgozat megoldás

IBM SPSS Modeler 18.2 Újdonságok

Mechatronika segédlet 10. gyakorlat

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Adatszerkezetek 1. Dr. Iványi Péter

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

MATLAB alapismeretek II.

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Neurális hálózatok elméleti alapjai TULICS MIKLÓS GÁBRIEL

QGIS. Tematikus szemi-webinárium Térinformatika. Móricz Norbert. Nemzeti Agrárkutatási és Innovációs Központ Erdészeti Tudományos Intézet (NAIK ERTI)

4. gyakorlat: interpolációs és approximációs görbék implementációja

Komputeralgebra Rendszerek

Fordítóprogramok. Aszalós László szeptember 7.

3. ZH-ban a minimum pontszám 15

Neurális hálózatok.... a gyakorlatban

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatszerkezetek I. 1. előadás

3. Szűrés képtérben. Kató Zoltán. Képfeldolgozás és Számítógépes Grafika tanszék SZTE (

Adatmanipuláció, transzformáció, szelekció SPSS-ben

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Gépi tanulás a Rapidminer programmal. Stubendek Attila

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Algoritmusok Tervezése. 1. Előadás MATLAB 1. Dr. Bécsi Tamás

Szövegek C++ -ban, a string osztály

Ellátási lánc optimalizálás P-gráf módszertan alkalmazásával mennyiségi és min ségi paraméterek gyelembevételével

RHadoop. Kocsis Imre Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Neurális hálózatok bemutató

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Osztályok. 4. gyakorlat

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Példa GPS hálózat kiegyenlítésére a Bernese szoftver segítségével. 3. gyakorlat

Grafikus csővezeték és az OpenGL függvénykönyvtár

A maximum likelihood becslésről

S z á m í t ó g é p e s a l a p i s m e r e t e k

Ausztria-Magyarország határon átnyúló közlekedési modell készítése

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

Hozzáférés a HPC-hez, kezdő lépések (előadás és demó)

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Java gyakorlat feladatai e s megolda sai ( )

7. fejezet: Mutatók és tömbök

Bevezetés a Python használatába

E-tananyag Matematika 9. évfolyam Függvények

Informatika terméktervezőknek

9. Előadás. (9. előadás) Lineáris egyr.(3.), Sajátérték április / 35

PowerShell v2.0 alapok. Nagy Miklós

Térinformatikai programozás Pythonban

8. gyakorlat Pointerek, dinamikus memóriakezelés

INFORMATIKAI ALAPISMERETEK

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Maximum kiválasztás tömbben

KONVOLÚCIÓS NEURONHÁLÓK. A tananyag az EFOP pályázat támogatásával készült.

Az ellátási láncok algoritmikus szintézise

7. Strukturált típusok

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Az informatika kulcsfogalmai

Descartes-féle, derékszögű koordináta-rendszer

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

Algoritmizálás és adatmodellezés tanítása 6. előadás

OpenOffice.org mint fejlesztési platform

Absztrakt adatstruktúrák A bináris fák

Nagy számok törvényei Statisztikai mintavétel Várható érték becslése. Dr. Berta Miklós Fizika és Kémia Tanszék Széchenyi István Egyetem

Intelligens Rendszerek Gyakorlata. Neurális hálózatok I.

LibreOffice Makró Basic

Lineáris regressziós modellek 1

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

TANMENET. a matematika tantárgy tanításához 11.E osztályok számára

Matematikai alapok és valószínőségszámítás. Statisztikai becslés Statisztikák eloszlása

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Átírás:

TensorFlow konvolúciós hálózatokhoz Aradi Bernadett 2017/18 ősz TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 1 / 11

Tensorflow import tensorflow as tf szoftverkönyvtár neurális hálózatokhoz a Google Brain csapata hozta létre, open-source (2015 nov. óta) hasonló szoftverek: Caffe (UC Berkeley), Theano (Université de Montréal) segítségével a számítások eloszthatóak CPU-kon, GPU-kon, különböző eszközökön számítások vizualizációja: TensorBoard használatával Data flow graphs: 1 gráf csomópontja: matematikai műveletek 2 gráf élei: adattömbök (tenzorok) C++ backend, ezzel való kapcsolat: Session -ön keresztül A Tensorflow különválasztja a számítások definiálását a végrehajtásuktól! 1 graph megkonstruálása (TF látja, mit kell Pythonon kívül csinálni) 2 launch the graph in a session (lefuttatjuk a graph-ot) TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 2 / 11

Tenzorok tensor = multidimenziós adattömb 0D: szám, 1D: vektor, 2D: mátrix,... tömbök definiálása: tf.constant paranccsal Építsünk egy graph-ot! matrix1 = tf.constant([[2.],[2.]]) matrix2 = tf.constant([[3.,3,3]]) szorzat = tf.matmul(matrix1, matrix2) print(szorzat) # mit kapunk? Futtassuk le a graph-ot egy session-ben! # 2x1-es mátrix # 1x3-as mátrix # mátrixszorzás sess = tf.session() # Session: környezet, ahol #az operátorokat végrehajtjuk, tenzorokat kiértékeljük eredmeny = sess.run(szorzat) print(eredmeny) # eredmény: numpy ndarray formátumú sess.close() # lezárjuk a munkamenetet TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 3 / 11

Vizualizáció TensorBoardban tensorboard --logdir= /your/path/here tensorboard --logdir=training:c:/users/.../graphs import tensorflow as tf a = tf.constant(2) b = tf.constant(3) x = tf.add(a,b) # graph definiálása: session futtatása előtt writer = tf.summary.filewriter(./graphs, sess.graph) print(sess.run(x)) writer.close() Megkönnyítjük a helyzetünket, ha mi nevezzük el a változókat: a = tf.constant(2,name= a ) b = tf.constant(3,name= b ) x = tf.add(a,b,name= osszeg ) TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 4 / 11

tf.constant máshogy a = tf.zeros([2, 3], tf.int32) input = tf.constant([[0, 1], [2, 3]]) b = tf.zeros like(input) c = tf.fill([2, 3], 8) d = tf.linspace(10.0, 13.0, 4) e = tf.range(5) f = tf.random normal([2, 3]) print(sess.run(a)) print(sess.run(b)) print(sess.run(c)) print(sess.run(d)) print(sess.run(e)) print(sess.run(f)) # nullákkal kitöltés # számmal kitöltés # számok egyenlő távolságra # véletlen számok normális eloszlásból TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 5 / 11

tf.variable a tanítandó változók a = tf.variable(2, name= scalar ) # szám b = tf.variable([2, 3], name= vector ) # vektor c = tf.variable([[0, 1], [2, 3]], name= matrix ) # mátrix d = tf.variable(tf.ones([2, 3])) # mátrix egyesekkel kitöltve # a változókat inicializálni kell használat előtt! init = tf.global variables initializer() sess.run(init) init ab = tf.variables initializer([a, b]) sess.run(init ab) # az összes változó inicializálása # néhány változó inicializálása # egy változó inicializálása sess.run(d.initializer) print(d) # ez még nem az érték print(d.eval()) # ez igen, ugyanaz mint: print(sess.run(d)) TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 6 / 11

Session jellegzetességei a = tf.variable(10) a.assign(100) # assign: hozzárendelés sess.run(a.initializer) print(a.eval()) 10 maradt az értéke, mert az assign-t is le kell futtatni a sessionben! a = tf.variable(10) a2 = a.assign(100) # sess.run(a.initializer) # ez a sor feleslegessé válik, mert az assign inicializálja a változót sess.run(a2) print(a.eval()) TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 7 / 11

Session jellegzetességei 2. Minden session fenntartja a saját változatát a változóból! a = tf.variable(10) sess1 = tf.session() sess2 = tf.session() sess1.run(a.initializer) sess2.run(a.initializer) print(sess1.run(a.assign add(10))) print(sess2.run(a.assign sub(2))) print(sess1.run(a.assign add(100))) print(sess2.run(a.assign sub(50))) sess1.close() sess2.close() TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 8 / 11

tf.placeholder a még ismeretlen adat 1 létrehozzuk a graphot 2 egy sessionben lefuttatjuk a graph operációit Összerakhatjuk a graphot úgy, hogy még nem tudjuk az értékeket! a = tf.placeholder(tf.float32, shape=[3]) # placeholder, 3 elemű vektor b = tf.constant([5, 5, 5], tf.float32) # ugyanolyan alakú konstans c = a + b # print(sess.run(c)) # ez így hibát dob, hiányzik az érték print(sess.run(c, feed dict={a: [1, 2, 3]})) # meg kell etetni az a-t a = tf.placeholder(tf.float32) b = tf.constant(10.0) c = a + b list = [1, 2, 3] # több értékkel is megetethetjük a placeholdert for values in list: print(sess.run(c, feed dict={a: values})) TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 9 / 11

Általános struktúra modellépítéshez Graph összerakása 1 Adatok beolvasása (placeholderek az inputok és outputok számára) 2 Súlyok definiálása (variables) 3 Modell definiálása 4 Veszteségfüggvény definiálása 5 Optimalizáló függvény definiálása Számítás 1 Session létrehozása 2 Változók inicializálása 3 Tanítás (ez lefuttatja a becslést, kiszámítja a gradienseket és megteszi a szükséges változtatásokat a hiba minimalizálásához) 4 Szükséges értékek lekérdezése TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 10 / 11

Optimalizáló eljárások: https://www.tensorflow.org/api_guides/python/train#optimizers Rétegek: https://www.tensorflow.org/api_docs/python/tf/layers TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 11 / 11