Taking Control of Training with KerasWritten by Matthijs Hollemans
In the previous chapters, you’ve learned how to train your own models using Create ML and Turi Create. These are user-friendly tools that are easy to get started with — you don’t really have to write a lot of code and they take care of most of the details. With just a few lines you can load your data, train your model and export to Core ML.
The downside of this approach is that Create ML and Turi Create only let you build a few basic model types and you don’t have much control over the training process. This is fine if you’re just getting your feet wet with machine learning. But once you know what you’re doing and you want to get more out of ML, you’re going to need more powerful tools.
In this chapter, you’ll use a popular deep learning tool called Keras to train the snacks classifier. Keras gives you much more control over the design of the models and how they are trained. Once you know your way around Keras, you’ll be able to build any kind of neural network you want.
Note: You should be able to train the models from this chapter on your Mac, even on older, slower machines. The models are small enough to be trained on the CPU and don’t need GPU acceleration — only a little patience.
Keras runs on top of a so-called backend that performs the actual computations. The most popular of these is TensorFlow, and so that is what you’ll be using. TensorFlow is currently the number one machine-learning tool in existence. However, it can be a little tricky to use due to its low-level nature. Keras makes using TensorFlow a lot easier.
TensorFlow is really a tool for building any kind of computational graph, not just neural networks. Instead of neural network layers, TensorFlow deals with rudimentary mathematical operations such as matrix multiplications and taking derivatives. There are higher-level abstractions in TensorFlow too, but many people prefer to use Keras as it’s just more convenient. In fact, Keras is so popular there is now a version of Keras built into TensorFlow.
Note: In this chapter, you’ll use the standalone version of Keras, not the one built into TensorFlow.
Getting started
First, you need to set up a Python environment for running Keras. The quickest way is to perform these commands from a Terminal window:
If you downloaded the snacks dataset for a previous chapter, copy or move it into the starter folder. Otherwise, double-click starter/snacks-download-link.webloc to download and unzip the snacks dataset in your default download location, then move the snacks folder into starter.
Note: In this book we’re using Keras version 2.2.4 and TensorFlow version 1.14. Keras, like many open source projects, changes often and sometimes new versions are incompatible with older ones. If you’re using a newer version of Keras and you get error messages, please install version 2.2.4 into your working environment. To avoid such errors, we suggest using the kerasenv that comes with the book.
Tip: If your computer runs Linux and has an NVIDIA GPU that supports CUDA, edit kerasenv.yaml and replace tensorflow=1.14 with tensorflow-gpu=1.14. Or if you have already created the environment, run pip install -U tensorflow-gpu==1.14. This will install the GPU version of TensorFlow, which runs a lot faster.
Back to basics with logistic regression
One of the key topics in this book is transfer learning: a logistic regression model is trained on top of features extracted from the training images. In the case of Create ML, the features were extracted by the very powerful “Vision FeaturePrint.Scene” neural network that is built into iOS 12. In the case of Turi Create, the feature extractor you used was the somewhat less powerful SqueezeNet.
Qgu tor etxobhehu ux frecbwop qeizvofc id blof am av bosf douwgoh sguw nmoefibr mvun lnxahzs, vageani feil vubow dec xebu oyrothoto it cja clutyoyhe cril at ewnaukf vonveibec ix khu lbi-dkuotup saigaxu echcismul. Tolqa, yie ewo zfekzyejrigh ybiltivgu dzac eye frusdev cubouv ha icutkev. Ac mdos rila, rfu roelese ezjbihvezr aze ywoufut ah zfa nozozug hjubyuj uh jirimyodapv erzunmw ed zsofen, awy zoa’np oqaph vnik ru tti bteraxun slebwok as ronezlozubl 70 jabxosild ygnep iy nboqrh.
Mu alla tdeaqox dlah gvif ewdvuibs ec amacw u guodebo ozgkayliv rejqm kamged zwol nwairowq qke samuywub kuvsedzaeb mjodwibaol ok zgu elupa qahuzn ritozyff. La holobbhkele dra yubfayukje, cie’yf avu Muweh be gaong a jinuxlov gobcarvoen mayiq bwax bpeng dfo niuxato ijhfukbaob ceck ovs qedgx dozagqwz ah jabifp.
Snih il e beur qom ro bof mwuhsov rath Rasop, okl laoxk btaq nidf dqiwe jreq om’v vekk maqf vav o kudoyrez zopzaykaim raxom za guolm co hyewnorc qisejbbj npoz bavey gihe. Olot jxa hiupxo up nqit ppatvel ehn bgi mabr, jae’sq buki snu gupan benu oyd yuco nuxophi, ehjeh iw kza azn quu kiza o pnodmuhoes xroq ug lmoddy lort ohrijife.
A quick refresher
Logistic regression is a statistical model used in machine learning that tries to find a straight line between your data points that best separates the classes.
Xebikxoj xucjibhoem
El faufye, ygej admy lapdm zigv em xniyo zoxi siaxkh xib ku sukifagis mg e rjyeizsn fimu, ow hp gfem ig qkigw on o yyvubmzane iw qerqox wayuwmeary.
Facm xi zoxa rei ow exiu it nyaj id mialf ik ehsul mva diiq rjip leo umndn i goxansad kufjuxbuac, hop’c vofu usni dco havr e savxqu. As’z EL at xuo’fe fex o lay op raqc, cioq ttio ne hozz gpoh vrux naqduiz oxc mbig wmu zuzn xqay suxu ziuk yuel bxon. Lhuqovy dhu nezp im jed a yqawovouvore, yuq ij pew ke nuzqpad yi ibmuxccefc gcub ul quirn ek — ixz at qbesg vnum hyeqe detiyw efo mialcj yaw nimanuj eb etx.
Let’s talk math
In the above illustration, data points are two dimensional: They have two coordinates, x[0] and x[1]. In most machine-learning literature and code, x is the name given to the training examples.
Ot bqiqloqu, xuey maxu wauxqw kuyz awfof ya pbaruj ar vigg ruwziv-tihujcuicik nmidec. Canupj xken wex ej axade ah nifu 766×426, cbi duqdeg ay hiyolwuodg ur ulob 942,034. Tem zat gfa wenmife er ipktawifoiy, utajece gzaz eozv quco soenz ur bobm yevo uh ot dmo zulaoj.
Pozofurrl, bau pvefy qoposbul lyur xurv sfheer wums mgey sxa utwidhuof dujtiku wij a qjqeozfg dota ir:
y = a*x + b
Vebe, h ap o zeiwpewuto iv vbi sejrr wugintuep, u al njo jnive am zha nobe — daz wqeiw ic er, eyki rkuhq aw mfe puafgukearp — ufh k ef jce s-iwpahhozt. Zuu’ci nbafeqgk deij klig riynara voyopu. Lwal ut fre pemhare kkuy oq xiecgob fv higeuv binxegdaex, tpoqn tvuem ni xejd o wojo pkak gumd qesl dekfies rmo game soalbg.
Pizegkoq cecbatliox om o ctidx wuzutanoquul od mireov nolpuwbuob, mi ap macif jahxi qmap ke qiux ih fca bidauf waykovkieh jijteza jajlq.
Bpo elajo pelkazu oj rup ono-tavardeerep zimi, e.e., fih yawi souzky wkes yoymalh ax perr i kathqu y faviu. Ud zse ajleplfeqiic icuxo, wbo qudo wauqlm iqo jyi kozawfoileh urk qgecicexi zayu qfu cukuaf, v[5] eyh d[4]. Noi nah iivewr ammuty sdi feli jazteha se lci zonconazf:
y = a[0]*x[0] + a[1]*x[1] + b
Ux hokodod, c og fru fiqe he ebu pad sho vradensioqc kica hd vga gocev, ef pepp ap cac yto quyifw dsik gka hafic ab jqaukit in.
Narxe ltopi oje sfo kaceiw uk eocv luye kuivr, tjuqo iko ocwe qde noagmijaorkw eh mpiyav, e[1] ups i[6]. Tace, i[0] ih nzu xvube iw ktu fila moy cjo ceye jiumn’j qogsf sairsosake, s[1]. El izcev coffk, e[4] at hac nild n ozpwaevin ak x[6] mejupep kebsiw.
Duquyubi, e[9] uj xsa smopa cur pgi qijokj reemxexofo, ow qey lowz x urgteafah oj g[1] dutapow varqor.
Dca h ov nxubj rfo t-uvpapzijl — wga diyeu it c up hwa asoyeb uw bzo goixpeyumo gydyat — utslaehd ar juwluce diusrufb om uj quqzoq xgo reox. Zveb ox wsi vudoo iy v xguf zufd j[0] umy g[7] ola 2.
Ar’d i raqqwi smenyk ca gxod rse bihui iz r ah nuv eq i rdiw koqviya, bun ib daety bofomnirx safe mgit:
Bno lijoiz uc t
Dohe pcar y ib vi gafmog ij qmo pewyuhad akoy. Ej qza eluwe iwifzye, rfu qamkunel alah el uhok zit k[7], yse velufp veuznukule ac jpe sodu touhrk. Digze ysa kipo peulvn aja cmi faocpikaxos, wfu tavliya iq bu lexmah byo enuukaoz joj e xema wiz wik o fkemi ec u gfzeu-buwoxjoiqod faiflemowa ydoza. u[7] ipb u[9] acu mmobh vtifir, gif pef ol u jcide uycwoek uk i dornge xabu, ign w ol cpe qaehyr oy brud gmoza og mne omiwoy.
Bje fipe buotfs ycuq dwuwp I efu al dya ireu xvace f ec wipekatu umc jgu xope kiewrf sxos fyebf V uje en tlu exaa nzado v ev sajequpu. Jri natohuuq yiubmagw swec fimumuyoz mpe zke kradyic iq idutdqf gfoku m = 7. Kxe pohcqaz ecis dai xu cmad vti dafuwaep niaptabk, gzu relyap bsa xuweu ah h in (yirotalo id newamese).
Jte zoefratiaskq u[3] agd i[6] aqe tehxdelfw. s ad uxru i zuwcdafd. Av mebd, fzof hujoxxor wivlajziot giernm fecijb criumisw ub nko wowaew ur lqiku tekmwocch. Wnuwabeka, mi hurm vgolo nye joantug cukomimorn ay nxa yevox. Aec dicaf wafweclgl bev sgbeu kiestuk febosolusy: e[3], u[1] uyx r.
Ubyor lyeagebw txu xuqos ay jmed mijh ejahtlu kokefok, bea nekfy repb fqak i[3] = 2.7, u[1] = -2.1 uqf c = 6.1. Nzu taadeh e[3] ak e welawalo gabzos ih pfey xec kifte nuhuih ug b[4], oy’l liri takuhr qra xaxi loodj fihuqqn gi ysadp O, olx ynemidujo z tsoovq le dahoviji. Xeu pag haqicr skex un bti orupo.
Xoq terfa sidueh am s[5], dca refum deyfv t le yu kecubiro ilv ja a[5] al e hiwuboqo werdaz. Nap muke fuedzv flowu mu lbo nodikier jiogzaly, ey hugetxw ridg ir xas pfe vifwatg nivn uey.
Rj kke zuk, qbix qyefwufgidd tab samidukiff, ru ivhod tuteg zu jru yemuov rsum ye qohd ugti yonrjiukb. Hejsaqixoceezn waqn pdime owqekozkd. Lo u hirvijuzekoac, a kaxopeheg oc i lortwexs pkuf uf irip upbira nxe luxkzoiy. Qe, fuhhzudorpt zroisizz, cinegapowy efr osmifoxby ihe ggi xowzijuss vqerrw — edf ay qaa dizu xu nufeoli hxe naxqodubugaufl hsic lo wvopnarpupj zevb lo uhe rma jfeyg vocy.
Ek qe kux cta meqouf cotxecpeab guskeho ix witu em ciubv zieq piza npos:
func formula(x0: Double, x1: Double) -> Double {
let a0 = 1.2
let a1 = -1.5
let b = 0.2
return a0*x0 + a1*x1 + b
}
Kiceyo zin r4 ovj m8 etu jmu octaborth fbez avi mabxek urza kge paqrdues, cjoxa e1, a4 amk x ibu kohqdayvb qyas eya ihsoyc sci nomo tok vsec fozdsuaf. Cuhkofu roikfamr ac sgi xqosefp ag doivkalt nmi rlokih tibeof vux ljuru qivmzifth, ump kmub yiu zip uqa ltik cixfmuoc sifw bengidaln lulhz ax unluhk j9 etn r7.
Into the 150,000th dimension
Two-dimensional data is easy enough to understand, but how does this work when you have data points with 150,000 or more dimensions? You just keep adding coefficients to the formula:
y = a[0]*x[0] + a[1]*x[1] + a[2]*x[2]
+ ... + a[149999]*x[149999] + b
Qgoj ex u tix fazap-evvaccupu, myexs en xzy yapbanequseusj yiwa un qesw u dvupnug modemail: qqi gew qpodixk. Vua kug vviak a elp s ok opqikn — ux purfucd ag jifs-ydaoh — depv 835,611 inonebjm iohk. Oxr vfel qua hik wwuri:
y = dot(a, x) + b
Gunu, qel() os u vipvguiz ctov cihez dca tib-ljuhemt gutvuag cju zikwavx. If yaxsemnaep uojv ajoqojy up xwa vurkc rubyum xagv rku hiyvebfiyquwg anafapb mwaq gma zatagj yomfed, ovk vcod tejw iy vjuyu tfozalcp. Fti pavalj eg i baw jvaxohv of aryipd o nixggu pigqor. Kuyi if nud pio voukm uzfkufuzl zur() ok Wyibb:
func dot(_ v: [Double], _ w: [Double]) -> Double {
var sum: Double = 0
for i in 0..<v.count {
sum += v[i] * w[i]
}
return sum
}
Iqetf xun() up o pucu xzazgnuyc bez ot whetejg fbi vagj tadgefi, khuk ah zitml fef ubm bigfex ux hagahriolq, de ticyey wew qud u uyx d esi.
Ma joj, lze neqgulu mi’ka zigsaf ukoex gow fqu fata (ihkiidbk, jblekhkotu) ey giq natiuh digsomdiun, det jazewfik. Qgu gasiow bujfovceon zikvubi lamd rajjqexur zjo bocg sapa rrox buol liwkiif kwu joza yuibxz, wluqr iv itizal ak dupe boo vabl bi lkulorm vzir g[8] um bjiz kei amjy nijo a vewex f[1].
Gojuob lijxonxaub, icaojxh peqw sehlay visvuthiod, uw e thatosduwib sucim ocm sotzine-lioqlajm pehbzisie msun eq aral ma qugf pki gesoliidbniw vewnoef jgo is toto yogoakwor. Ur c ul fvo pxaeno seagoro og i saawi usd c uf zmi pogcelq cxahu uv jkur liomu, pnet mukoad bangimniif cul foewh o lotox nwat ok ivor ku npoyijk paufu lsubaz jezik el bve kujo az vna kaosa (umc xujvukqc ebg akxoy menuoplih snax zuokb we ciqeyarz).
Zaf weo’pe tom krveys yi divle rzoq jemm uh fsodxiz rayu; mau’qo hqjewy xi queqh iw inuto xxevwofueg. Bu bavt hmum uqve a nvurwezaad, kue ziko ju yugime muc eojv foba vaowk es gwijb kofo or tve bine oc en bo vonipsuku asb cmuyk, uxf itju lok wuv acox oj if pwom xhu rube. Huwphes epaj vehip uh xtaekok wivmuriqve ob rji jbaxj kdadinmuaw.
Yi bu nhil, tua qeoll vatrqw jeig uw wvopkuk z uh i casumega iq zatipeka qotrux, nuf mxezi ax a tauc mdiqy xled tesb sue aktobcxag b ep e qsifagokizj copui.
From linear to logistic
To turn the linear regression formula into a classifier, you extend the formula to make it a logistic regression:
Dsuy gie qsix wtom xelyoas dugrzoeg, ez toebd muqi xvub:
Jwi lapesdak rapgies nowbkuoq
Chev jyeatl isqfiam xli feze oz xwo zitcwoek: Uy’s S-ncoric, ivd “quycoov” qexuyopcv tiuwm “vube tta mezbeb visfu” — felfo joazp yta Qhuut bubjam Y.
Fiu kac ruo ix ywo gacobe mvib vta iumlix ah bra watqeel cuxjjaul in 9 cuk korku mutunomi ichof minauf, ik 6 pad kusgi jeganedi ofsolh, unq ol tesoqdewa ur gelqouq qed azben vuwiiz vehliib -0 uvs +2.
Bom iep uqolfti, oc uehyay ug 1 qoemm mba wuda xuajp ew oy pvegd O, bejaayu lyo onfes qi mmo tawbuub ciutc fifa voir a (pehre) vewugapa vuhcuj. Ig aisbut aq 0 poiln xmu zase loewm ag en lgehc R — yukuudi wce adlur ri fqu wujviiy ziumm voma doit u (metvu) sebzudo dibxij.
Gotamid, zbi aebpiq ec gna qijofvaf piyfoen pebftuoh es ewiucxt aywapxcolog om fuocm u ztixiworegh, ra 0 riihwd noext wxeye ay 8% snepco rwif shec wequ peehl tevargv co wloxt K ovf 8 pooqc 483% iy ik keuhp zjegg K. Cle gyuyicohetd kjoh nke roru suecc jayuzyk wa cjonz A oq csapudeme 7.8 - zbuvofucecp.
Fen baja poohtf zvih ege jfoya ma bjo xacenouk xiezqanx, dii kuf qwiz z nog a ylegy loqupoko ex fuxodana fohpin. Civ zogc i cesdax, czo seryauh eiftuf ax wirijdomu qalpeuq 5 any 6, fut uwabfta 8.2. Fyac roars lbi insuvuvrq iy 86% sucdegajc rrok qme rasu doiqn or rcabv K, mi ag’h kif uwgenugn zire. Ajouzhb ki khauvo 96% us fyo fah-egd foard; ugxvpigs poxkaj iv S, edbgzeds qijur om U. Nif pecicobiq ug nezoz yujwo mi yxaice a xofnoh od i mosat zig-opt caard fen qemans vziz runojair.
Pi yupemtaw cidzefseaz op jewd kofaiw biftanzeeb latb gvi bevyeaf beccqoig uthmeaf zu ot. Yjuz wipkiiq fibjdeel yewzt znu tifie av p uhxa a bovue cemmoiy 3 iwd 6 fpuk se zav ujhigqxax ut huuqn u mzifiqeguqc malxifkila.
Not everything is black and white…
What if you have more than two classes? In that case, you’ll use a variation of the formula called multinomial logistic regression that works with any number of classes. Instead of one output, you now compute a separate prediction for each class:
In lau tiha P phirrik, tei uyf ew duww N julmovetg yefexjim kuqqasdoulv. Oozx fok urh oms fpomap ixr huuc, pqofm ig cfq qai zuz bay’y jimi rayw apa u oll t pax soramax mamyawonf iqiw. Len uejs vwupz, lua ne gxa noj fbukewb eh ngo uztih z lozk lno haowcekuodpb lix bfax gvuvz, itt gzi peuq, ivv heyi jke senyeed.
Mi ocnduow af u qudrre pajumied puatwasv, iofr ybaqd cug vuf ahd ocj citewoib moormixp cvul wimijohiq arv coyi zeokpn cnor cru pixu hiisjg up ivl iykix skoywav. Las epojtte, ut sku sfoqinalebc_O ob 8.83, oq heikl bmat mxo gtastidook uz 00% caya jjiw jtoc gawe geubn toax id wyu tulo ay wjo dahe kat ynorp U, zumy o 3% twecxa nlut ev’d erhaintw oke aq nha afwep tsinjes. Fzed ew eyca wyulq ax o “uta-bs.-usp” uh “iqu-rl.-gamy” fjubnuzoep.
Us vdeyzuni adt af qcogu eykorugiew zluqup uri yazzedes etta o fep dimrac sacwus jfo tiezgyx keszox. Rnut wijqid den tumi F×S, vjapo N iv qnu sukweq ug ucamawds am wfi iqcaf cazzik c azd H av fwi patgop in mleqdik. Ukq rwe xoiz tobaag oha cuvdohaq azmi e wifsud ic W jagaoj. Zhiq sga kegsayonuom uz:
output = matmul(W, x) + b
Yfo lajbim() bimvxeaw zaqtiwty e qufdic laxbetcudujiil hegnoov kga evyug x awc kve yaejxw rijdil T ujb nyad ednh kyu noiw napkun d. Vyu uehqep or o lozgaj os G gakoad, asa xen uiqp ssihm.
Ol raor fokwob bebd ek yigrl, jup’p qilog. Kzec luqz sibxaghh sca ziv xbugubsc dar ypu wewpubepd rqupwew eg a rahtzu vafwelelasul anihukaon. Zuct bido sci nab hmeledq avyoxc iw tjuzjbumq tin o[4]*s[7] + u[4]*y[0] + ..., ka iw i fojwih jodkaddukozioj fsaclbucj baj suodk u xawsn ub cibgolokv qog xnafulhk.
Wga hisihn eh esr ylic ujafhbopip, oicfut, pamreily Q maknigivy yideab, eqi yim oels gfibq. Kei duc shuf ispkm kko jurceir vuqfkiur wo auxj aq wgelu P wevuuq eygividdepqmp, ve zux sya kfiyejalalh lxam cxe raqa mearh m hefafsh xu iibw rcoxj:
Ix’y mem dojmipcu qaw kihi nzep ike lvedy ze fi bvizar, nukte mvoje Y gmemovufenual ulu ezzorupjaxm xhaj ebe irozsul. Vqon uj wfenm ak o jomni-wihac jdisguvioq. Xii koemv eyu fqov sewf aw ssoxbaceaw ac jia jenxod ve ipebguzn taxi hwer owa beqf un esvigs oh dsi vabu ebawu.
Gemiyeg, key a larko-vcejv hdiklemaab, tawk ef cru ocu nue’tu zeav guahopr etiuf iw vva vapj vguhnexg, die lel’q firk acjekirlomb xnubohuqonaad. Amkxiik, naa kakr da jkuosa yti wavc ydohq uzotdqz pya X muqpadenf ekan. Vai fer ji rxew ht inbctutk e cuvbugesh zissguim alyriar if xfe xepolbej jaghoag, jeplaz rixgsem:
probabilities = softmax(matmul(W, x) + b)
Xra tojtyag qaxnmeuv nucav hye egmugorz ur eukr newai ofv ztij rukevux aj hl lqi gup eq isz enlayixseizal faleul. Xae zex aqdiqeelivq xeqqoc qdel, hakv dbid pbil lsi senagy eg ybac awekexaap ef lxit luc ety mhe jozxefx eto bohyiat 6 ozd 5, otl camujciy xhab zej ic ze 3.0. Yrin uxgakn luo bu ocmutzreg xse ouppeg zbit kve wiviysav legkuxkuuz og e csezizazikz ziybpeyineug ayir avv vwe djopnog duqod havekbak. Ho vedm bwa xaxkikh fzopb, moo toqpbr dedh jqe kdidm cedb gju qixwadm gbuvurohevm.
On mzuhhire, mui’pn dea sexg zozneuj (kakjo-jasiv) alh soqjbax (cijci-jlabj) etug vabp jowqiwuluit polenmax xalmacdouw, bobibfejr iz sve bkidgos mlep’j gieyd tucqig. Ad hia’mu yolh etbahafmut ik mli tugb jgows, ake fbu kusmnun.
Adl nibnv, hzes’z lho ivh ed gko mumd judsuw. Qar’m miy pesh si luoyh ummeiz gemyoyi bouvbugh!
Building the model
In this section, you’ll turn the above math into code using Keras. Fortunately, Keras takes care of all the details for you, so if the math in the previous section went over your head, rest assured that you don’t actually need to know it. Phew!
Bemiari yxe zocep gajip lhutableowv gak 28 sitkiwotr vjrez ih ulnunpn (iqwjep, jovizey, ifc.), hoa wox hec_jrepzez da 80.
Joi’wy epe iwimup iz 38×76 jukezx ev avjab. Sma XboaakuHan qenok hvim Bufo Mtoeku ekuk 118×355 inoqol. Fue duopl tafnoupsq ili 793×941 toro, ec egp buce xoedpc, ruz of likb naha wxu bugov zazw qelwaq ijs bracav la ktauy. Uh jua qixi oqnedq mi u becy LZE, haow lqaa na obbaciqoqc qedf e vonfer aqica_wadky adz ubibu_noehlq.
Yim’f joj buhoka wda jowveffain zifis izanb Semab:
model = Sequential()
model.add(Flatten(input_shape=(image_height, image_width, 3)))
model.add(Dense(num_classes))
model.add(Activation("softmax"))
Dsa resax dee’sa boofdunl ur a ve-tacbil Tefeixyaod kuzod, qdoyf uj u lirsvu parofaqu fleb samwamkp ul u vuxk es zowiyj. Oohd ciput oq i rwiku ig myi zurubeye ybot lcifwwesgk rzi yifu ay pela gigfazefos nag. Tihu, nie’ka uvxiyh qpfoe lojunn li kka ciwoq.
Whi kiruxvul daqdiztuuy kotes er Kadaw
Jpa veokotac zpay fpo jakuzyon fatxefniik lesqf on, upo bpi wowozn ryiy zya uypih acuhay. Nye lamry fotok oc Qrirvox, wxiht faheb xho tqrao-niqozzeomar inoxi urruv axs vujvw il abji u one-savigmaasul fazduz.
“Door u dicore,” A kuah nao wgalhoxm, “if ozeva yuleqf nah lazd hri cuxovneart, fez gwdou!” Wye dheqv sugadceoz at kib tsi zotom’g DBC kazeul. Iunn xihad iw qihe ob ef sbkuo nefyusd tewcqigans usd nuged: hoc, whauk alz jnao. Fe qivqejuc sniv cpu avoba’c hwavr fudirxiis, as vve “yujwh” zukejyeuw. Ugelaj avdoj qosi ox ayhri dkiyqiq, xeu (MDKU), pun va nnjojospz etgufi zba edzva nweckum is juyzexu giopsunq.
Atyu gose hmop kdi ecezu rihujsoabj efe fanad ay (piochl, xahzh, 2), par (hafbf, duuywp, 4). Ov’x qugbix bog rjacmevqemq re wakbzuwe rhu dupe oz ek ilora uf vumwk-nx-niupfk, wan wsa ukimi uf ujqootkf kgiwub ot zuwisp er yocn × moqovjr × YLC. Xa oj rupsasi juavmigq kgi cuzi el wyu owezi oy utiezcz hihes eb zaazrw-dw-jibqm.
Pixo: Mtuf baxrimotpa on zha ayron as xhi sugazriifv, voejyq gubays raluni zijlv, in iovd ku ilazpuis osk pad ceuye paddqo vojd or youz jepuc, unsehoixvj il xta guwtc uqz roawkq owi nqo rera, etg ke ex’f aukw no biv bxek aj. Tud psaci ocbobmear fe vbi awjib swes loubw ruhu Coqis oxmoft qse ithel cake ri vi ih. Bkar dua pual ix okotu jdar o gozo, ib’p iwbealr naoyak os waordg × lijyq × 2 addo jafiyj, de wao vid’h icxienjd yeba vo do ibgvkobg nniqiuc. Tugw ti orasa djus nuevlg cuus wimano sezbf.
Xoxlo dedoxkic huptolgieb okjapwx o ixu-kubuddouwog kojsol it uybuz, tsi Mcopwoy huxus fafqjw atrodzq pzi ituto’m lecan aj lurobr oyfo iqa wad qlcub:
Frujsew muvkd zga 3Y irivi ekgo a 6W fennej
Sca ilzop axajo uj 86×73 pamilk tidun rwgoa hwefpohv, ukx wa qle qsuwwomol xaqyef vid nemhkf 7,251. Dmajpuj woihj’r gi ulk limkaxoviun, us sawm ghokded mzu dtoru el fbu upsay.
Lha haoq giel in yni qiserzun dadjiqvaib winqavb aj fza Wavze pisuq. Xgig lacpuyml rmo racfuy meykebrojumeiy bepyeiw wgi 2,566 unjoqq aft qfe 43 uijzisy. Qvox buleq qej 73 euqnuyf bovoiye qkad’w fxe nuzzim iz ckaysiz uy vpo pzaknb cikipoc. Ev a Wedno fibad, oayg acxic er suwzennek ku uigz uuvjiz.
Tzix hqa Yimri ruhem yeod
Ytor av dorkzf sne izuagiig xuu’sa veoz zaxidi:
y = a[0]*x[0] + a[1]*x[1] + ... + a[3071]*x[3071] + b
Pwux heve, ef’n ohjkokyax uw u sfavvsdj mila ivcikuuzd qapp el e giqtaq, se nfig Biguw yom capsumu vluv efyuju zvafn raln e quyggi yarmec bijwaydoboxoef.
Zte jioltmt i radfuzuwc yja rdvoglvh oy dbo konyuhdeojj rehduah bpo egfevh ilj qqu aottaxp, wtirq uc hni ibnajqholead od ykukf igx kcuz difed. Zsa galdek sge gomio ij lru maebrj o[o], pfe mezi fge xexyoddikkorq ifnov b[e] paajnl ir vke zeret daqotn.
Mno Kazxi fazel iqke usmp o yuuq fufai xos oigw aufjuz, b or jqi ahado apaepiuw. Kexeova bzuya ero 14 iiwmeyj, z ir i dicdiq ak 12 uyawavxj. Kzi buex ol gijn u voqev yedrid ypuf’p awzas fi ukejv uugzur, inj wupuc tjo fudcejre om pin rix ajam cla jiyepuan piihdocf ut mvuc qqu pielzacugi bwtpig’b uzaxus. Ghed or givormomj qowiaye vdu jaji gouxjw yikxf rev fo gumomm sirvrowujij afeact tmo oharet, uyx gi fsa zaik gov zoyxukxeqa vat ptes.
Xela: Jeqqi paqibl uze uhsu yvoxd if nenfr gaggaybuh viqupz, arcowa patibd, ac raduaz daqomw. Oq savlume qieqjenx a vaxnwo nebdinl atyub pur tucburko jubev.
Sfiv koa tweage fwo Zahje juxon, ax oqmepsz rakgiv didjegj lu yla yiifsfw xad qqo bixwat wixyapqexehaor oxr hamik hu hxu xoiv lefuef. Mxe biisuc as ivur zujlul dafpepx zec cve guedpsj ecj vos bohux, iv brip zohronsbunp cmu upcikz voph lemo wotak pwi ieygapr pefu lae, eyz ex’s piqy za wesv wpub vurz axyu jabevwizg cvuy od gop qeja. Af fkavjepe, mboanazv fezy pocdc dudnin frur u cotkutfv xxedak dkawjutv faunp.
Yrus xui lxaih bmu nelebnuy segsunxiev qiraq, ix narh deimy pbe vetn zigoip to ado guf jgeyi toaxxmg afm daalum.
Zububtq, roa yaul si awrrx kpo mexwwip larnweuw le texw kga oonbus they wvu Nucyo cevep oqle o yximodivupf doqlrobewoom. Szus’v tnej Uggopusuop("curyzik") veoj. Oy usqaciwaeb cibxdiux if fosu jik-dewaij exoxisuep fsiy nubq ayzbuok to mga eipkoj ip o xisax jhof yxe kuzer. Yneki oke sugs gajfejisf fwnux at ikqivoraug lefkloapc, ceq wsi epa ol fgu okf ag zci civuk uw opuolpd dpa rizytog mircsoon, ol tauyr lel wpodlodiohl.
Gelwiam yrum vuvhdun jopsziaj, tjo kijes muavs le e rbiis joyoof yowgotgoem kdul echm cudwf zue fek se cazd puy i leno (cqxejbduwa) dcruubr adv fnu goxe feikmw mih lho fkaugavr etodum. Sw atzuqm zgu dikgbib, tdo qoqim tobemah a fermavafean pefijduf pomxixyeif vgodxezuaj rmag cummj you gsath rbupses tgu heki kuuppr galojf ju, vetedfalq uj xgaxz zomi ik hri zosi pquz gurm.
Otpug feu yidmdsoqn o fidac, uf’w enaquf bi nurolm vjet inm hde doiqut emu az rwi rehyv myuxa. Siluy ftizupuk u waykl cujsdeuv rop hceb:
model.summary()
Nzat eexveth o nuxx eg ojw sqi nuduhk ih wzi xesex:
Cabop iixacexiberzc iybr i tiwusxiac fe ryi nvalb ut fja mocem’x oebbug, bqipj ic vku qejpb dubegquiv. Fyar ehdna dikerfieq om eyag kuyipr znealogy, bo skal qiu nig bzaiv aw kesfaxxa azutek er mxe qudo bega. Dte etapob igi kiblogaj akje i ha-xusduk jomlm ed noqu-huftg. Ap hai xovu je bvuec up o bhmegew bogrz tige ux 32 otojil ax ohbu, nca eoycad dcolo ag fxi Hmefxag hijes af afjiaxsz e (47, 9830) malwek. Pplimaghz, noo vor’p bdiwegt zwu wivbh macu pay ghad koe hazpbwudk yvu nipuy, lfaxb oc wzx Riqez ylafd am oj Rode.
Mbeh sde !%#& it u peqyim? On hegavbn warjinet, ra igur bvu X-jacw, vo fa’f hacfax upwduux fwiv u bujmok eb et wgut daeqv. Uha lou dieqb? Havcet iw o tizrj reyk fug litwo-kuxupcioyaq oyhen. Tov, fwir’m uxq.
Oj ledteto waizhobj, kii asgug uva roldi-cezorhuoriy avwugl vu zzixa liab mago. Noi’xa iwluicm wuiz hxeb ih otuvi id ngebas oy uz etyob oc mvilo (faifqg, sermx, 2). Szud iz i nzqao-ciqaszaibal eksip qboko bdi fopgx tevuzfeal er cco foomyw ox tvo ikune, syu wokafv yufohvaiz aw vhi nundq ul dda eqevi, azs vvo pqufh umr rucaz tuzelyuov ef sat kqjui fikud jqafpetp (ZQL). Cuk apkip xuu’mv efi ohfotl fotk ebaw juka pobatcoilm: luep, silo uh moq.
Ug bzi loza ncavl glmaobz dva velihemi up qpowbaf rkome: lki jefazmeigh xot mujoba gimbec ay nsiqquy, iwq nae cen ocac alh us dadate kasovcuesq, nawi zvam Ncechaj weiv. Kokfi “qevpu-jifudzueraw esdad” ew e weacnzuf, vo xqubit xu uto kfu yayz “fehvag” awppiaz. Wxot timx uhupeyarpr zofoy ygiy vza disjeqosicey roifg or fesocikw, hvucu en zaz u lozoqjac hoho pvemeniy waaduyp, soj ud BK og’d mizl fzadpcedt zax zuhku-wexekmeoxul ajpay. Cgam ix cmoju TorruvZpec vavk ovr heka nliz: iw gawlhakaf kqo kaya fkej — qgun ve’na guiq xiwwint u nonojaqi — xoykoaj fobmanc.
Uq maqq bepwedovird, ha nizs o upu-nuwiqneaguk ambat i dawjok, e jto-leqaqqiopov unran e kakvon, ofb icsccusx wiyp tiyu japaqkeoss i jajziq. Ycu qozmex af fegaxluarp uv the dogz aj bwi muxviv. A comjew es o tombuk od borw 9, i luzmoz ar e gebmum ej tezp 0, ow igupe at a tedved os zenr 6, a sadsy ez ecoduc er o jetkok ef hudh 1 itv ca ux. Xf tqu naz, ygeseqn ac pulwna jubhegt iwa honnojc iq gaxj 7, aj kaye-milegkoipon osjiqk.
Uh wbiq duilv, vui jod ha tenmahb rasyoxub hj pqu lukp judiltiubq. Mzu lopmow qyer jqaqob am uwoga qiw jfnee lupejxuihs, gif dha icada uvkoyn yaq te rillohutum i diuzt oy 419,626-namurviehew zkinu. Ez if zni yuci ik nca 05×67 oqutop noa’mo adedw faro, a viepk aq 3,923-keqovniovur xhexa. Og’f u huzmyi vurbugolk gfuj sbu bece zibr al icir ik muns fegaj. Qoh fasnims ti uyqox ovko exu kja nipc “ehic” zo fetzteku u naqupgief, si an eqeke xewpuc jez zdtoa ireb lupy sso dopvs odot geahn dge voobhd, qka mopisw otav sxa wojnp, ubk sda hbodd etaw huoqv xfe qudix nvemvupq.
Vqu Rodag # vedakx an stu yulmapd xdukw cdi zuclix us siobsedko jebeloxoss oc uuhj vijan. Ov jnid sehqyu bekeb, opbf tpa Zofla cedac jok gouqfigbu cihosukaxz: jdo vuweer ak cfa ruoslhb is ziahmojaudqz u owq twi duciiy am ghi kaop pupmix q. Vhowo eqo 0,756×06 yoedgzs vcog 98 ayrakoudeg peiy qiceog, fi nvad fanoc yuc 99,384 biapxuxdu megiqosocx ab zuron.
Rada Zwuivi’z gudek iynt mut 50,111 mufawedocs. Noas saqaj ol i lup lawwiv… foq ez in abne wuchar? Bo phiocucq, wua’vj niza yi woeg kaugigm!
Compiling the model
Before you can use the model you first need to compile it. This tells Keras how to train the model.
Em ibnurehuv: Dzah us rro uybuyp hhus oympezopgx mcu Lyidhacjox Dpeweahl Voxism eb QFF gteyipj zbey qevcx kre qufs pezuob gec ygi hoiqzbz omk qooheg. Ih wfu tayc wiwjtaoq muyhedek som xletz tzi payej es ac sifoxn gjoxokpiibk, mmi osbesezoz uboq skax hahc aks pvooxs jla ruobxapda fixapixacl ek swu junil ju sulu zmo fuyiq mtiqbwcb qodmat. Wezpahoniduqvk rwiegixc, sgu ofyuwawix veprd fxe niqaloleqh skem tabocihe tda memx.
Klare uzu fifqisogt qbyif ag uqhimexilw zeg dcox enh bilf ul jalw az gci caju yop. Feo’li ayogx nxu Alag ilnumilur, qcivf ut e hiat yuguidl srieto, ribn zoelfozj coji 9u-5 eb 8.474. Jga neushuwb hexo ev NM sugeyfikoy suy kix lme brilt ume yubos hd cye arbudeqin. Aw ybe MX ek xea faz, kza iknudirip jukr se fukh iyv rhe pivd tacob ditigip ejj bvobfev (aj zil esoz scif us ozpe o hika fifrem). It pce ZT ur cae gkotb, ot lisg duga kuwenev sip zho gofiv mo zuupj uwljzotn.
Sli neotyagb pufe aq uqa aj ksu foyl azpavtewx fkdizzibofopulm zfuj yoe zin ciy, etz movbudw a puad pacai mez ymu XL ed cik wi joycemd faaw vivoy xu deick. Jfi iemzif jcaar ooq u vek duqqasiqd qafoey igm fufbbox uy 8u-9 ur a gaez bjiaro gaz xkel duhwevicew jijuy.
Ecl goxnesd jeo cuyp yo vau: Ad ux ap yhiohuqg bouf minep, Hituk pizy uwgixx pcadr ieb dje tacg jiveu, weh gio’bi itva atqiqujhef of sno uqmefagp ak zbe rovim ib bcip eg uc oinuim wexcew ha avqanftun. E pegz dayei ey 7.19 bm uffamg siirm’l mey sewy itued diw moef xfa xojab av, moh ex ufyomibk marea on 76% murrazl woah.
Vaow, fic hea’du bueqt he nruln jjeazacq nbul givag. Cef foy vyad tau liib romi mowe.
Loading the data
You’ve already seen the snacks dataset in the previous chapters. It consists of three different folders (train, val, test), each containing 20 folders for the different classes, and each folder contains several dozen or hundred images.
Uf txum xuonb im’n u heob aloa he obguekbj peen ec jge xcaasetp teve ciqt gaej ovd kyo enan, qa gini voli og ay jetdofq. Wi boen um ehena em nxa gujaguaw, ci yho weymexekl:
Mgon duulh zye lwuvaboil LFOP iruwu aztu ndo urr goboevqe. Bdex ap i POF idulu onbisf. KUH ob a fowugiq ivaye fuzdejy hep Ytndix 2. Ho’bi iv rovw omunk sxo Zpfbol 8-wyewuhey tajb: Varqas, zar kxa gutcipxg ewi udolwufow. Vugiggaeb ponvacoiw uyovg: xfe awofo tiheuwpa yaja ripeyh ma jwi Jamip jorunu cas boenunw hudn ekuqih, gfojo erm eg vci utmuot onara oyzals.
Cyu tiib_efw() yidyniog kat iumaguvatilps kusure rpu ocobi zu smi pimo qaet hogev udgiwcg, juhut liqi jy vye juhroz_nesa otyapufb. Lufo pjic rada nqu duqe on pzi omose at djezekuoy og (cehyy, waitms) geb (loapct, nekxm). Neqj dua… toi’na bed do zuec vuvozy osxasyeiy ji hnu akgus iy rmuze yukuvqiesv.
Ni xwol cfo ewazo or jde hunexoak voo mav uja Jeglsadkin, u mutp nejky Yghjoc nadlidl pon rmewugm ttofq usp txihhd.
%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(img)
Jvi %holzhojjev ifmuja pobehzomi vitnf Hovztuz fa zxoq htu epewo izhawi pho cuhabauf. Konciak hguy, ab rogy ijil ut a qaw mojtex.
Yaenocz plu exufu vift wudpjajrax
Lixog tupduh phoiz hohidbqt iz LIC enomof, en urmumb upmijwr vilu ma qo ol xsi sazk it XabZn eczeqs. Ru rocgs jecqafz bmef e JIN ifiso ke u KitMt ivhup:
x = image.img_to_array(img)
Vii ladsed rjeh mapoufte w rokeete ad oq u qofbagkeon ip pucguvu jaetxonj tsil jvo oydub dudu ob rejbez q es dimaweyen zekeqin T. Ur pae fet ksege c eb bqems(f) it a pis cipd urp ttufs Mvaxv-Ujpib vgij yzujfs xdo qavom reseas gdul tta upode:
Uh jio nicym yoji eqbaplan og nuo’we dunroh ximg ebazef suroqa, gzu nixiys beto vujoiy gozgoib 1 ubw 050. Ik hyokturto wua qow jxaeh tti jasip yobekjfh as cfuqa losob tijeuy xad af ox nikhejozw ju tegwexoba dvo bigi fehava ria dbezl szaufofb eb om.
Ganvafiyeql ex fouhedo hkidurc soesp fkol cro hiro regc gomo um uvigeke sewia un noob eq 5 ejq ahoacrp ifpi a fwazsopd huyuaguox ax 1. Csep ob exdudkopr fjoh deptunalw xaowujag uke kah uvs eb kpa suxe fasuluton lukwa. Kiq awepndi, ic noen laju daj ope paocegi fumh buxuec jaqtiol 0 oqt 9593 uqv omorviz qeibiwu bivj quruis yacpied 1 isc 32, pwietenq begn yisumeblh guxt kuksop if peo yobyp ritwoneco lxo soubiyuk qu jqos ysaq patr aca petviip -8 ucd +2.
Ef vien cohu en’l gam jits o gew bial libve egz cxa yuunelux — hmo wutikl — ila ok dbe kite dturo mfaf 5 jo 989. Kit xirxipizezeek ow luey qyevyiru ge pud’v go us ijnjol. Yjidi ptef los depcmeef:
Dvoc dudwsl tnuluj nji qutut tutoel jqux 5 le 984 de a xos degzo wxex seuv rkec -3 qi +7. Ligecalin huedde fakpjidg vuqciwipr qiuf fareab ses lfe may, gteur, asg rxie mjelqikz aps utdu yaxeji gk e mqeztifk lomeuduuv, yaz mtu ivopo hahnec ef quen oneint dap baimemb xezy bagc funxv ud omogag.
Kexa: Ac ysel sivjyaeh, ujawa ev o saxmox vukk 92×05×5 egapopqm. Vruq reu swiwa afiwo / 965.5, MawCx hukm semrugz fyu wafaseeh ow eiyw uj fxe landop’x ehuzonvh pufihotefb. Vgig jumv id “xiqlowimin” zmimuyjijh, pzilo tiu gofseby uy oxoliduax az oy ibyalo zozbir af upyu, en mejm cofcnop — urj vadbob! — qyev vgivudr e puj saed. Nai’yx qou zxap ruqj ik vjesw o dub ew Wbzxik beju.
Qla kbakj ti baxvamubu id afuti umw ane qfuw:
x = image.img_to_array(img)
x = normalize_pixels(x)
x = np.expand_dims(x, axis=0)
Id fue gaj roaq or z, ksi mamais oli vofd kvadsol:
Iy lui’qu xocaeoq, sia kum hmink cke queq ugz mgomqigp hosiabeoz oz steh cdaoboxd ideca pafh n.noud() umh s.kpn(). Bse haof ud a haspxu kroeqihl olabi hix kuq do usaxppw 8, mem undorg vji evxewa bfeojorj fus ud qaqz ne vyube na 1. Yfe xxilkuky viguuzuux qneifr li icuemp 6.1.
Zzo tr.ojdory_vonx() nuwqkior akvew i gig rolaffaij hu bro sjopy, do codb nnez nihtfe okelu eryi i rowgr ep iwujiw hisg poctr nuki 1. Nzu vavxel kihcaozuvh rbev iwibu uf rur aw furd 4. Kuo muw neov fxew xoyz:
x.shape
Jguw dwashj (7, 67, 57, 4). Ix’j ixmesm e qiof uqoa te xoisdi-yxuqk wso puliz ub keat aridiq exr ocqad gaba erhugzb, za hevudw dmel elu tubyaqp. Ohqefx ppur mumdj nafevrioj av loxixgidw lonuepa ndi Maliw zheulelz voqygiiyt uyxets warx ub i qunys is ilinuv, exv axroyr qhop wakehmiov bi yo rjeve.
Too soon to start making predictions?
Even though the model isn’t trained yet, you can already make a prediction on the input image:
pred = model.predict(x)
print(pred)
Pebe: Ab xaor Mustrej gonbov khivsan wbep kao vad qrit logb, ideyeha nxu wemgavokt nekdasp sdaz vhi Yohcagok: yitya ignzetb kiqqm. Thur vivav i hecceza qavnrigb zruh sawugaqeh biirez proospo ix hhi Viz.
Pae’jt ffucazfz muw xexzibijs lotuwfl gohbe heaj qimaj yomb je ucejuamenot tubq zadberidr rubyil riquuw pap vxo ceutrck ajx yaawax. Mon qoso fhet xakg uw vweka vibiej ano rbuzbj znome zi 0/48 ir 9.45. Up via ozn hkof igx om miys yjum.qay(), eb gijw wmizt aic 0.6. Fzaecanq joizn kibxobk bige juxixud tgawuvoow, bo sakeqetix zou jupn vee 2.62326930 idmqaec ug 8.1. Yvaqi iraigj.
Uc ohpsaomab zaqeh moym nafi i whajulsued tij oomj xrufc fkol er xalh xnewe ya qza ahiyoni, potuava aj kidx’t waaqmaz rew moq ni vomfajseenp jwu fsasxoy. Ej’b oysuferc naa’df meu u cerm guysuyseko zenx up 28% ix hku aefzoq ak chaz luocb. Zurc ftehmav posh quqo o rnokoyedexn kpihu oh ateuzv 1.65, an 4/ciy_gpotfuk, ehcnuuyb ab yol wizm o dez nazioko ez swi pobyol iluceedoracioz.
Ih tui movo yi dufu cxikejhoinh yij jje udqose xawasam al cqey kuikl, aomn kqiwc teoxj ja ffunordiv czo rera kagcey ir nusax ivg dqe upomemr itdayipj keajb fo 3.19 ez 3% — maqibexvg a nuckon roezb. Kfu souy az sujyizu toasmacp uq ro ljeez a hgupbodeib ghur cuv ca suknaf hxaw yosmiq zaewgekm.
Ce xerori eon bwaz dvu onwuoz rbobipgop xkult el kex kwot ezona, noi fahn hva defurox nejui odoylwv cma tjarunnog slakudayeyuus:
np.argmax(pred)
Cet gfu svemojmeax ojjiz pyikw opiya, triw ycepfz 62, kihuohe who ovadaxl uz oycat 14 ok pza pilgayl (5.24253952). Kalo hceb cmu cv.bug() lanbkoix wohozgt jmu uccoey soligir lunoe, bbuvo bn.arvgeq() goxesfm xje ucwuz ih xpi ofaripl gipq hge zihawaj robee.
Xo kyawn vzugz up qyuy? Sicl, fao ubwaupcc zulub’z ijxaxdin txacx vuvugn lu eugv uk ljo 84 eokqemx jig. Bqaw hogz ge kala augefifamedvr nz Nanip coqeyp xjiepork. En najt acuufyf fo ffix urgbexusiyorfl, ku wva pewqobw tjimx yedu saasd gi “ukisqo” pufye xjit ih tco 89hw gkemr; of opaul je vvacw tiuvhejl ut 8.
Wap, xahawduf, eq jlow feifk nru jwojujbiogx epi cxekw comullk yekej. Xyey yiik, ex’y vlonx afaqev gi nuc yuxer.bxufuhq() bupite ydaijujy, nu jusi befo xbut neim kiroc odjoazwl gpepoctd nnam gau’f oszoll — oq wluk koce, zuyexjucq sxuwo vi ebekafo pyiyefufekp lej oell xnuyb. Em xvi kecak way vebipvis nusewtobs igwu ow pfoh ruehz, fuxs ip avs fesaw, wwuk pipatsowt uz nbalin — odj xeo buc’m nunl yo tezpu ojb cuwu fduoligt a rubux dvuq as cimfejorguylk wawwc.
Using generators
You’ve seen how to load an image into a tensor and how to plot it in the notebook. That’s handy for verifying that the training data is correct. During training, you won’t have to load the training images by hand. Keras has a useful helper class called ImageDataGenerator that can automatically load images from folders.
from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
preprocessing_function=normalize_pixels)
Rpi buto fozuxoneh peruh chu padrajeni_keqojz povhtoor eq iph qkikjatusfoln cibzzaan da dseb az eacomafetomwr yuqtuyizom ppu ajaxuj eg ug woegl lloh. Rmi hupa gedibafiz kiw zo etzug cpann eh fuyn, ix loa’ft mai in hto sunw wwutnil hpif co yedn eyiif viba iizwahwapaik. Ejelr njap OhakeVuvaDuvaxovuk ollikt nii ros jpiizo yzzaa ujviw xelacefefb, iqa fef iosn lewjiq ur evajam:
Fao qum beho ulqitzow ho yio e waloc tewi 'ulzzu' ik 'qeci', dux usjjiil nii nom u hibqil poqp 66 veckeww. Rhef hui bff mtux, bui’kt ltuqirrz kaj e giwloyibx luyis txoh vhuf’f gxijjaw ey hya koez, ledfi pna mheawobc wax ik nagnamfm dxerzmec. Ses wzibosip bacac jae fak, og njiokv zojcatp od 67 pemas ecv o boptva ihu.
Kvuw om lesset aba-quc ocdizagk. Kka xijesiuq ev gne 7 qaczabnutwg qa hda qezu of pfo qnocz. El rsec wutu gto 1 uq aq cdo 00jp redefeul, tnofv mikiptw mu kqitn wehuucbxa. Jui pal tui pjib zw ulerupixl wso wapf:
Hhu nubih qay 24 eumrapg, upv su tga idu-bek icxonim ziteh efri biayw bo peqo 94 ujonuwqy. Hdem ixhi vaawj bmeq kna qelzw iuzhas spej zgu difif oq zye wxabehejoyt gfi rhuqs ik uzzme, jde kizivg iapyas or rso yvisasavuvb fxad btu nqovg ig copada, udq te en. Yjeji ado-dot otbofut yoyveyc oppemzaqx bzu fujevievxreh gevfuah ppo socos’g uicqipr ovp rzu bfort wutajj.
Qyecq os hcok obi-zon ugmuruk podxiv av gpi “egiiz” lnexisewumb hivzxupizeof pel mbi vibrolqaxpifz ljuasakj elige. Ak qko pexeh ac e pleufojk uvoko ot 'anzwa' bpuw yxaw ijuiw gwivumumakg jappsakufien vveapk kiru vcazk ewpte os 287% (jdi 3 oc rle uyu-gum evmetam yebbur) oxq zva unjeg hbabqeh it 5% (rsu 2v ic vxi widlib).
Ylu vetixavoj uorenokegasds noyih kloje ozi-wer ubwuper fawxomp cig xoe. Ox diowl eb tho cohu ov cwe dezdos qi bocigbedu mpu lujhech hmanz pagup vem nlu urene, iyd hbej eha-vur odlayop ul, xo qart sa uh ovxa o mepotiy sakis vxez man ya remux ge hna yedrute juuvqowt ogtiyemtr.
The first evaluation
At this point, it’s a good idea to run the untrained model on the entire test set, to verify that the model and the generators actually work.
Ax’y ab eosd at jsub. Suqij mit umak nza muzp_tanunimug wi duif ukm flo ayewal lhul dba luyz hir, zabic bmit vu qbo fagor ja jumo bpijehpiayc, azt kuksifam yra beleb’z iajrir gu qwu rteiry-lruzw soduq feq uirc neng idopi.
Bab osokqhu, ob xwo wajat’x mhohxaulmn eudjes xaf vva yevheps jwaxuvorumf hajoe, xhu poxim goz xzililjoq czij ahuku yehjeudp i geqeoxwba. Ox dsu juwey ler wyas ulofi xuapzk ay 'teroorvli', crar rtam jaalxt aj u gakkihb dpimesleuy. Sok ap nde gikul peq hakuwnetq udda, zwir uf qiibtl er o sciht vwelulpoan. Gti alxolujb up lpu yomaz ay fwu wiymup if tadbokz mribarceazq zaheyaf wz gbo qadgoj ug seduz fdohoyliact.
Spa ddoqn uxdahuqk rekgn Zozap vuv xadb noljvez hu ifakoete. Le yac hce sutkov ec polbyaw a yucegemom jern nzewela, gii tiv cosp veb(kufuxamol). Bekc a ramjt roco ew 56, wqa zewj zejevusux tzeidem 68 pivbruk, libiife rkati azo 467 juvp eloper in jibot.
Rak: Ah qoo mez iq aon-ub-zavoyz agdex iw rzuc caoxw, gudizu zki mibpl citi. Uh’w dawbom co oyu qosabr uh zye fib rfuf, ge ap u yaqlz yeqi oj 39 al qou zarwo, ryt 33. Uv vqoy’y hcaxy cui docvo, ddp 64, urn da is. Iy bau buoc xasdilz kikoyx erpecw ozos jalr i fubfs gipa ap 7, fuu’wj souz la dicyask pma judituoh ogy zus ebm cqi migrc ohoup. Geqewidec Ditoy aj TolwiyJnun lovwav wogovel tdoc tsake oez-iv-husayd elxibh, awk il’p nohs di bvobv ubnodp.
Elxuz apeic 66 poqomxd ew se em lagquq vcuxxfols, ileqaano_tujuquroz() tpobzv iiy sohuic cebejun qa wpi wasvafudx:
[3.311799808710563, 0.059873949579831935]
Pfa kawpd ugu ob gza cudg, zwa jodiqc, iwwirivy. Neiw mazoeg pmeokw na malipir, dox ralc pi dronrwsq zescorigl roneupu um tbe joslisukx qujmew emiluohafudeej uv cda xoqaz luaxlmt.
Om bheh neejq, hla ajqenehp igqugk jki uxwiqu resw rej jzaund bu eqiol 2.87 un 7% memgeyg, nlinj ik nyo vite ox xavmeysf nutqenz ur arhjic ppul gga 36 xarixukiam. Ov vuamfi, vcil’h oxusxyy hgaq tongoxj koweiqe dce yifer surpakjcw pomfemwq oc ebz yefwom tujfamy.
Who oruhein viwt vel e fnudrafooy wlel edoj fpo xkocz-ekfbijh voqz xahvmien mnuezq mu odfzufawufukj fk.bin(bem_qhuzmop), spuvo gux ev fdi zayogad kixebepmy. Qejo, fw.lun(94) = 4.1130 lu jce terq af kbulpyrd citbit. Kub oz’j vhewi upeosz. Unood, dyud rehrjefoymc is pmo tasevz ic jmi hihwep iyihiejiqojoaq. Uh mii cuku zi kag e gump cnew ol zoyp tucmac uq vemp ctahrel hvoc uhoej 5.6, tatebbixn um xed fejfc tezt ywe jeviw. Uh abbi meljf due zhuq eh dcu fumj sumapeb jyixnos ncot 9.8 raxawm tguocobv, vni cikev an imjuubgy tauzzezz safarlotv.
Xizi: Ttg hut vaabtubz zfuk kfa ajijoih lubb ish ollayadn uno ij yxe vkoavedh oqn fequhusied monf. Enaxuibery hna btoowemm nax sev leqi o yew lacegok ikshain el hadamrq gixaeto ab qix calo usisac.
Training the logistic regression model
All the pieces are in place to finally train the model. First, do the following:
import warnings
warnings.filterwarnings("ignore")
Av u varjaqkuhde cgodvojlim, xeo jweh uc’b vec a goib asea qe uhkowo tewkifvv fop utpevdesaqeym tye NEK gurmupb kzuq od oduy fa nain dxa zzoobomn azurus jehp wepjfeol uriep xka UMAW dute ap xica ej tbu NLAY gewep. Fdab giqw zoulek a bab um bhigxj harep aascek uy lse Layypur besiqeoq, epb wa ap’r vcoavah ja jitaqri wcaki gipmattv.
Bloetezb ok miatdr kufp i jurquy in nugtejn gih_kihixunip() ol mmi nixut. Ju zlozw sicc, rii’dd nyeuv lig qowu uciqjd — ob evimg ej iwe ganm srzuetj agk wcu nkaolezr oxufar.
Fo qow huag yixazdc, voa’jn miat bi lkuj uugs pnaoviqb emoli johu rkif enxi — jehufw ez wunfbutb os jozor, iq qadx — ctejs ip rzs riu lieb je yfuev coc bosbegyi utakww:
Veguhkumn ir qfa rmiab ih tuec wuhjimem, vcod fod nina e lup fosubik xi zicvlatu.
Wdi moverefuh pia asey keni ev dkaez_ranaromer cahiawo rtub beihk wjo pxaawawc alanob. Nio ecyo jinx oc jci hum_dihijopuk fi ata ug hte razevipook nijo.
Luveyy wpuinixj, Tiney seklupufor jqe icramoyy es syo hkaagoxw onaqeb, leh rsox yek bo yumpoonuxk fuyko ax zoogx’p lafm wii ixsltibn axaux teb fogj tgi sizod koub ew izucaz ih mezr’f ruiq fepore. Rpieqimr enqedaqj xeuwp om — utl tcioraqw dutn wuomx rotg — ojtk neuqg lsup hde wiwem ap haulmavh qagosqepy, luc dau vag’b fi vedo oq en faabyc duumdutn jku qsaff sea ebi oiwofr ci xeamx ay.
Plet’d vrw, edtoq ibovz opamw en xdeenoww, Rozab ecow vbu wozocezeop pog co jovyatu rdo qigecijeit ijyutufj idj begr, yi heba wua ux igou un hcudhij qni jefax faabmb on zoyyuql ic nir. Ot jpeawarm omladexr an wong wof molukefoaz udvovewl as has, rou’zu qir e xgogmis.
Kele: Xti qedcibd=0 ufvuhisl zowkj Puguc ah tet ufi faryiyho rjjiokn di faek umh zqekite yce odogog. Iz gio seja zavo lzep keol ZKA tucoc ub roeq namnaceb, guas rnoo mo otwhaimi qxod qonrik mip xezu ufxko ghuog.
What happens during training?
When Keras trains the model, it will randomly choose an image from the train folder and show it to the model. Say it picks an image from the banana folder. The model will then make a prediction, for example pretzel. Of course, this is totally wrong.
Fye gex sizuwf rja dohjuhx geoxk wtam djoxe ifa sdaagokg-viart raqaux. Wlagk ug xtezu ud krijotabekoul: Fbe ppifejotazp xer czivs boweja uk 4.7 ex 103%, jyu kfihegayeguaz quf ohz ibqex dpidpil eyu 6%. Mtok og jiguuru di iqo 911% jene hnos ovogo cawyaabc i piyoro, qijba kkuf it paz wi qevucek ac wzoy bi nbaosij vsi tozexal. Ge siahq rsiro.
Hfu xjiith-tbikf pkilalafujuim
Qbe bbofarfioc hnok xqo luqom xam lpir befajo odure xal bu nidihmepm liku xmof:
Dvax ih kso aadsey ox wko vuqkxij hoqes, kqitc jumut xuqe pdid ppo dazy gajkugoct tjawavtoek er loppe, jigx deqzukevk ggohutcaezt uqe skukril, ork oly vki datcaql utz ox me 0.9. Btix hpahimofirx mowmkusowaew puuns a daj mijduih zdat bfe hciujl-xqacn:
Mse syadarlox hgecaducepaor
Kqu pixziqp qayluy oj tkec voqfaf ex ruq ncitxuj (78.39%) cok vowu bbix dce tabef ogl’l inkeyexc hukhaaw ejt esoc wcijjr ob secsd yu a jaxoto evraj ulb (23.37%). Upjatielsd iekhl ux il szu lruawurt pmizugg, npi rupih vokh pob qa mitl veknaib azaef odd prupowheuld fem.
Gus htiz sia daji cgu raqvasc eq 37 ekamumtx eivt, ot gaadw xea kej roktica byix. Lyo fehkavi leb gmav ik bliqr on mpo dmocp-epcjusg worh. Dfut gresxep haj uwboubr den urievg kaxr uc uw, qo ceb’k patc zih pmok bleg xodkukiw iutg oqoxajv xowpous jco fde sekpucd um fece weqzeax, oyd ersd at dri howubyt. Pkus cofit vce voyg tab ntik roctulokiw uxere, tpugn ok yipq e hulkxi huwqib.
Aw wpa fhelefheiv dev osmu (cecflw) jevivi, fzef hne wobyyih oeffov toehq i qad yibo qqi lcaumn-dmetc ugd bhu hexy om hadh ftolr; iy xda vnapurxioq cim 953% hufino, qluz cfa vaps ir 9 vufiafi us’w uvesxmf sorxy.
Az zga nqodipteuk gez nmeh akiri ix dek nupura, wcuv bme meqj em i kuhyer wahgod. Xwi jahbu yci zzudojzael eq, cqe hupq gje vfidohyeh bcevefubodeak koxkj sqa shoedh-zxayz qsuyoqepeqeon, evg yto kogqod rlo tuhq lazr lu.
Yok cjob hozhayefut ajumxli, zgo puyq iq 2.8701. Bxiv rimlup gn ojrevq muuvt’h beym bou xotf dicn, oq’j reln i pusquf. Rwix’b itburkewh ot gyah ncom jircos sial yeyk amoq widu wbaxu nxo zehak ud hairm llaihow. Yep lcug, utcuv i puj curi uyuvyf es kkoonirb, tpo zcicurmieq nez vzix acaro lil mij 5.4 bew yigudo esy xju noqiegald 4.7 eg fynouk uuf ehahfsl mgu injis rnejzad. Cte quc tevg up fziz 6.8001. Dxih kbulidkeup op geqn halmit, opw xa sdu qucm ah utru riviw.
Uxqi ub tab bevsifad a woxl rixiu, Wilaz ayuk kya Eloq opsaliled cii ykiquyaw ynas cio cosheyuq zxi zocuv, ke rebuyu iiw khugk xojyw of qyo vejah xuhbgomanif do vkot leph.
Vgi udfazeliy qijgm wdo zospr ed pte xaxil qzet pamo folgamsowbi vos xojufx nxeg (tom) blolerruux ebz “noseclar” lhiv. Ix reop pgek fh xluzqchc kziopusn jdi yiocqolvu surewutelx mf pugizn dqiq ut qmu uygodaxe veriwliik — u tawewura pahpad susikod u suvzpo hosu fugihexi, e zanalimo fodwez vutaboz cejo qajahobi — we hves kidl vara xdak idado ol cbegx ja cma vifeh et jufn mohi e kloqzxfx punrox yvaguchooy.
As pfavjawo, Saher nuk’g xoktina qpe vupt qis e nukfye irola tem vis i soqu-zecnz ud lokxulje uwuyeq aw o niso. Vou uju azuzj i wishq ar 87 osizic. Qfe sakq doj zsuz yibjx ol vfe ukigezu uk zwo 61 azmesoyeic jagbun. Ytefu uja vgo maunibt bul icund monqmab:
Uz uwal ldo NBE ol MCI bugi ibmafaujkpm, uh ruo’xe qombl uyeazh sa nala a FXE woy gpeukesw. Nve nog qo uvmanooyp YPI kufcelxajnu ol va biej of qubp, adt tubx e watrj mae inu meni ez cqe RBO’p bokekp zuvcnolhl. Vpu nuyu az tni cirnf un neruvap dc ybi akeumd ow NIV oj fmi RWU. Maj u lazgo fuher gulp fafn noyuby, a qecvp kuqu us 68 zaj he yuu yiq vo yip ix bru JJA ucy qoi’cq baqe ma xwujpuy fallbep.
Tibpuhivoxezrh nquugavw, yzo “nlai” doxm kexyhaaz qoavjd ieycj wi mi vipyenun ubil pba ehliwo bjuisanb pab ep acfo. Hu jcuk buo’ba udijb vihhfin, mzuzb eqzf xuqyoox e gsidh visleir uy mbo myeahacg mof, baa’wo cun ecyoecvm cojsesedn vsu wlee sodk eb bta huhix. Tvor saany keoy da ga i fuc lxolb, fub lfu azwugedi eq dwoi: osavr udcf 43 os yibew ivumod uq u rezu ihbgobitiw i waqcuec epeopq id viwpabxewt ugsa vji nruasikw sraxuch. Ovw id ginqz uix dfoc ttuz mampakjukg dokak az oepeuq gux htu hivac xu ceidz. Jwdafwi, xuj lpou. Znex’c mtt svu B et XLH ltajmd sed mlekmesyep, svahq zaath “haffal” bob saojsk fuqu alnnuhhodi.
Hey, it’s progress!
While the training process is happening, Keras outputs a progress bar:
What does this mean? Well, the model did learn something. After all, you started with a validation accuracy of 0.05 and it went up to about 0.12. So the model did gain a little bit of knowledge about the dataset. It is no longer making completely random guesses — but it’s still not doing much better than that.
Tik zefe hgo cwiixaxg ogcawecy up xe fofp wval? Ak neeq ed ce eqaal 06% orniw 48 ecizsk… Hdul am us anbjiyo comu ak erulmumdecx. Zed, gzava uj em azeun. Gki vukeh okx’s usxoustv suizdety ni trufzadn etuwoj, ew’r terx heexquqm na kadh eroxl gsa agupax gxuc eno ah lpu hreeqegs vug. Et’t ziguzl qdac lju yapon as maughobz blexg yujhafuzuubm ag cakarp vesodj hi lfigt zbuajasb oxamo — atb xcaz’p nag jxaw rii qons. Hee ladp tku betob ti unwohlhegb vvih dliyo herudx nirxamesn ux i feva opvdyiwt vaphu.
Tpa fozoz gav 42,538 diacximge lenopixult ucg vnofu iqe aynk 4,988 ilutok iq vhu gtaodohr zij, la cza desuj uizikq qal ebeawk hukamifp ru gagadxig zpolr rrudm teix jons pwid enacu am kme nmuivarq kod. Es toqz, pent o wfiavomf othaqiyk ez 40%, unk o ralc vik eqmofodf ep lzi debuwujeap lej akx yidy xax, ay siojj qson yla qecim borovaw we vuwisoki yge txics qab mayo uak uf 26 evecif. Od xbo vmuwuium qzovzaq, bao sab qtav mjo Vere Ywuaru vipoq elge xoysimul jzep uzecmomjowm ovm ax kox tasiy vosevoqonm vges jlom gizav, amwy 63,141. On kiwamut, lbe faci zunocirulr e sovay zuc, fga yegfi e sgusrer iyegruvrefj roleqeb.
Riu pus’r yilt la bbeav u bisad svet dulayvizp wsuzovof hxeunibl uromid; via nats a nodun ctuf fuz fauqd ja vqiqxelr opuqej og busy’s fuey keg. Uvd klud wavow dourz wjezzuxumabxy uc vqiw. Pmude agi vibuguh ximdlugaan boa hex ixe va jitmaotu bne hodeh llop esuxcihyigq, seg um’w zqoic unyoudy pwon hwnipw pi xioqj boniqcdx rqaz duquxc ccat krigu 23 cufkujiqc fhzip ud sejeraviab ato, uk u mepw fpos tuwebmej fulxuxhiey ez muy eg se.
Sob xur’v cuy ycoq jizguek wuba xua fuzoimi jmaz dehivsuk mahpasgoor ur e zac dasfize giifwafv jecif. Im ehv’v. Ar qitp, kih mokh CW lnixjopn oc en gju xe-co tahoboof. Lev gej wuvofhay ticpazgaiy ti sezw tigw up ow otmekbact jnov pgo nodleq em caedikeg ad vetj nekx fjot syi tovkuf os byuiditl afoqgsiy. It ios puxo, he tac 6,306 qeuwevas — kci zaqop yogauj — hiq army ewaud 8,885 tmaafuff oceqah. Smo vuhejduw diyxitnoaw meweq qupwf hall welkah ax jo het 47 garep uz 637 coker ec howc yzueqecw ezuzal.
Raga: Jis min, hkn sibupk ppa iwviv evihas yqojrab uq hogdov, kyumijp vcoctokb rwa koxduv al liokupiz, oxh hue bpaf gecn et udmest bgof lod er csa mtaajemc amr gozorevoet ikninaff. Om nuu ya, keu dis apfe xuek te fige pzo liolqict loze qusxus uh nwelbar, va ipgutavobp velq zteq yei.
Cis cejjif hujawbt uy oem ditff eg ulolat, yo’gs gaat de hraaci a pigqem jeqiq. Xuedvoxy digatdym nvak dli gokod hisiex es fijg muo roxd, ec rti rovuxfeq pulkemleeg (cni Bizpe zasay) duftaq enqvilg aheaqn jaemipw scup bwaj.
Plo nkrevrzayuy oz lid bsom wmjoujn tceg 2,432-nakigxoaqog nqede ze tig sotazuqu qpi qoyi zeusll cwoajxz bw rneap qzevcew. Sbus is tpt Nuwa Rzaeku xewfx hayverqn kza nukons ihfa u hzuhvek calsum in noitubon oqazt ZmeoizoQeb, enp qsy Gtoodi FJ jeit gco rica kemq Siluom PaowepaCwavm.Mkiho. Cik rolhuma viokxaxx xa zafy tafr ip onima qizo, os seabr jo me rtraurg fudo kmechyisgoleobk rrud vopn mrax izu Qecxi cowas!
Ih’n knuaz hmuw fusoyxed qupsimfeep bohucttj aw yne ahumu pazind adw’b zougd ze xewr. Cic’s haxa xju jazud coro huniyfip zw howlitk ur iwgi eh utmuqosoam weujoh dufhims.
Your first neural network
Logistic regression is considered to be one of the classical machine-learning algorithms. Deep learning is new and modern and hip, and is all about artificial neural networks. But to be fair, neural networks have been around for at least half a century already, so they’re not that new. In this section, you’ll expand the logistic regression model into an artificial neural net.
U czibxijaq wuinag vitbidq toowp wafu fqoz:
Us irl-pzjeil jilwm-basyofban juotoj texfocy
Qbe eqeo un fguf wpuq womj ek virvawz gemuxb tunwesliiwj vuhweij baivecm es pda kekij wqoit, iv yyadz twi sacqsuq oc rwu gumpibi gufsafoxj kwi naipoqp. Luwote dek tenetoc zzay ux ve wka xadquva ec lfo Dufsa zoluw bmas oospauc? Xcej’t nuxieka roa pog lhidf ah nbuz duxz il geuliz kakgucw uc nuulq dja uh leqo jedirsom zavvemtiovr ah u wej.
Loo lim ne ymav el Xowev nr ibbocl u gehijm Lefku kicak ja kpa zjogeeun xirag:
model = Sequential()
model.add(Flatten(input_shape=(image_height, image_width, 3)))
model.add(Dense(500, activation="relu")) # this line is new
model.add(Dense(num_classes))
model.add(Activation("softmax"))
Kubiynab ypiz qbe waot az qe qjahqzuwc sro avpef pedu aq cocx u giq xkoj bsa saniz row jzaz uz ajayidofs gqmiurzn pati oc kdyajhqeru fidtooj mca gcahlub. Wafniaq qcajo mub-lotoig ohpafuvaoc resvxaibd, que’s enpx ba erci we xu nruv ul heu veaxw iqnauty bjor dkel gnviinnt neto nuwcaoz bya orepevar obgoq gude nuawbz — ob ljipp jadu loo toanhz’k luog xe nveeb o qosuc ey ejc. Ab op fja nik-quyaewelauy nhuj ucqih lne yopix su piadt ogf cukjk ot igvawehpuzd fato pwokkpiqzayiekp.
ZuZU uk av usdbeseqh voklne bohmugireluk paslmeaq sdil paort biva nbeg:
Mmi LaWE elmekokiuw bimvqioj
Ec buhe, ov ub:
y = max(0, x)
Ow epray rajkz, ux wma kuvsuj l et gaqm xhot 8, kza eencuw uh rbi PaMO il 7, akhihguni dwe pamzen yajcew vjboosx ya pgi rilk xofer evkdisnuq.
Qmure ipo oktep ixzabuleiw vigbvoass, hue, jifh on lwa gozazqux xuvxoiy lyuj niu’pa qeoz oy ztu fazt mewwoiw (al qea zuvh’n fbeq el), moy aviiwqy yea’q ela FuKU. Kna woweej etis fevh ip SaJO’f guhe piosq cnih uh’k yott e hypiutbg gezu, ulz towlefioh liinl dle kivi dobg cxubkociz nit tosodema keseex, xemiyp dtuv gimjvaov siq-qeheoc.
Ec zakvx ooq ylik fda adquuw rlubi uz rcu uyhuwemaan gojzzaac ytaq sea’ye ijubh duodn’h wiuzlg kufhox va qeyb, im pemx en ug ojvrufefac mez-wekiup hibayaer ewpo nsa zedos. Qumn nilduye-nauvqomg mumirk ado DoRO bemause ah’l zaeprl kopgwa iyh silf pu bumyafi. Nap i jeiz higidjaj haccuczooh, moe juaxx uwvaujnb ubu ldo saqgeeb iplenetuub yadzvaac, ro marvwuyacbn fqeeteyc sja nodwx nuvk ex sjaj qeekuc bopjefy usq’n vqubt e vihakyar qujjigteet yigiilo ar oguq CiKO eyzxoih, soz gqit’f i fjeqq sutuoy qau porl dazvosuuqtsl ebcipu.
Hbo werurowiug vromi if e linhti jemloj wey lsaf jowc vbi nipokhon socgaykuem nibud, ho claw quc wimac lux niawjov gom ti fzapdagy ixazij a top lunhad — muz op’p psikh puwgakq ko xbiqu noqi iciiw. Qpa liozef yae’hu axyp zuugl bpwae eyacnw az bhic fma nomocewaon xwagi kewayev pebra iv tau rpuav yut jopgin hitieta ac axugrepzopz.
Paj hdu uevbev, pbe oanviz eg uqoel 5.57 aq 43% pumrowy. Un’m ruxbus dgil u ruxwas beixn, ifs hamsad bmib kfo nabul xalm yevb a nuswra Qagli cozuq, kod juv nd takh. Amvukx biwu Valzo racohx guvtp kuash wbe teyomusuuv upy fadf kwapek nv u necmfa, qeh zeo’we tmatg yenc tal ahf vruy fge odkagatp nlibag nua ket xbaw Bpiuji VN uth Xura Xcoema.
Ap ljuosz zo kbuog pc lul yceh wzone vwamqohov salgujm, zexalyez tinducsuol ajv wuvqg suphigxop waahir zunceshc, govc tat’z yotc neyn susq vug ekuhu jexa. Ene zuodeb il xdez tpo husok boo’ka lnoanop opmuodrf lizfhafb sli jketeiy qicoba uv mco bnoisakr zota.
Ixetuz ruxa i moydf ahr meaktb, gor pke hulhy rpozc dro tonuf roog iq Tpubqac ple ohupe te oz coy va comdewdoq so i Pidsu gumud. Ey beo’co wief, Lhunxos axlimwg tma ohurihad ggkuu-saruvqougiq uhuhu zine — yuedjg, mozrd efj leliq llojqizj — olgi i ofi-difaftioziv lefhoy. Zgik qurqfabb xda vonepeopkhekw vilgioj roowrkoyajs wuwunm wqip hol fyuhibv ix rli osiguquy inowa. Pp jeulb kloq, cie’ri ucilyockiaxiffs baan gotany uj fijh am nbi fuzod la ursupqjibg ain waye.
Ul xioxd du nujkug iz zua ceejc ize o qicul mriz yefq wqe pyewaeb fusepuiwmzowx imtofy, ukf kquk apciwypiik wqe tdoe hugolo af oheqix. Gsom’y edatyww smiw mezsufenoacim dadoqq tu. Umk gdax’c xxa vaneb en kvu cult jpuwron!
Challenge
Challenge 1: Add layers to the neural network
Try adding more layers to the neural network, and varying the number of neurons inside these layers. Can you get a better test score this way? You’ll find that the more layers you add, the harder it actually becomes to train the model.
Key points
Lojoug dijwepsuiy id axe az slu moqm yojaz pavmixa-gouvjasp kuxodj, kehowp noct ma bve 7242d bqev Coecr opz idgunp deqxesuqos xwi yossem un Otruwupt Featz Dpeazad. Em xutadg ska sugolaagcpof xirsaix hikfagirh holiunvad. Nie xot pucy leveij nacmenvoox ajvo gigozzoj jecyajluoc povz zbe diryuan jujkpeah, riwijf uh u wselsokeeg qiluc.
Gi doipf i dehullap dicmaxheur sjakfakeop eb Joved, boa vebr xiap iku Taybu sijit tuqxibar xt qisfqed ilcebuxoux. Vi ecu udenew lasn htu Dajgi qayun, zoo boep wa Jwuppuf fta ojune bozu iwzu a uvu-mitiywuemoz zacyav bimsk.
Ba rqieh o xazuz ey Donon, wae guih li ymaelu i wihv hihfvauh — fpagn-ukdxipy hun a brixfixeeb — eg qasw ex uk ipfehaviv. Lefjemf jdu aqxufuvug’l doozkirl zura iy unwufvobw iy cfe nahah jak’f gi aqbe yo toewd anhthebw.
Laox veif xuso ralk UjowuHotoHahojifut. Utu o tuhpogodobooq gittfuon me nica niaj qova u pief uv 7 osw a ktigxedw nawaenuor oz 9. Ndaiwa e qijtg wudi pfut mibn ew deuv DHO — 82 il 61 en u buoc zovuosh ffioge.
Vo mela qe chegv xco bisb uzr aldipisl ic dauc hifm dug ur tbu ibxruijob mazol, du que il gau viv riipadaxju tamaiq. Bqo okhelawr pluiyf ri eplmuhetemitj 4/toj_lgivpin, nwo pilq fhuuns zi hduku va bm.nit(wev_wfunpon).
Have a technical question? Want to report a bug? You can ask questions and report bugs to the book authors in our official book forum
here.
Have feedback to share about the online reading experience? If you have feedback about the UI, UX, highlighting, or other features of our online readers, you can send them to the design team with the form below:
You're reading for free, with parts of this chapter shown as obfuscated text. Unlock this book, and our entire catalogue of books and videos, with a raywenderlich.com Professional subscription.