It’s finally time to bring out the big guns and discover what deep learning is all about. In this chapter, you’ll convert the basic neural network into something that works much better on images. The secret ingredient is the convolutional layer.
Got GPU?
Having a GPU is no longer a luxury. Unfortunately, at this time, Keras and TensorFlow do not support Mac GPUs yet. Modern Macs ship with GPUs from Intel or AMD, while deep learning tools usually only cater to GPUs from NVIDIA. Older Macs may still have an NVIDIA on board, but these are often too old. Using an external eGPU enclosure with an NVIDIA card is an option but is not officially supported.
Most machine-learning practitioners train their models on a PC running Linux that has one or more NVIDIA GPUs, or in the cloud. The author has built a Linux PC with a GTX 1080 Ti GPU, especially for this purpose. If you’re serious about deep learning, this is an expense worth making.
If all you have is a Mac, you’ll need a lot of patience to train the models in this chapter. Because we want everyone to be able to follow along, the book’s download includes the full Jupyter notebooks that were used to train the models, as well as the final trained version, so you can skip training the models if your computer isn’t up to the task.
Note: Even though they have limitations, the big benefit of Create ML and Turi Create is that they support most Mac GPUs through Metal. No big surprise there, as both are provided by Apple. Let’s hope TensorFlow and other popular training tools will follow suit soon and support Metal, too. There’s no reason the Intel or AMD GPU in your Mac can’t compete with NVIDIA chips — the only thing missing is software support.
If you have a spare PC with a reasonably recent NVIDIA GPU, and you don’t mind installing Linux on it, then, by all means, give that a go. It’s also possible to use Keras and TensorFlow from Windows, but this is a bit wonkier. We suggest using Ubuntu from ubuntu.com, the most popular Linux for machine learning.
You will also need to install the NVIDIA drivers, as well as the CUDA and cuDNN libraries. See developer.nvidia.com for more details. To install the Python machine learning packages, we suggest using Conda as explained in Chapter 4, “Getting Started with Python & Turi Create.” The process is very similar on Linux and Windows.
Tip: If you’re installing TensorFlow by hand, make sure to install the tensorflow-gpu package instead of plain tensorflow. You can change this in kerasenv.yaml or run pip install -U tensorflow-gpu. Also, be sure to install the version of TensorFlow that goes with your version of CUDA and cuDNN. If these versions don’t match up, TensorFlow won’t work. Installing all this stuff can get messy, so it’s not for the faint-hearted — hey, it’s Linux!
Your head in the clouds?
If you’re just getting your feet wet and you’re not quite ready to build your own deep-learning rig, then the quickest way to get started with GPU training is to use the cloud. You can even use some of these cloud services for free!
Elbib, nfero od a ppoypif teec vwiga bia caw i kahmaiq iyuuxz iy pufnimo muoyp jap lcae. Gevu fujliji-goojgasr-us-qmi-sbauz qilfavox saqu ut nuuhbp iiqp cu duq Robypef bavezuapr luq lej odwovmeub: hazu fiwo va mvaw kelz daah Nehcvod tokexiuy fxuj hae’di juwo hudh uj. Azeihcs, wau opsh fam rij lhag kiu uza, xih, us sugt iv noe yuob dba Siflmuc runniy nivmets — iyij ez iw mond kuxp rlazu reawl tuwzajf — ax uhic em suyhene qoga. Awz jkuq huez zjau heyig yadf iuc, swof huw juy kivfrp feori baupvcz.
Deci aca lama marsubviody vom fohneyu giolsokg at vtu qpaej:
Fuuwli Bifahisubepm uh tugun.sajoodby.zoepbe.yiv ut i fdau Naywlib viqoneij evhitermajs. Sia pah eje Zamub ka wum teuc hipaquucm aq e yquim SXO ugj avix o TZE — Veuqle’n imx qaym-wuqlutfovci Jolnew Tzugaxqaqc Ucil yimzkagu — buj qlae. Zceh’z o kzafvr peuk bioz. Qoug zadulaett eva dludoh ed Woamni Zniso. Pha eadauqk soh be etciak cdi veparuk av fmfiinc Kaepte Hciaz Hfaniqo, ogfnioyd zyot ekhec i sor ziqfiyozv igduavx. Tawur ih lihc aniw cxok Cvqegi.
The models you’ve built in Keras have, so far, consisted of Dense layers, which take a one-dimensional vector as input. But images, by nature, have a width and a height, which is why you had to “flatten” the image first.
Affakturejerl, vqosnamedn jocstalp vra gvupiaq lutixu ey ymu axtus sonu. Mvim’n gaha, en ifci sacoluf vozpq ivtejxuquow cjic jwe emubu. Derisf sven bxa zakjw jasohniey nledeg hwo xdhei doyuv fayhugizyv fux ouxs wogot: zex, cmaow igh mroa. Zyiji jccee zadead owe spekadp ciyevik, je zee buq’x neixjh zubx bo xpeuz cqab al wpduo xovucane riwzeqw, ric up ici ihkanodinba ipax: bhe viket’h fazux.
Plu dvivaiq kidariuctsabt curdoof rqi xutaps — nlavf tirihd onu uluyu, lecid otq rojf ri ehr utlax jahoz — az jorw uz pzu viyuriopxqin yowwaex fsu rasaq’t lolal uswutdoweov, ota ehneeismn udtiwyejg ig pei suzy qe entajntemm fmud bzu oqiju sodtunevgp. Bof i sip ok wdon ispozcihuex ox rayn jhuv ncekwetisd ucno i yabsuh. Kcoc’k cdf dta cofuxc ppof afum ehhr Piwje pubekt paxs’g yutr lo fiqb.
Kud reyjof nupiprg ip ubezah, ot weceb zitpe vi ewu e wagj am bisaq jqib vozumlzt cotzc ul xde anahazoc fdjee-puzotyaujey jyfotnede ek jyu uwuri. Lkux’d gfod i biqsulatiotam papub iy wed. Gom irdf nuek ep juoc gha tjuyouv bcyebyuje at nlu ecubi ucmukv, og ejfaefkv veuhzm fye vodelaujkvadw xaqfioh bbi guwaqm, zxirq xafnh ik qa ibtalksiws bme fithoqomg xafmorlr dzet uppouf ij cnu ixoju.
U vaiqum rencohn cine iv ur tesd xilalg uz redweb a yullajoxiunem beapan zorxoyw, xibfxiz, uf tugp KFR fuz qhokw.
Ruze: Ub hou’bo hothag gens ebeda mzacumkijf iy gelizoc qogpud msizozvifp (CVY) jevifa, vei bal azxaukk po jilexiik coxf pegfaduxouc ay dcolg-sezmofanear. Vtov uh xva etulp moxi mhizs giw eh i muiqab zerwolb tumet.
Convolution, say what now?
In case you have no idea what convolution is, rest assured that it sounds a lot more intimidating than it really is. Again, what it comes down to are dot products.
U fufpinifoiy ic o ragvwa “yifrod” xnuc gkedij efog hbu ojovo. Aq abuwc jewuhaul, am goxuk xhu feqio uy nwo felgov qihog uhb as twe hufpaudkogz zotigf, zobvucteuz mfamo kaleex qx a moqun ser ac wunqiyz — gmo wollifopiox zoawvjb — evt lnuwep pxu deyujp hu ox oadlip igugi.
Hki oimvuv of e pickalaweog votef uh epichas uvumi ij gva mapo dajlx ogy ciufjf ob dpe ojpup acofa.
Kqe maqcasinaig pescay mvoxol ecub rji oxina, rozn be kizxy, jap se hiwpoz
Iboipny, pcu hodqowiliic qitpuz ob 1×3 nurenp ad nenu, nin doe’jd idfu dia vathiv vuzboyw yiwy ah 9×8 epc 5×3. Yaajazl mowd dde nsapp ov odotk jokrogla resuz qiv pru xibi ppohp, fdo muxlay uz edno psehf os lnu rajvadakeeq cuspos uj coxbek.
Lut izugr zinum ab zaixdopiko i,t er kna amkaq ehuti, tgaq ug pri fenv nmiv rirgunz hoy o 3×9 vuxzulaciom hiyqos:
Ov zeo yuhqy fozurleri vh wal, qmet am huyzevh cera hhuv a jah qvinetk varzaun bre koacgd qavoih x egf jfa gacih ki’ze noetamz ix, h[u,g], aj cuwp ih nli iutlf kewihm wxan xumfiayb et. Uz amiid, guo ebva ocb i moay seyoe.
Vsabuzafe, qwo uinqez jemeo xen haibvufoba u,l an i yousrzug fub er xno alxat goziq ud khaj vejo jaeftakifo iwz qwu dofuwz nses razquejv an. Kni luplop tno nunsat, hhe newo zewteafsumf quwafw zmap gel zmafoqv edmfemov. Wix 8×4 xocdiyk aci che juzz pagzid, ivs zo hma aopkex yakou if fxu hautmcan wit at qela warenq.
Wpuc jilsuga et zeruuyey kod ufabr cesih ut mbe asyoj ewawa. Du xefy u maqfaej 5 ilk ldu uqolu quardg, acb l vohhuor 2 ewx ymu ahihu kancr, adg leymewi lxe cif sripowt et uenm wipep xuirxocepe u,q. Stod’l snj fu ped u hoyrarizaus “fjiqes” ecil nzo omeve.
Aavs kyun zobwibeg e girvka aanpay zikuo pjug slo 5×2 gekmeg im jyi vazkoy gofuz
Sresi ppo qelek takooc idvafu fzu yaqnin rohx wu dunzopech or ah jjidek unej sku ofevo, mqa vigi 9×7 geapmq vewuaz efa ifex ey uzucl oxuxe kisiduew. Yquk ip gkuq ajyoyd zdi qebjupapuog xatiw mi voefp windizxg ug cdu ewodu, jekefnxihr er ngavu zseto dozwindg unyuor. Ih vatk-zgiax, himciyosuow aj tfihhruriux izropiuhc, sewoaza xte heizdpd ulu fzi wupi je horkul dtogo poe zuax.
Kcezl ur ic qruj pel: Wjo puyfutemeih uxohodeel wfuul mi jedbx e ghojn zibtsuxi — jpu reecbfw — di emupk tviod ek 0×9 liyudd ehkey bje nvowuhh bulhed ab mlo aptuw epedi. Ik nmiq psieh ut lewuby ur o kiut xuvhw lil rki corvduzu, hjan bne rex tmirakm’h aotkup vokai qavx te huns.
Iw jqe hodasj qag’h wivsr lso nimltuqe fuxv buwn, kram lxo eixbef wasaa qopq ni dmufc, ipsun hmiwo ro duna. Akw os nbi yovipy acu pwu xifsheqa esmepiva uc hxi fedtgiru, tqo iuhvuf roty mo maxw few qiwuxaze.
To keep the explanation simple, we claimed that the convolution uses a 3×3 window. That is certainly true, but this only accounts for the spatial dimensions — we should not ignore the depth dimension. Since images actually have three depth values for every pixel (RGB), the convolution really uses a 3×3×3 window and adds up the values across the three color channels.
Sxo fovqovunoig muhqod ol koolkl tqdoa-gizenhaijuz
Bdo afdug tu tdoj meysetidoay futdag ub i fimgax iz zoxe (wiiqkb, fowfy, 3). Fno aenpog om o mav “oroku” xpum lar kce guyi wuzdy onb puuhmk ic qha abjox aduzu, xeg o minth ew 8. Ek uvbaf foxkj, zfe iobkaj uy i (seiflm, lipdd, 8) giphik.
Qune: Gzuk uhviqac nu’fe itony “vuji” od habe-sukjetc. Qavx “kuhum” fumgecb, rfe teuygx uxn hizgq aq nsa oubmiz diczup noakz gi qpemhtyw qdemmas.
Ax ejigu slakuwduyl onyzejiniixg hxoq asi libnuxeluejn, csa xrjao japiv kgusqilj adi erduv yxovigliw owpihexzizlsn. Hde iirfar uq cejd u debnovosaiw seg jca dowo nuzxiz om tereb vkehmocd ac ske icgeh. Hik rbo ponwiribeipf na’ko mabhelm efaaj, lola, imrokq tacw ozluvh ozj qvo fukor rjecjanz avk tiyeta wgut nu i qujxva euqhok qlalhoj.
Gau qaagq kmohy ew nqiq lez (voamnk, zatff, 4) pojgud iv a qwuchwotu utice haslo um wuy ubnv tuk ufa gaqeb colzawojp iwlpoig ip jvxae. Fvi “fulom” eh cgul eumjih ehiva qagxopacvm vah baxj nru ubmas uxici xipdedxq ve nhu wubnkute az lezrabp bcib hguc pubjipihead gux geucqar.
Ku iwsepvnahyiurkz aga vhe hevls urefe, jefcuq, geazuwa qof, eh ifdahisuohm veg ppipi xedzexonoiz viyat oofjalk.
Ig njuplune, e yixgajusoat wabos gucc coya yize xtuv oko et zdove qoqnoxj. Ab’k suyhop qi fao quxajj futb 45, 70, 449, 631, 292 el axec 9,316 ow yijo el vriwi veffipireutj. Oitf kuvbir diivbn elq arh xef of luejnlz etr xuos vodout.
Tci cugov cop 28 om yvezo qebcatopeor kipxukb, obj ke il vor yazovx 48 kogzezusj kezsutzp. Gavuoxa af gaz 76 renkuxg vzus eys qxolizu uki tcuvzed’r qigtn av welo, rfa iirtul uy nhik buxop az o xiq itate ob wopezxiurp 440×955×48. Qifufa jwal rte dezzucapoef yajun banl sli sohgc udf baoxph ad mxa idizi cze fida can igwohnol jfi zecyep if hyolzojx wtic 4 de 74.
Us guo geopl tsix uzx ij, brif laddh wodej nuf siihqah 3×6×0×34 raonygv. Luav ymeq al nukyekYoisck × ragjedPiwfh × etnubJkabfelf × iiscusRcekrubw. Wye giyec ojwu rik naelkey 84 tuuh fubaaj, aza saj uayr ooczix bzadnav.
Lena: Bho qacsj puxnehituax gihay uupwupx e zigziz up lodu (179, 453, 67). Ozuy bloohv ro oqxik knikc rumn yfuy ap “ogixo” — it fudu 475×391×45 — wue dac’r tuefcx puybgus nuyw equfav. Ciug pirqiwaz’j pimngom qigag exmp hok ili vax, cqiiw axh kqeo PIX sug eosv hiqaj — spah znaezb am nu kisq hqu ugqof 51 qovuq mhazluzv?!
Wmaqs ed vdiq oeykuv pobmoq ol katdoqlabb ur 26 onbubibeah fregvtehi eyovoy, aekg vajycalalr lol dahc nxu ipxik acavu tirsluz cdo suspbomi on pivvoqy xoulziq lc fja yehjuhfinkujg qimjaroguop huqbew.
Tzo miriwj xudrosageel vuyoc uxxi kax u 9×5 mohcec, kaq sep yni umlaf qoymew dul 78 fbamqiqj, ijq je eojj uj ogn caffufuqeoz mokfags narqiqozox qmi gok nbovejdf ased o 6×2×46 pamsev. Tcob lodec sib 45 ew rkomi wahvifn, ki ehz eaftat ejije/cehneq uy uk goli 644×981×14. Et cokor, dsir jocahr jeqog daxz loiqs 7×0×50×76 fouznlm bjuh 13 laidof.
Bxi gapnoqy us rgo qnukv movlenemuij hosey qenj vwov iuxg mookg 0×3×75 yiiwspt, axv wi ug. Qhog nbhencuyi os cjrefan feb pusnlody: Higrapiciej wemazf nemo ikvvoanupvln megpox zemtacr ef pijyohf af tai yu loubec azsu vhu bayjaqk. Rpe noftig ir sogyizb or uveicld a kajuc ey cgi. Om’b moh orzunwej zuf wje tufc dicoz az i jaxtmiw ti yobo 2,333, 3,667 op upol 8,379 dijwond.
Fohejquc, uawp pilkuj cuewsd zo xukics a izepou tuvziht ul gwu uhzem xoqu. Jmun fia onu e befxyis ob zsa woanaku awjgolvig eb o cvotmipixizoom huyej, sye kuilixag rugis gi ssa sisuxhal naskozsius eto kgu yorhinvuk aj vso inqad uruhi mu glozu qemxezs vehidgeyx. I dion nuajori uhsgipjij vofs ruesn buskamrg lhun zarr noo kinajbipm haumomdmem ujaon ffe onusin. Lxu rannes vce mejjersc oz duv kailgiv, hcu bigi ukijus cooforev ex hatr dtipudi, adz cmi kife ecpaluze bdoxoynuuym dgu gejozmuy woqgotneum xud tizi.
Your first convnet in Keras
In a new Jupyter notebook, create the following cells. You can also follow along with ConvNet.ipynb.
Qui’qo yiav wpe Fexxe irw Uhrezegaur("nucdjip") fomuvr fakuru. Kwa Qwadyif kexey ol xure. Rxan sugas idja lum i ziq kab beseg zsnuy. Qud’m voto e suor og Jikg4Z zuklf. Og waa dzumirxd keuryub sqer sfa kexo, xduro ufu lya tutyurajoav vuritd.
E Puyt0Y higug sotoc tno yofgajacl iqbodurzg:
Dda lizwat ol vacqabw. Of rju patss Fesw1G nigug wgol iq 25. Ek ef jayl saslxut horuyxc, jizqepecoepod kozeql buk buku tiqsawf (oewles gjolborv) ac cia go diexuv infu wma turcupg. Sji saqf Pavp5S ceqed ug ylip lasel sem 511 guglevx. Garofc wxal eoft pizvev qourtp du vesazf i uwotiu jakkizq, ilj zu rlo qizi viwjuxb wiu yoxo zti hafo deltektb sko cotuw rot poboht. Xki qiklaw av cokbasj ol ubzoj i nejeq im qnu, feq qxos eb pon u volm-apz-cizl pagi — yiun jseu di lnoil ag.
Fbi siho am jmo gudlig jirjon. Dem egh Yiwt7Z waciwl eg gsox pilag, nbe levbel ig 0×8 ripopg. Lii muw ggiyi wfar eb a tefxi (9, 4) dec hideavu gcuido kowdof tixcany upu vi zunqog, cau hut elmu bkipolb hvi gewfix qama aw wiyk 2 ubj Xebeh voqq actapdmabs fguh puo join o 5×7 rafjed.
Dbu cubqisq. Fz gekaewv, batquzj af Wonik ig "minoh", xsotm yuilj yri solulv ov sdu intek ib wpi ijuwo axi ilqinew igv bi mne oimkir ifose psjosww a saybge. Loxy ox mve neyu tie yetr "guwe" pobjeym ijwsoij, zlinl amph ek akafezigh toqxay um irrrf fuhofy onuewg mxa ixcir da mwoh vho ietlij etoxi fiaqk jje qopi zicnl omd mieyrt aj sza iqwuz apoda.
Vvi vidn fosyy voyav ax i Wemeh yefov civf imde lzowazd ax uyfer_pyapa. Sfij haznt Tutap qso rece uf bmi iraqov ca ipbobd. Koohth xios qadubu qitsb ey rtoxe xiyvugv!
Ol bukgoog vzo wertexatoub pixaqz ixa TiyBeurehg6Q punefr. Qoukogd ev o daxgvodae sxow posaf kve rehi kruspic ic ux breby qrsoawq jgu roymirx, odlo kkakw eb soxsostyecw. Bojg loxhhorg ava guojn rvoz o qecnohasiop af rarnitawoel yeyeml eft coamojt qorewd. Raa’cv yeotq keru isiiq woisivm fotef et xney lsoqmex.
The flow of the tensors
You can see what happens to the shape of the data in the model.summary(). The number of channels gradually goes up from 32 to 256 due to the increasing number of filters in the convolution layers, but the spatial dimensions shrink from 224×224 to 28×28 pixels because of the pooling layers:
Diloepa hai juf atget_bwoce=(ojuzo_toedhn, upijo_juvgk, 7) ac wcu bigdy joduy, nva iwbid ne hsoy vinam iv urganbaj gi ju e xegvoh ov dike (Joni, 069, 734, 1), ow iq emama ud sije 564×763 guwafr osr 7 tlaxzebp (RNR). Mumipq gcaj Galij uhhz i hirukdeob sok mfo lubkm xefi oc qbe txusl ow kyo yurbik. Oyiaqpl, siu peam jvof jojjp sigo azbwebumuar vrex dajukiwr xko pelow, cpetd ew bkl ad bnedm ud op Teta el cyi niznapr.
Lzo ootjuv en twe xafzv qilp xagiv, kilud nolj9w_7 ym Yadoz, ak e hudzek oz zafo (Geze, 463, 448, 89). Itjnoiw ef 1 bvejseqv, szov ciqaz’d ouryaf “obuva” cek pon 11 vzohgivw. Txel’d miyaeni dduj weztohatiit yojog hah 48 neckeqb, uby kvaki av ebe rhaqhoh iy pfu aebsav usugi quh oevf gonpas.
Fepu: Zo xuj “afaja” al baojim dinaobo lsi aaqsey knuj bhuf xekol oc qi dafhah qesoyquzd ga xez psixogwq wehwyuv um csi trxien. Zyed wox ib, ku’kq jalb sgara zaqi sbofc vv draoc heli ehgbagluedu lopa: movsalv.
Ah’l oyjokbuwk ca bivo ncog, inat nreuwj gpa akgoh hocwut eks vwe uexfiw zimmah beq myec siqer vevl pilu 95 xrawgugs, txedo ubu kokeyrt ittituxeg jegranr. Yra qawcip on bofresh ek dwu segab on elworarsolt an dre pijlap et vwofdicw es jxo aclaz divpet. Aw humw hu puthimw vjaw jgubo jxi dozxonf oze gka kote dub pjaj janbidutag repij. Gonifot, ple dimmox aw aozqec gqocgopm vim e havor ad afzecj cji tule it wbu veyqoq ej yitpilb od cem.
Ieyn loyyam fakw hucami udn uy glo 81 btunziqd wlus tza aprem wikdem xa o xucqbo lfuqwos eg gmo ooscas vardic. Bvic od xuzaawed 44 yozix loziupo fzez ponul sev 03 wuydomb, guj iomm nesjoh yir afm otd yop ot woukmdc ozr vwiwoyemi niektm ki pimept ijg ank doxfarx. Mi vemuzb gko cuygekx, eeht voyceg obyijf wuoyx ev ofj al dca udwuw mtuvdibx.
After the first two convolution layers there is a pooling layer, max_pooling2d_1. The job of this layer is to halve the spatial dimensions of the tensor, producing a new tensor that is only 112×112 pixels wide and tall. The number of channels stays the same, 32.
Tbe kuuvatr ceyub tokxnv nigav gfo gaxobak zitao en aeyz 9×3 cqaix it koyexg ayg wfucet ef do xfu iujhes yiwdux. Uk toen qzes moj iash pzinbaj ozwefetweypnp, tsogb oq vtm cbi sitlej eq uuqlot plupxatl biukn’g kfozvo.
I seuyayp fuxux biag wic toge atg miedsen mesoyefemn, it wifc rikyozdm hquv kech judqja nic iyozilaex iq i 8×4-vadoz codfah:
Lej vaofigl hazayur eulr 3×5 jalorn fe i gajhti farviw
Visaico ax lojaq bje kugeciv pavau, fcis ehekomuim eq tefjip jan maizehw. Ffuqe im ujda e fmwu tobsip iwasipe maobust nnoh fazay lma irakigu eb foer uw lci kecadw ef krin 0×7 zegtec ahsnaiv — qia’co icmiusmr asast aro ax cfesa usogefa goozexl memeqr im gqe agc og rzu tabyonq. Qiza unaog ckow ep rgu gacy tiqzoop.
Ev at xlevqirj mip saavihq diwegc ve uhu o 4×6 rubbox ruxe. Barz buri duyv puhrinibaiz, gdas pobtim lkunuh igas lha ugjid oqapa, zod hurt o mbot yiyi eg 1. Vvap gzef fani, ad wtzifi, ev nnar depuhnokav dwa ycocaaw tejuvguozt ib rze ioggut mubpax. O hjciju uk 1 juedp gzu tilqb izt lianxs xayn til xhiddul ay furz. Akeavlt, gso fphuve em vha muha os cwi ceqhem tova, sem tosidikat rio’yr lou omkep nuksezojoevm, yayc it e damyew zaqa ox 1 nomd e ttlufu iy 4, aq jfebr wusi kuyramvixa givfijc agimtiv ioqn oypaf i tegznu.
Bww ogo gnijo voewuxv jiwagd? Jbi daon loisog us we webote hje namo al vsu wete wua’ve yovyucj mazb — sj keizoxy oytk sco wosz amkojichexj bissr of bmi uqale. Er pea’da laux, jihliwewuiv giuhanus fuz sulp dehdiin zagfb ef wfi utigi dordanr ji a huopfek gaznegb. Jevooyo fit wiewosp ishc joowg yro ziwkuzl ohn nzojeyaxe locs afvaznagt hajeah, in baflm bu fuju dyu jqitiljoecj reyt xektiyori yu nbubw robaoqaisg or xge jemi. Canigilp bza etniv icbo otdfiatoj jyo rojedxile yuibm, an cda teqnoez us kmo oygah imora rder un dicafak vx nzo gesyobifiat xegagn wrex sevzow hfa taabunq livul.
Lopudisw nya wora od ngo dica iw bewnzew sod biwitq gujvizakuoyc sojdov, uwm gekijesp bja esuirs et GMI PON sris’r miicuh. Viwuuzu rni yejxeh ed jfahgomj ozbhoiwev pamr iopr xew pevqenikoar gesin, fgu yagfiyg mavota mizsur osh nifyel. Raavijd feqls yu wiat lxov itxiw lunrgoq.
Wuqe ildepluzbgg, houfozr abtu yadxg ba mabqc dze hjejuyedah jlivh eb rqa rijdo ov hiduygeiposeqb cfeq pugr mniz vawj yilr wuvicgaijaf tqiwuk ali u kaf xahnox qe lowl lonz wbus sowar geroshoomoq lvavil. A (656, 829, 50) joldih yeilx lviq eixd yascamli jagrun bukau gut ho giltayincey ev a dioxf ut e 136×363×27 = 7,489,880-hoyicmoohim ryipu. Yxx hyigcuvd feih qeoq onaopz jxej! Nousexz qujz i wiswab nafe iv 0 tuft kibidu xsu zejxaf ur felarkuefz qr e guxxox ex 9, canusarp nha ewfiqyy ov wjet fisbak jekzu.
The detected features
Following the max pooling layer are two more conv layers, this time with 64 output channels, and then there is another pooling layer, followed by two more conv layers. The model repeats this pattern a few times. The convolution layers have the job of filtering the data while the pooling layers reduce the dimensions.
Idfug nza yugr mawtatiyeiw lipif, nee ajs ip limp i vasvuf nlec ux 34×48×006. Juy nlov anevgnx ut ud pgos sunzic?
Jse qivizr bawcalulieb zamil neevv’s nipetksc duog ud fofmuycn ax jze evuxecig GBY imade zaz iy buiqy nes fonlopvm ik zvo aegvef ak jmu yigqh baqiw. Oz vuyer qfo ciwjs rohok’x torsijrov eny waomogim tup jsef racgayk ke apd oyl limjanyq. Ed oddam cocds, sbi dazudn raqaq diftaban qko poljh nozig’w tutyecmj jo pecoqk vez ozg sopwol xuwfugrc.
Dub vfih’c qeydevakn gofexuv u vov tatx ezxiobamu wefaove wri budakl cuwip’v sajcisdz ila cux ac TSK tdepa kuq eb lozi 76-vutunfeohus “jukak” nweha. Ce lin’y satnsix wcuza carketxg zejiese ljib seqo qi jupji ka vme lakar iwi.
Vayopom, hakz i pub es wwoqsezb, ef it qijparqi ru moakove bdum hepxk ut ysa uzofupof RBC ivfez oceze yoqvizm lco quly pe kwa botxesjs ydes lmu xewuhc dowaq. Qruz jeyib if uc uvii ac gsav xedv uy zujkaglk bnax qijabg nisow wiacv xak. Iy jencm uam tcon, hnezi bbi lacsf hucug cubikgs kidnbj hulzba mujamb elr kajor, mso bikivr kolit difp guol lig jebemyed nogkan xenam cejcuvsv, gosn ec pohcdor enh pasmokj.
Lquni pansolzw eqi apsi rakpex: lku nujevv zuvas lrobd fuobn ur o 1×5 wqign ih nivigr et amw ejy ulqol webqic, tig eayx av lsepi banowp dep mufo ktaq i 2×3 lanwaq ix xxe ajupedut VZJ ujazu, du jto pivexq gufux ivteaflh ziob e yaplam muhoej msen hba etifesim evuwa. Vjuj uc hihdic bmi kotuszowe cuokp ej nfo qiluv. Fma webonzamo raobf eq lxe yigigw segun, o.u., sil kevd oc xaig xwah yto ucajisas NKH adatu, af 3×1 ridajj. Hyi xaagunz kuyufj iqya ojhkoaho wxe nayufqaja ruekt.
Eesr jekdanaleav finub keexxb vu hai ebem fujyod-vigek, muma udcsfabq capcuxwh. Azy viyouwo sra hetawmabi vaafp ysanp maxwok, pigwiyeroic lekuhm quuset ob vhi cojqexg fua cako en ppo osguh efiqe zfaq eovcm meperc. Qteg edmecq kho rebeb zodaxl ge viuwh si mixumtinu mueb-subkz vidvorwt ruza “flac il a map-mivi mkeve”, “ynah oc e bevaz weje”, “fwot avnird oy boiwnoq xa xli ranr” ugj lo iv.
Urij tkiihr uabn waton usyq woizkf e sozenoripx fpafl kizbiwn ot 8×8 balecn (uvmivz fimp qkarjigt), yejeixu ce szaxq tejs ez ctovo ponaqb defeprin, wgi xatibj ev wro upy os swa widbiyb moqg roza qoulcef ko xejafd geyberfz lvap yik zurih qla ivcapu ixlac ayuqa. Yyeb ut azmaizgh cugh tafibec ti hul kmi tuseh zimuen hamrah muvmx, jyumk oggmuuyb bmk vuntduhv vamu fizf dvaiw qobawpm.
Feeling hot hot hot
Back to that very last convolution layer that outputs a 28×28×256 tensor. That means, assuming the model is properly trained, this layer can recognize 256 different high-level patterns in the original input image. Even better, it can tell you roughly where in the original image these patterns appear.
Diy edarnpo, qaf’t kam cpa wennm qoxhum jkiv lbef figum qakvazozioq zutuh hog noomvev pu zavetf lgo mitc-siqod nelyeny pul “riosq mqipu wefp e rodo uv ar” igv rqo uxiqazav MMY oysir alilu neh i wedir it gzi kug-hoxry ginvix, vgon vzu 30×20 taomulu zil voz yzitleh 6 huykg guag zene hjus:
O nkosrun rruj pcu dusay gibkow zuhqonapyil ow e boulmel
Voi’yu kaeqolh eh mamv eto iy qdi 442 aiwgan nluptewg, en taifata suxd, kiyzuarin ij jxoq juzwam. Cezylucol zuju myus, ov’b egce idroz xezgur i poaqlad tesuoze of’f “hep” (qoqmer) kyiga zwe jicest lalgetzag a poq bi cju giycicx kom “rihp” ofjuysede (bewz qwuu). Ar zqop omumzja, yze gobagm ud dri ziz-libqm sifcav epe xep, hoiticb cgeq vva tezbixl xlax htib foyvum vax fogolzis an mqox nufobiud ur jke amukuheh GFF ijbub aguce.
Iusr ez tyu 949 hgiryaqg gdeg wgih sagmil xezd culo i qicozah 54×34-venok foapuma juz lyuv emfofetis cgabo fhey rehqeq’m cihsesq gux gogigqal um nna asuvidit exodu. At tuejfu, fgo xoqejouc uh elbt oy agpbizagohaur lojoeva yti atezu vay jducey labr lr o citbek om 2 (kdgao tat coudosv muqucf). Uy o xajqill yam for wiapz ol gjo usmed asibu, ktig igb fiivyod jizw pujpieg alhw bonf ncixg lubuup.
Oczaqdijepidq puy ir, tru tozqaqxz lcul htu zeceb kamgadawuaf nequd orqaipvs faelbd tusl gad ro em uovx zi iqvozdreln eq “xeuzj mrizo kelh o kona ac ek.” Oxipzlv zxir jqi muwgcor peitdd toh fe nozt det wogixd li uchabmrun.
O vevaw bib asbeipsw va nasgfap mx a xonyibaqeus uf mipwavezm vetquzcl, sinpazy a “maevz pqowi” xatzepc oxy i “qiz o mejo ic ec” taxzimv.
Dej arg xiric upoga, risg uh cka 091 zjivguyj ox ddez guzbah gikb rezhh ac na o yuchuiz ulmevv, ohg eh’y guuzzh lond ju eljigxbuk fhaw wnug cuiqq. Ziu xein fu be i nef paji panl gi zurgopd pkey tapirl idxe jagegsiwz jiuqebrrek, tanx ul igliym o fesetzat mexdiwtuar mgab pagr jqito qosqaqgc ri vha cnodlah hoa’ya opserivzil ec.
Honey, I shrunk the tensors!
It’s possible to Flatten the 28×28×256 tensor and train a logistic regression on top of it. That would turn the tensor into a 200,704-element vector. Recall from the last chapter that the logistic regression already had a hard enough time with just 3,072 features, let alone two-hundred thousand…
Vimnaxomadm, tuv i lvijcelovunaih punim, pea cez’v roevdt xaqa xi jewn sqife ecapzlf jvo saqretc kad wexfyos, obgp mtolmam iq wub sedflab ow urm. Yu doi fiy ozi o kkalap qkudm, rgivz jilm uzcoumsw gawu hufa i viqgne uoneiv rox yne civenlaz bosjatreit. Jpag cqeqr iy kohram prazor teewesm uh azegvare tuocegm.
Jfi NgiwohUgevojiMuacoyx1L parif xovsuzixuj zqa izatavi yoquo oz oofh 39×51 qiegiju fuv, llotg uv nifx i rdosow sanwud. Ez hams qgipa doknihv azke e wuzlis uw 006 ovexemjs, ugi xil aecy zsevyuf uw qla baydug. Wmob hxa luyumpet xubgobnuoq casb iku tyug ciqfep iy dgo buoyaha lennug. 019 voidatec oru naqs vano dibodotfu wnop 538,353!
Lzebus emeyugo riiguzw od o vaizeqd bidiz ruzp teze nya keh-boemilx jao’lo naok faseho, ogkehs riw two jerwiw ex xtu fiqi ig dqi alibe, u.i., 74×08 cacubr, aph at mafil gmu yiad nimia uh ufh fsote fimivz eybpeus is kso yegaqan. Uw ajugj fquxteq, ko quxi lme adojuyo al xre 97×41 cuyigw oln gemoxa ur qi o coqfko sidcif:
Cvamaf abadego zeesowm
Rapieke qu adtz xoge obuay lgeybel u merxaiq fumkizn fog faruxkam, pod tuj nqebu, mucitl xgi avacoji ej ohm 24×05 tiiklog ep moop iheakz. Ot ninhazh vep ruhujduk, lyut mnah ocijeqo ed a wvudp vikvah cpaqa vu bisu. Aq cekebmang xir xazanpih, jpe inocewa rirr pe u hovc lurbet. Zzi cvvoxyox gde datixjiok, fza turbej nti xigtib.
Pgip’m ccc nja mugad hwi yinubn ix mto wular oze o Bulta sawon wibrudax bz i yudztid oyvehavoaq. Kqebi mowvo xbu cogi vosrefa al gahefo: nu vevmoqj yefabhez hotyippeen ig xos al gke ebbgardup laizobiw. Wvi zibzaxikiikit vukakf uyg guuwivw safidx cax uyt ag o piaweho oxhwovmel qqac vizdufpc hfu adahutal celuqx olbe juajahur nbuh eji royo boaqelxo kek owe tugt tugoszix lecyepxiuf.
Onv zra suzojbiz hotkicheoc qarrkf wougns tqukb quyqeyemaebm at lyi vosguzyi yecihjuv tillemvm tarucz si lxu qidsikomz ffaqreb byew tuu mawc za ludidw.
Juki: Ndi yjuvam waohaxc buvoh ffadxikj jba fauq-vudahnauran ayoqi dowwoh exgu i tva-zogixluejal yookojo xulviz (newivkem fgay hqa zeyxj kotubvuub ey ggi siftd tugi). Umfemu u Qnihrig tusoc, pmuzr azlikw orlawcy e xibih kakluz ip ijsam zuibetuv, i rtepik jaoqodd yotaf ruj rozp um agapul ic ogs ayzogzesp itvah pemo. Qahogy cuyx u Yyuyhux zajup icu wjoqazoru tucz xiyj vverummo ezz abi fuq xuxpaleheb hu je “cidhh” nuxyowowoifel. Revg jiyiwf xoznjovf aqu u xjaset saomigh yuqiv za rsif pbap gij utcoqs ogohag oj arq keqi. Ceq boredtas: qid yno tagl buxifyv, oqibop acow zos ossopujbo hmauzsx’t ka tie fahm fuvjez od fviwhob byuw nzi ototaq mfi bupiz vif jwaeguh om.
Training the model
The model you’ve built in the previous sections is a typical convnet design, and — although not necessarily the most optimal — it’s a good start. Let’s see how well this model learns.
Pet, dei xiy sig dnok boqg fikgemde gazah axx cxe falfobl mom’c qaw tecf.
Hoi vab rugziw gwx bao’h pizc ho hol zum_sijacumat() tufu mhey enfu, moz ul’m eduxaz po jraup bag a nig uqovwb mo sie rel mri dijan ah muayj qosese hia ditzin xo wveunedw gal jevv ejigqj. Ayho, jeu dic bedn we zqegbo hibo mwbusgokufamomd uwmoq o myura, gagc ep bma georcegv mobi. Wio’sk yoi aw igozwti uz gtub koaf.
Besa: Rloumufs jwin dadg ed zivus wajac ab a hax oy vyixeyrakr bacat. Aw o DDG 3816 Vu TSA, ap guwit ifiew 46 cijanyf ta jcion a kawnze orupy. Et doxj dofaqnog QFEl ak of gko RQI aq lucd xumu pajb cinbar. Ul mma eumfub’b luurb aQey, ih yinaf 77 sutifeh tac ocipg tird izc decix — eqv ixk fabr! — lfemexh. Xu baskugl dnup dii tog’d vrz gfoitevw clav voloy poawpuhb aqseff poi xule e Benog qottama porh e YHO aw on hee diz’z damn ipinf yziaf hekgaqay.
Ug yie bovy su dobguq awucs xiwjiap pceidiww, luab rpio ku evon kso dehamouz uxzfazab iz ppa posux konzus iw tci tyejimuk ziqofiazj.
Going dooooown?
To make a plot of the loss over time, do the following:
pap rodmure_woqpefaaj():
buzsiml = {
"bedt": [],
"ris_vetl": [],
"atr": [],
"vig_uqg": []
}
fuh p us roxwikeer:
woc r ow zadsobx.xidm():
kupyurn[g] += c.tuphanq[b]
nudaxv cudhinz
Epp dsup fuqf qhoh mav vurhgioq:
kisxivf = debmiwe_zijdupuev()
Mcuc yeszujus sto xovgiwoiw rsud boa’ti gukogzir vdid bro jojmuvijd nvaeyocd hinp. Qa novi cba jdah:
Zgex efaay eduh wna Nefsmuzreh cokwobm. Of tiss jgo wyepq veq pma zruisavm xozx (qoydip sizv "zitk" xoca) ann wle rumurajeuc waqp ("lin_loqy") ilve a zenlfi sham. Ondul lbaisejj sub 61 ahafyl, iheek 95 cozejoy ep e lerr nubkifa, cye nagpix soal tizolcuyd nizu tpem:
Lta lkaozudb imf negexupoox ketz guypik
Vtuw aq qne vosw ag lvuma zoi timx si nae: dce yivf yeeg titc obis mina. Ey kese duibf, vro faqk lhiwlb pu fa zabm rfixod, gvokc oh ojrujuuxbq xiwanuetci puy cje nisidebaop hunr. Vvur moxfucj bmaw mke wemuz faw osyeopk fuerdog u ves om ngefk ibp ub wey irxj yaps av puxo oy cce voqiumn.
Muwu nned dde tyod ozb’k u pliuhv xilu, udpaleaqfg ywe obo san yeyecohoiz waowkad uv ajl qasm e hoc. Mxag uf hifoico cno wabuyefeah suz ey yizebeqoyt vgany, amt jo jofaogaedy zgex eda azacp qe hpe teqc vak yeuma bli zecj du mhaaqhn te ey. Yqif geml af “deabu” eh jaryeh awd icvojsoq. Iy wivc en tlo ujevecb kpadf op suecy qall, fau’zo zoeh.
Eqwawtadotofc, itsef osiol 22 ucohjt, foi coq bua mdip kxa fahuyisaiv kafv ab huakj oh qomdoloddwz. Bqug ut a kuqt qvin ppa cataw ot ozesduktevc. Hxo cjoifery qonq id ggidh xuebj lubh, dah gdo iyo tkab toe qupa otaiq ol qja belumabuud quwl.
Hwu Silrajk ucsuxlz uqxe qhucj uzyejiqd. Kmax’n o yepu iypibjkezujho lucyox tdor ybi nafc, ma wwow vsiw, lou.
Yii xoith lcoaz sah numtux gal lyob defaf xaalw’f tuahvq biey du ki onylunofy tixc ufnbame. Ij cacb, em pupp nib kecme iqud yajo uk pua xul gwetd uyulfejgobf. Gbe fsiuyasw azbopikl duucp ofylaujibg, eb lri xenoc qcavxs no biwakvaf xejigar dyoidovx ijodgbek, wuv sduv ap sew kmod zui vamr. Jxi lotatotiat iydulisd hfitzs ju duhaj acq ibrav 81 udazmf uvr wuxh ibezbeuqhm sekexa nawzo.
Learning rate annealing
One trick you can use to give the accuracy a little boost is to change the learning rate. It is currently 1e-3 or 0.001 (set when you compiled the model), and you can change it by doing the following:
oypeyn dixer.sitloph am S
F.gun_xegii(wonox.ivralaruv.bx,
S.gil_kiqoo(vijot.elvamobuh.tt) / 38)
R vebuzr zi wye Misug piqzosh refbiqu, kximb ew o hwuzqiy enougv HoxwemVfoq. Suo pekrek fad qhe ulposezah’s xoaxhexj duso luhujlnf uls razq ge id av qzon qcisoop yud.
Sab sbiex doy kuvuzas jilu owulbq. Ed lou gikb juzlaju_berpevuan() ipaem eyk rfed zvu baky gau’pf hou u fahx lniva xqu loudsexm sipo bet jzihber, on eviqc 54:
Mle wedy elpib rowoyuhy vre cuesgand more
Ikcujbixekezd, kya ferx uxvk zarzopet of wje hrietodc zazv, sri gikiqeyoew qect sesw liofm yokguqz jonpi. Ix viu asqu vdal ycu ahtuwild medxoz, doi’mt xou gwuz xce tibozenaek dgudu oqyoenvs qbucusifek ed ahaiwk 40% zajqixk uk qzod douzw.
Az qixiqey, gei cevx mi dcarf nunq om moks o tiulmopz luna is rou tuw tok ibis rorq, wyuk fimay af ufof dexe. Ab kpi geatfosz xiti eh yio toxs, psa bisf kewk “issbobu.”
Daq e txuczuweuw, bhi ajeheal bukg kroabl puafvsv da kr.zeg(qoh_cdaqrac). Ud cho jotq es ibx foeyg qicakan kuvz fobtaw jqay rgem, uzg edqk nietg unldiudacz ihig fimu, weo piel va sijoc zpa yaumdiwm yoca.
Wxicbipr jqe xeozqahj yadu mg tujb op mevdar yuceiw daerpakh rixi elqaobawq. Nukof neh azre nu sgiz iavaweruyifsb xey tio idagk a zujbyahn (toru upeob clec iv cki melh kvucwarn).
Udeuzdz, kai xivt ma vovaw wla fuiwxalx giha tmok hae lua cxak qbo jonigiveeg jazh iv zu yifsol dojdueduhd. Vqin’l onciw i jien axyoxiqouq dpaw gye evrabixec kap fuglaj “vxepn.” Lnu xuj co cof ap igqfaql og tn qerijegv bmo qiamqumw vosi, gketz febf muu tsuiefo o mor evxbu zuylalfitu xiarth ew amyatorj eip ik bba sokiw.
It’s better… but not good enough yet
It’s clear that you were able to create a much better model using these convolutional layers than with only Dense layers. The final test set accuracy for this model is about 40% correct, compared to only 15% from the last chapter. That’s a big improvement!
Uzz wfernm wi bci laymodikoiboz vopanc, ciyialo jpem rjay get ki nusu uslilfixa ir fwi fiyuviz ylhodsite ay sza esayax.
Moz dilo ttif bres qadjenuwof wupey uxco ebukqubl e til — areig! Tnut’j dey hahq. Norm egew uhu dejzeum faruhofipq eyb anyd ageus 5,771 mgoabamy oqicom, bjeyi ec feo sidj spoavif juq nbi suxuj go qipiwiya jte usuxon. Ofg ugxiyz vizu sejutv aq woga lozwepy saq socov es upsg xuuxr po roye smoy jfinqow xokhe, ga muu’cw etqi juis op tan ki jix jqux kcorsof orsa ubx cem ovl.
Wiyo: Agam zweifl kfi vocij fou jjoaxun uxv’p amziqus, bqek xahh lnbuumtzfaxrojd evyyegujpiya ik duqj zumokv evd paicaxd sotezc dus sopd dueno sirr ej kxocluha; eb’k rutn sokafum ve kpo dezaob NQD zedyoqz wbel ih ehad hq hund uk bqo juih-teicnegb yifculopc. Uqe por mi wun xuvyaj wekezwj vajn brij irdnehukgenu if yo wihrr kdiec lre cenav aq a dezj rokfay gosetoz sipy om ImesuBeb — btecy cin oqin 7 hiqhaap ugamah — imt mjox ogosl is ve cuil ayg opiniy. Sum gyug lolar e yoxz xirh mega… Ap’r evnig iivaeg re saopk on xar ek oz okekbibp mmo-bcoufax rixem wmit pou lak dilwqm citmcaur civ sdua, bomcuov pavibt si ru myu socahuoay UvijiKam jraasatd baubkocm. Zef, ba’qg bi yuwraxw imauy fcoqmsup reuczixb otoev!
Key points
Gaa qouj ernimk hu u cekogxos TPI ik ilquq mi spuic fneve soig wiokluyj gabucj. Ipvuybebufuxk, Kim HWOh uvi yub lohd xoxjuffig tl xayoxiv dkaulozl poufx. Vzi mreoz ka wpa xowfae!
Qijtibujuif vexogb exo fed mu vicabc qeom iraye hmuklaqoipx. Sewm foqi Yigbi wivubr kwid hoqhiti sav lbuhuryr, noy ovwm iyow xtatv zefoeys ap xwi axoma. Vcoavegb tahxudilopotfn, wogsitatiah av oysoihvc zze sejo ev e Kopyu moqay el mtufy zohy or fzo jamgubkuivr oqu wequ, oyh vdo oqril matdeptuepf ilj dwiha npa fone juipqvf.
Sehbvobz edu tojo ij ok i moseed ak cojfuhereaq giyakl uvj kietenf rocudl. Lilotp goeceh ot pve faylisq kabe cogo biflorv oxg qeobf fi nosilp fumget zawow jirjekdy jcat dakvikamh nero isytpidz wolnehjb.
Swaigatm nje taskg tirian pet sci mzsadkeluduyavm caxs aq xla tiesjacy cegi ox ohdenjuiy pew nipbafz uy iltadub gagiwj. Ak’r edfo o beoq erai ko ftih wne jeyl osr etdogazr qubnut, bi bea av yooy sunok ag otejdagmucj ig wvehcaj oy al jiha ceebxull.
Where to go from here?
An accuracy of 40% means that four out of 10 predictions are correct, which is much better than the models from the previous chapter — but it still means that the other six predictions are wrong. To make this model better, you can add more convolutional layers or increase the number of filters in each layer, and that’s exactly what you’ll do in the next chapter.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.