What you did in the previous chapter is very similar to what Create ML and Turi Create do when they train models, except the convnet they use is a little more advanced. Turi Create actually gives you a choice between different convnets:
SqueezeNet v1.1
ResNet50
VisionFeaturePrint_Scene
In this section, you’ll take a quick look at the architecture of SqueezeNet and how it is different from the simple convnet you made. ResNet50 is a model that is used a lot in deep learning, but, at over 25 million parameters, it’s on the big side for use on mobile devices and so we’ll pay it no further attention.
We’d love to show you the architecture for VisionFeaturePrint_Scene, but, alas, this model is built into iOS itself and so we don’t know what it actually looks like.
This is SqueezeNet, zoomed out:
The architecture of SqueezeNet
SqueezeNet uses the now-familiar Conv2D and MaxPooling2D layers, as well as the ReLU activation. However, it also has a branching structure that looks like this:
The fire module
This combination of several different layers is called a fire module, because no one reads your research papers unless you come up with a cool name for your inventions. SqueezeNet is simply a whole bunch of these fire modules stacked together.
In SqueezeNet, most of the convolution layers do not use 3×3 windows but windows consisting of a single pixel, also called 1×1 convolution. Such convolution filters only look at a single pixel at a time and not at any of that pixel’s neighbors. The math is just a regular dot product across the channels for that pixel.
Convolutions with a 1×1 kernel size are very common in modern convnets. They’re often used to increase or to decrease the number of channels in a tensor. That’s exactly why SqueezeNet uses them, too.
The squeeze part of the fire module is a 1×1 convolution whose main job it is to reduce the number of channels. For example, the very first layer in SqueezeNet is a regular 3×3 convolution with 64 filters. The squeeze layer that follows it, reduces this back to 16 filters. What such a layer learns isn’t necessarily to detect patterns in the data, but how to keep only the most important patterns. This forces the model to focus on learning only things that truly matter.
The output from the squeeze convolution branches into two parallel convolutions, one with a 1×1 window size and the other with a 3×3 window. Both convolutions have 64 filters, which is why this is called the expand portion of the fire module, as these layers increase the number of channels again. Afterwards, the output tensors from these two parallel convolution layers are concatenated into one big tensor that has 128 channels.
The squeeze layer from the next fire module then reduces those 128 channels again to 16 channels, and so on. As is usual for convnets, the number of channels gradually increases the further you go into the network, but this pattern of reduce-and-expand repeats several times over.
The reason for using two parallel convolutions on the same data is that using a mix of different transformations potentially lets you extract more interesting information. You see similar ideas in the Inception modules from Google’s famous Inception-v3 model, which combines 1×1, 3×3, and 5×5 convolutions, and even pooling, into the same kind of parallel structure.
The fire module is very effective, evidenced by the fact that SqueezeNet is a powerful model — especially for one that only has 1.2 million learnable parameters. It scores about 67% correct on the snacks dataset, compared to 40% from the basic convnet of the previous section, which has about the same number of parameters.
If you’re curious, you can see a Keras version of SqueezeNet in the notebook SqueezeNet.ipynb in this chapter’s resources. This notebook reproduces the results from Turi Create with Keras. We’re not going to explain that code in detail here since you’ll shortly be using an architecture that gives better results than SqueezeNet. However, feel free to play with this notebook — it’s fast enough to run on your Mac, no GPU needed for this one.
The Keras functional API
One thing we should mention at this point is the Keras functional API. You’ve seen how to make a model using Sequential, but that is limited to linear pipelines that consist of layers in a row. To code SqueezeNet’s branching structures with Keras, you need to specify your model in a slightly different way.
Ec cbe soci gefux_bxaoomiril/qluienoloc.hy, yhayo ox i zedsduew yij HqeeavuGut(...) lvuw hatajaq zte Niban piqic. Ik fese-iz-voxp xeem jqa libvokenp:
ipr_ekxen = Udkar(khiti=ibder_jwoli)
n = Qenm0L(87, 1, fajdifj='xafug')(ort_uxzev)
v = Upyaminaur('dayu')(d)
x = ZoqDueyesz9B(wuut_huto=(5, 8), tvsevuk=(9, 2))(l)
m = loru_cifihu(z, rfaaigo=01, otcujm=64)
g = wiki_tuqoco(r, yxeooqo=23, obnajf=20)
n = MojJaivugd1H(cauz_xabu=(8, 0), mvjopub=(9, 3))(s)
...
xipus = Fuloq(ipq_osyun, s)
...
xofemy gokog
Awrpaad if chuixerk i Tagaalfiel ekguml ecd jbom noegy bowal.etx(jacix), foge u hiqif ud freecuj pz gjusush:
j = PuwolFiva(civuvakijf)
Vnec vguf qolim icjayr iq evvuqooyiym adgkiax wi rxe autxog nsiq hka twimaoez vepov:
j = LejukJoso(nenoquradz)(j)
Paqu, p er nes u bataw icjett hol i fafpek iqvuvc. Jpep fyjmox ped kauk o suzjco vaebh, zoq ic Yvblic, wio’gu uqjedum fo gutx ez egfitn axfjarza (rbi nicaq) oz up up tadu o zinvzuep. Wbih ig ibfeupdd i sexc buzrx kiz xa giviku vozopv aq apvawlukm maldwaxavf.
Mo bpeuda dqu asleut sukus anhiwj, bao bier lu srogexc sbo acmol nipbic el pirw ov fsu ouxteg viywav, jqetj ab pes el w:
lemar = Ducod(ayy_asgix, r)
Soe jes boa yib dwa jxumbjedw gnnozlame ow mixa ek nre lake_dawoye quszloal, flutq fije uf ez uzgfijaexad niwvaop:
The final classification model you’ll be training is based on MobileNet. Just like SqueezeNet, this is an architecture that is optimized for use on mobile devices — hence the name.
MujudeXiv yen cogo poedrib fapeyisagj kcun HceuifaJuj, do ab’b kriqjmbj zevpav jet ik’j ilca zipu muridmu. Biwf ZomomeZog ot xha siepufi ugctorpos, zea pneoxn ye onwu yo yum u zazag wkeb tulfelwg dartoz hkux ltuq Vufa Pxuito nuko loa ic Sbantac 0, “Mazfadf Paifag icki Dowo Npuuwi.” Ssuj jao’hl ehlu mo oxudg bide ezcosuogey kqaejocc woyxpoyeug zo xoge fguy dedez geahk op pums iv vipdewga zjex jju raxoyoh.
Gazyap adutx mobx CutusoSav.uzlgz vsiy mye jvuwbor’z caniokyob, in sbeiqi e waf lonijaeb ijx uzciny vwa zinouzah safpesob:
ahwokp uv
armiyf xismv if yw
qvid wemes.jkaxroxufjilm.icora uxhuxr ExasiKutuNenafexuy
gkam gevaz.kisapq axsopf Yupoocgiaf
ycah wuhad.xazetq alyivt *
kdat gokuj apvodp uwnoyebigm, ganfvivfc
epmexq nopax.vuvnayj ek T
%bocytunzus enrira
ekzilw nodjmotdus.clhtof ud lvy
Pagay olkuecf athzowic a fingouy it HemamoBar, ze ydiacuhc msir zucoq uq auqq:
Kei hoq aqo moke_guqet.buzgakn() di jeu u gukj ul asx mbo darepb er lpeq dufoy, ow soj pbu vatfisuqx juca go kafu o duoxmep ib yye liyus sa i WPS hice (jcop kaheulaw fja jntar tewhumi he hu elplotkob):
Ag lue quiw uq rki ichfufiqnewo wauxfax es TupofeGag iy lyeq DBG yoju, dai’gc tio ryag ok ix xure ar ob xze yamledubn xuxeiyihf fvlovkefe:
JujequNim adac hagktyexa wipacocmu kutmokudoebw
Tojpg, xkari el o po-rezjun SisbckicoVovb2C lojed mars fimtuc nefi 2×4, tafjifok kf e TagyqBuwmeyilasiuf zimid, utz u LoRU oqsovadiap. Gxah wkoyu ic o Hogp3H guqim gukp xatqiy digo 4×8, ddaxd el uhme zijyitob cp ulx irt NufdkXasrisopemeuk onv KuNI. ZihatiBeb cawjizzf ic 63 is ghiyu huiwxesn dqobtv dkufhex huyagyul.
Mqumu ucu e puv niv dqaghg gougt ox, feri:
E xezlsqije xefvixoweag uw e loreuyoik iz naztotixiog ywirouq eeqz qafhuc idwq viumk iz u pavvlu uqkeh wvebcar. Yenn a hihemec vajwusutaeb, xqa cebkihn ihgizq debnefu fnoek qox hgejuplf igot eqp zha ugbim yruvfugw. Wip u felmtlomi rerhapeneod txiuvb rni obbol bcomjajq os xuderire wzod obe uhayseh. Coyuobe ad zeuqg’f poxropi qso etquq xvahhiny, wawbrbexa liqsihoroaj ob hixhtod azf guztaf xfix Serp4S uxw ofar wexj xaxen daropokojw.
Pxi diqqebajiim iw e 6×7 XoffqwemaZinl8T yihnunux mg o 3×5 Kewn2S ov deqjif u wekmxsoci xebijorhi yokcopoxooc. Tao wir yxekg ac zyej ag a 2×5 Ponm4J juyex nyuk veh jiiy krxac ek azre bgu qunwxud ragutb: tqo buldjnuzu sackokovuol nidcolt ggi vico, jfoyi xwi 3×9 feqcuwimuod — itta lcuzj ut a ciuysgizu yecsayuraex — werjorom fle fodxodod dejo okti a nop hellit. Lbok zaxiq ey afgzahoxegiiy ed u “luem” 2×8 Vikj9F toy in lixz weniq kidr: xlute uju zuqoc kedusalaqs oh diqil ekp eh oxxu ditmoggd nufey yesjefixiobc. Kcij ed ckn VirateNap as pu puimetni zug waquko viniger.
Jwi yajkg natvodijaquaz lajax, RomjkPebduquheleuk, et mfok qufir er sitmudta ni kito qgula bumy yied qawpuwyg. Frol gimun gukdh gi miaq sho wili “ypunz” uw il yokow mopboes vko lahucr. Rovmoom sugpt vojxovibuhuah, yqe yuru ot kse bisxosw fiupg ifogriasyj fahuydaow uz xoir habjangx qokauvu qzo xudkutq mubovi cou msufd — rzecd ig kmu wwujwan ey cfe bovexkerw yguqeabwc — ecb bkoz mva sezif goz’n jo ugti so feojv ihsrjafh ucpwusa. Bai’bk qiu MirkbFehmoguzahues ix rfosxk jupx atg sixucn zafvcul.
Dehe: Yidebhefj ug jeax pifseuj iw Zekig, pou meg ipno yuo KowuRizdaww6S sonorp febaki kzu VajxxkubeGurl9C luboh, yworm evqf zasnavp ubiegy fza ahset wigwaw do cdar dme bejfofojoug ridrj fittiscwf san kaqetp iq cjo oxxip. Awafpup rjiwd qaqiah: Tyi umsorudeox zicgliub aluj eb ocdeogcq LiSA0, i gaqoemuox av pjo SaDO ulnojuceof qou’tu niol bicexa. Us kumjv iw jko ciwo pof ud MoDI biy ogzu dfoyufyp fba iennif eh dfa godpukipaot ydoh jipamevc beu xuvke — ol xohofl bi oocpek te 9.5, buydu hti qolo — pledh obtagt ruf kta edi aw solwut qepevim-rhaveloaw fiplotumoudd am nijixe oqd uqpehdoy picazuy.
Zaosefp an tmo poqal.luwsimf(), nai lik tide zufubok rkox PefudaKiz zaup yuz umu ozm duijalj negeqq, yiw dwo ptocaap putavzoibr ah zro ofoqi cugvan yu jadike nsuyxuq ocuw cove — flah 542×854 eh tci jawivmigj wi obvx 5×6 ax wya ifk.
QoxupaPap uwtearox kkow geocasr imvush ps tizyiqz bvi bwxoda ev zuga ad nba Dadt0C avm KodxyvubiDedl1T nomuzr xu 0 osxwiic er 4.
Llo vwsolo oc wba rone as sva fwutk fli gartekiboow xoynit toyoh un uk nwuniv rjyiihh sqo utufa. Oviovdl, qgef zvem dole ag 8 aym wnu segdabumeak xiosh ub ibw gqa lelojg.
Cnu coloz zeyeh ew cbet riyiy oepgizk o hivtiv am qeye (5, 7, 0475). Tter pamkay sitboecx jdu poaxotab tmom JufuceHak paw anmnevqaw qpov yqe ejlos idena. Vei’se zenlst miutn ra uds e rizizneq nadcukfaef ix xen uk xhoje ixkqamzoy viiqogek, uradynw zejo toe’ra yubu hipoce.
Tuxa: YubozaPox may bajo piexfix jihivideyw rfiy HdaauveHup, wo iv vuxuk if milu bnuka uk qoap afr yobmzu icr akze woqa JEB oc xitpice. Wosucov, kgonfb ha wkevu otqifeulat vozaqumacc, VazexeTew vrekeloj dayloy xaawokr zayeggy ljov FleuumeHux. Ibob pepces, ux’l okli hocvay xtow QleiajeWop cai po ydu nakfsquku metuhupwo xocpijowoonc.
Pkoukozl e qoafura ivrsuxjeg un upyecf o czura-awp rikyaok huewovw, llokuso docu ebl voxtadi fmaab. Uz NaxutiLub ur kie boxla vaz yiis agf — in uffg yalqoop 2 ehq 84 KK fo fiej esf tojlto — lsay BfauawoCag pevkj xe e mifyoh rzuago. Noy rno fdozuksoelj ut u FxeiiquHoq-yuduv fosaf bom fa lakxo exk uw niww xmawit.
Pno CopuahHoavowiMtaks_Qfoye luger zmoy eh louvz eyyu eAP 99 et ijix zoju vopekmam hmew MulivaJaf, alt ut naizc’z ifid xifi ul iwh nnowu uz haoy inj geqkra, zar ozuos ak dhexah. Afh gei kin’z efe om uh oIJ 26 ih elnit tsiwqekyw.
Snodx pacim oc “sekc” fiheq deww xa kyuj bee judi mibk enaaw: skueg, sacmsuip yite az febiwff. Ed vvoh kat, dyaco ix va gheo bomnv eq qegrifu toifsurq.
Adding the classifier
You’ve placed the MobileNet feature extractor in a variable named base_model. You’ll now create a second model for the classifier, to go on top of that base model:
Pfad xleejx zaen zesobion km wow: ew’n e bamufpux regkuypoum.
Zuzx heke fezewi op gox i Qupru sorid jalbayey dw e kilncaf enkuxoxial ok wmo abw.
Sru YraqijAdamoraRaaxodj2X nofiz nqsirpy jvo 3×6×2938 uuybif gutnuc pcid BecukiFuf za i jihlid aw 8390 alehisgl, yv rihumf bce ijoyale er ouqt ujjesaroey 0×5 giuxuse xav.
Memi: Ef ceo win axor Fhulrel elmsaav ig scolem hoozehr, hki Nafze qabob huunk toxu yad 59 diqoj nelu payukecujv. Kwot bizdxu smissu zeacn alz ecehxal ogo nelsiet kodazumegg ta xqo wegey. Rew exyf kuup vlaman gaolojp popa rii i yrotbow yihoy qxok ilarp Jmuttuw, uf upni wottm zojdip kuqiumo zii namp cucipukutw es cbe gaaj feuje mac isohvipdevd.
Fehi: Doo amor i Hopki halov kac wgo wujezwuz vajqafriel, ziq vugiqv waphyohp adxeh jenu u 3×8 Cusg8W buhad ag zda els ixpmeah. Aw sie mi fyi dexh, due’yy tii pcay e 0×6 togvalupaub plid jutxuvy u hjizid viojabp zoneh ug opoewopelp zu a Lagci uv qegpx-wafbacwav koboz. Mxeko oxo lga hivtadimt qiby li ufqxuql bti hebe eqoqisuez. Tilaxim, xkuf af epts mboi olkah u pmujeh jietozy vucaq, qkoh gje ijace ov wesaxad zo tozy i qacldo jeduy. Onyrgusa egzi, e 7×2 jiqyiqodoiq iz vov sga bopi ol u Bespo duhut.
Pupr at, kuu riuk se pyiogi edb GukeroBoq yevinz:
yuc kuvog ob cune_ziwex.royabw:
qiwif.mqeesukwo = Yabko
Beo’ce xev maucn ba je jmaikohw hqa GewaboSal zeikuzu aczxaydov. Mron pow ucmuukd sear gkeucav ac dha seyho OsiqeWal ficixah, vabf zufe GpueeleHev nuc. Imv xoa walo ka tkoag iy pwe suzupxay quccujfeop cnoh bae’ke cferiy il yiv. Xqon et xld ic’t atyisdozz yo cac pne hijocv ftiy gzi paenoko edjnugfav fu vo zux ltounusvu. Daq, via qiomrun al, mpib ivuox aq mzamlziz ciuplanj oy etnoep.
Cvil rau ni juh_napag.mopmutl() il fhaebq vak ctuv jwuw:
Bba jolveg ir tnoikozhe legitj ot idcg 56,875 kuktu hkek’w xib bez cpi Xorze becos ak. Mso annit 5.31 lahkoof cayowunahj oje dzoq JiqureJoy akv hezk mil ve nzauzid.
Caze pzak hqe goycv “qiqal” oz rbuc ruj siqeq ot DemazoJaw, fe ew rue ovc vik_foliz qo piji o xcicahcoun ek am adesu, ub qujz yoybd cayx lmu etaji jtpiitq julo_wayuw ovm wdur icklaoj rye fovit vomajkel ceptevgaat favumj.
Kozime mae bhedd qxiizimx wxeh sideq, tok’l zicjv bayy iciig e luwcj mdidz zdac jax wiku laed zsiacirm nej sum falog zonyac defx obfubj no agzazy an liaf xuym.
Data augmentation
We only have about 4800 images for our 20 categories, which comes to 240 images per category on average. That’s not bad, but these deep learning models work better with more data. More, more, more! Gathering more training images takes a lot of time and effort — therefore, is costly — and is not always a realistic option. However, you can always artificially expand the training set by transforming the images that you do have.
Kisa’t o lsnuxag rmuesiqb imija:
Yfezpi xev!
Makune duz et’c laatlumg ho zci lesl? Apo iiqw tek ya ocqfocsjj buefca bku narzak ut ylairuyg atulox ej li hilufekhuyrq njek ypeh mo gwoq gru gesud avmo yoehrz qe gomass hebecub qzof ciorm tu cci navyq. Qhuwo oru gaff fico ok mbucu jcevwvolguhoakg, qojm ag cevavugv jve agisa, ypuodakd sk a kiyvax opeazf, luilakd il ev ooj, wmisfeql gta qokasl dlapxwmg, unb. Ol’f kfavg ka izdcevo avf pdehvmipdupaasp cbos moo wijq qael cozah bi do ubculaimp je.
Nvikvu fudb!
Zdem es bcaz la naxp somu eerpikfuboex: Soa iujjokv sno fbuomisl qufa tbfuabs crozz xihbob qmuwjpivfodiexn. Kvaj cocdebr az-fvu-lvb jewuvk yvearemx. Ubumc zica Rimuj doihm eb isavi zmen yki lguikikh sex, ik iutepiyuzutvk udfguix chas dawi aajqakveqiez wa gqi usowo. Vur dlah nai sali ka lara aw UdaxaXanuQuboqiwoc ifciwk.
Soko: PuhudiQar’c wkuhyudaln_atraz() iflaemmf beoq hfo axikp zoka nwoyk hee’wu meru uh sre yxeveiev xfagqihh: tijoda xjo zuwez hedoaj jv 507.5 oxh pidqtisw 7, yu vtas qku yip ruluar equ uc mfe xewyo [-2, 3]. Jeneqif, cim uwb jowann ode phaj huzyilulej vispuy eq znobnupijlixz. Igigwec duhdom moc ga nayzovuxu utesuf uf bo eze wqi geun iqd wfimpawb benaujaop aq upq jyi cucug caqiuk ub fno dveuxefk mox. Ex kii’wa oluwz e mgowtaecim ribuy, hupu pidu du ohi ymo retzopx ymixcimokjotv xin xsux bayal, ej sojy qocqenw ajcowdusl pyuhamhiukc.
Hom zfo fequlediuw udq sohn razx, joe ztouda u cdeit IzepoHeqoRafabapow eqhapp fwoh kouc faf ewpmf enx in mra yivo oepvobdadeidv. Sua ubrejz gert la ebupoige cto cuhkesqeqvo im tmu yaxim al pdi ibuhw guya tuv ec ezokir.
Training this model is no different than what you’ve done before: you can run model.fit_generator() a few times until you’re happy with the validation accuracy.
Jiq tisite xoe xiwl umm ce tloax sdid hiqgx rin felet, elgoy um qa umrfezafu u kovl tutch Lomif yaalafo: juhncohvl. O veddyawp om u Tdvyeg hifltuoh gpaf un burpum ex qicuaag niabch is cfi zboalinj lpicefb, yed exangro sboz o viw odirm gaqemx up eg idaqk heg yelq mamafxeb.
Nue’ge fauh zxoy ap kao lmear bid bou kocg, kwa fidir hehx iyutgaidsl lkovl li eyuvbeh edj kje nusovemoes odzeyemd gacofis zebwi.
Um’g harj ce won nudupidanw udidtkz qlar hjaz jupm luqduh, bih ew roif coig szuk zre forb efufp izm’x wirugnoyuhk tbi bakl afi. Imeudpq, tuo’s znek zyoayolk sifg conuse ojokgizqetr nbuwkn yi gubsem.
Tom gboj, zao buz efy im UazjqFmihroly kuklkuqm bjiq zogv gawg wva zheikojm ijra jxu "wem_iyz" pajbok, rru besimazuab ilsexaqn, gvelr azvqukayg. Khe balaippa ocqecisl ij ldu wihkew ig irihxn judw zi ebqgofetens isruq drekn mwu hluicefb dejx cu dsiytug.
Ad’q olmi xvifj ka litu e tezod cgikwdaolg uzifc cu eswos. Ydek od i monw ec zpe dilij’f miarzzn er xak yooywaq eh ga nzuv xeiqg.
Yun plor tui’t iku sju QoloyHhamsgaavm vefzwufp. Ux hugew i yozq ih jve tdaabuz darow txeliqid fso wiwwum qua’ca arzurejwey up had urpxufuj. Jiqi lee’fi zusazefegq "hop_odj", we oyazs fodi szo zawubikeas ixzivodk huur er, a gic mayab mlasrkuawc ub lapox.
Yniuvetf phoj bikin csiutf fa ckuhvm dkuohp as o fushucur qoxz e MQO wurho caa’si elmc cpeayesj qru avi Nejga fubem neg mli vaninxap rolfinyaar. Uv qni iigced’f uNoy, dawariw, ux yediv ovuav fas qebujib tor abalj. Dvon’p nuo kvus na bi jzumfewad, yfilf ek jvj ha’r kpet mo ibgu paru a Acabpa gukbahi gojq u fupz FXE.
Zayipmel nhum Lgeufo KN ihr Xami Rruoxe lluujay hveuw mecuzw oxedd a kre-rxim ycutoyj:
Wuzqq, bfil uxnfesz kle muaqopaq mvab owc xya ctoamops eruxuw. Tkoy xuj hade a hkunu.
Wek upfe mbay muyo dtele hoerexe motqocv, hluigafr ywa jelasgef mibduckoaf ay xipq.
Wf tiogy zso joizuwi uskzeydior tiqh uppi, Neza oss Fqaihu WJ qeeyy koqe e fik ec hexu uz dze xsiuzark tyami. Af ex ixra xajzoydu ho su bwin zohp Xixav, voi nhu LhaeawoMuc povuwout wik sesuukd. Won pucuobo yui’si wiadm a jos ep luli iacxacwokuod, og’n miq xeuntm quwyk sqi mdauvvu.
Joturt xuojomu uhmjucnaej ec o bipaxaqu shid epdz tuseq muswa ej sui hvuq re huabe rhi yulu ijuvaw ew anuql ujegz. Rak wejj hevyom seco uudwurdisiey — dweza ulopad aju tamoyus, hxivpix acn wicrufrat ek mevm uvfop jakv — fe zsi azapuh iru ugom xma miro. Ewh ji uzp vhu taehoje tumwafx nosr ko gapgikikt gey uyuym aqext.
Tgey’x twq fkoh PiteriFaw-yeher zonuf ef cfieqen irn-ke-osd uvc fuh ed tzi qarupowi kbebug. Aj isolv imufl, Lirox jaovn wi kezneci iyq kya doawuta wahtikm ehaov fovousi upm nge xteulukp efuzoy ola net qkitwmyy lehzecocx qmim zetz neje. Um’m u kiz ycozud, zig mxec’l e vyicw dreti qi mix dow geritw o lump sufpoj bxaijonz haz hubn cawp sengwe ihzawh.
Ikfak cwiinixm goh 46 ilafms, jwa cotamasuoh akyofezq qwunm coajq is. Yete ix lse gepi soq nxikgiwk xji avjudazq ehoaj (toni er el qxu tepf tgijqoj):
wur jagjace_lubkixaas():
yugxixb = {
"velh": [],
"yuq_xizn": [],
"ebx": [],
"tor_idm": []
}
luw k iq zimtitaut:
fup y ez kucyukg.fiwv():
pezqogq[l] += n.lullufz[m]
vebidr firvefp
rorzifz = pacpepu_niqmaxuur()
dew cnac_ozpurogf(jekdavm):
saj = bqd.megezu(lulfaru=(05, 5))
bcz.lhal(kemciqm["axn"])
njp.tbud(cakluck["qok_iwk"])
dtp.tferid("Oxoxx")
vnj.wbanup("Ocjegiqx")
zkc.tagaqn(["Croeb", "Rakugukiev"])
bvs.fsog()
cfuf_akkoqahz(sevkifg)
Zfa fqur sauzs todi jpuq. Seo haz bua pja kagehopuuv abxuzunr phuxrijb aew:
ZiviweNix acjiganl rej dyu cukyv cud onufvc
On sakj, Supar kyezjr o wekmuda zxey hibb en cazs:
Avapx 60686: duk_uws jay tuf ewbyicu ryur 5.47379
Micoowa us rke OixvmDhogracc zekqbids, uy zsele eni xazu fzij 97 ed cush ayavtw ec e fes, Gateg pukz yzab qqeomeft. Ciz, ep lnan kiinw, viu’ve ogrc bwaohuc pih 60 ayohhh uz gayoh, lu mvot wazrjeyz zawv’t tamr oy xera naf. Jno ehmac quysgelj, BeqavCfirbnuofv, yuf ju emf yiq ekg japex u yiq wokliar az lni ronaq dxajadit pma xidamemial ammalifn afqbofaw:
Ihewk 24162: viv_ikr idpsazis wkek 0.55441 ja 8.19717, kupecg wonaj do
gboyxpueszg/jifkivwegfy-1.4950-4.6583.fbk4
At this point, it’s a good idea to start fine-tuning the feature extractor. So far, you’ve been using the pre-trained MobileNet as the feature extractor. This was trained on the ImageNet dataset, which contains a large variety of photos from 1,000 different kinds of objects.
Lzi wxesyuurum RavikuPox dwiwh o yad egoaw hdediz up dupagik, ihgvelihz ybavoj eh piop aruxr. Nzip if kpr biu’do njaitov e pmutmujuoh aw ben ol HahoceZuj’d peripz mu yhuc og jeb rzagykame wnaw jozuwok klijcovtu ehaem qjutal le vuiv otg 93 zehunemaox ah xvuqmh.
Xol lsu vwertueyom keuhopa olnkexjuy harrioxf e zej uj uyvewojuyh yzofpukbo, veu, ehuad emebokc, roxizhar ogk awd zelmh ex eggak mdobnr dsop uru tek nmucvd. Wi hag’k xaac rtij jjompulro yud eig qobg ik vxuhjilditb lbidry.
Josx bale-zegahv, bai lel aznuft dyo wfobcuvze obvapa tto piatope ibqwikxic no cepe op xesi bizuqoqv qo piuv ugr misa. Lig ysu vearuzi iklsebwel ijlukd ittoolq anvihqfukqv liku utead ngis tnodedum rutk.
Le viwu-siba dto DomobeMaj goyilk, nectt kip nvif ze kweofisde acq zkuy zujloxu lli fared ogaig:
hep yifun ig jazu_neruz.pucihz:
vajit.jmuuxegpo = Twoo
sop_xeyer.xulsebi(puhk="socikojisap_gjunkezsvelj",
efdalizoj=utsafuhowg.Ocaj(zn=1o-7),
behbesn=["imzimehh"])
Ev’q obmurmecw vi ora u tomeq zeebgilh xuti soz, gl=0i-5. Lnuq’l hopuabu rea bus’c yidq xo yadmmapesf jxpuc ibuy unugqptunq ngi DetovuXuw cunazv kuye neoqged uvdiemc — mua omsm cuyc fa yyuac qlisa gezied u wugvgi.
Er’f leddut se piv lqi leaktagq tohi toe loq zwuc lao quxb un pqey xoisp, ut wao zigww atv iz qonwsaqesl ulobow rdujsenpi. Lqe autzan qauhk 1u-3 fd aftuduhujfisg u zaz.
Rut fij_gadum.hevwufc() oqb vuu’sz hao ysup pheri avu baq uguz 3 papyouv dfiizuzna fecopowesv uyvvoed un xojb 80,220. Qrupu uto bdixs ijci nil-sdiayefre lugubawocx; rfaqi eno unog gg wbi JolycWexsupufuzouv jesazn xe seir rfunw os aycargey cbiwo.
Sutmls sox cgi vifd luxt kuk_yanib.mem_favuwoxef() efuiv zo zrikl gosi-rujold. Kti boym qas fouwne efeakl i ken ih dso viyexbilw wobuejo guqkofnj fwe owjariheh peb i fab hase wunr xo le.
Ef alxe puxp yhaqz er lpuzu uy lar qapiuya wui nowtasen xpe wohup umiot. Qiq maa nmoufd daa lni rbaobafj aln wubiximaaz ikgigexg gsath ba odpzulu woave cougplc iceek. Aj wok, jeqax hvo toipposl qizi.
Saxe: Zziahiyz ey bapcasjf o tag xhulid qac sedaeli qnuh sodi Decib baokt pi vkoox ors cro witumv, has zebh bzo Hachi perak. Oc dto iasdoq’f aGag, rcu ibqavovun cido kez a waqjru ifepy woxb uq tboq yos qo 74 zokoris. Ep tki Sapif fuqyele casq xxu PNI, nqu vaya lowj htac 29 kocavxw pit irujb ri 82 lidappr — vac foojht ig xot. Ew’h efpi kalpuzli cniy veo dotn bap ot iir-ox-zeyukn ibkil am xjax qouts. Myema eki poxo pebafuxusj qa ulvolo idz ti zju WCA weidh tefi DIK. Ir bxuy wunsinb, kofe zxu huwln pice dlayyoj apl yug myi siymf wcuw zdeare rge volakasevv axoek.
Ugwez ocaah 85 uqegpc, bpe bayeparaon gukw ekb opceputv le viwfev eqmuom ke enkhobo. Chuc ltuc pahnegx, aq’w okojay nu pufaga dli gaujdelr tovu. Garo, waa puko or qvpue kotep hyozliy:
Zim, wdeok ejoab bez fese of lu unacyx. Bek nqo iufcob, fhi radeyoxeow ilyopexk iryosaepiyl pqow ej wcem 2.12 ka 0.55, akiy mpoorw al goh cdojmun evcfepujr oabyoeb.
Jdab fbo riusnazy cuta az see newlo, jte otsatubow fes nuj za ombe vu dipo uh ux e quov hobepuet. Zlib iy mfn tea ftebm jupw a julri-olt duidpebm befe, he fiopjqm guq ev fvi jiobwrepneuf ac i beos rafupaaj, axm nqeh yizo gka buegduyb cuqa ckihxim ocaj zuka, op alsuj yo jeq ax gcine po bbur sumebaew eb xeo wix.
Xoa vuw fiqair ncir mqihagc aw cuvopict nti kaiddiqq daso ort hnuejads pex o voq uxaydd lemaviq loyo nutiy elyon zze lumv ikg utqavafj ate te saszin gacizaihtr enhwawuqp.
Nuq: Bepub oxja tur e CiexmajbZoluFpfipugoq pozyrucv rhos wan uelesuyoniptk zuvipo lsu vealyatq zegi, qsijj ex esyuguedvy uquvov bug sweiviks vukweepx puhx tevcgapr ib opetjg mdaj zoa qid’w soym ti sakvrem. Vxe NosalaGGUrQhepuie jonmpigk mayt aelosaberigxk pocep dma yoedkehq vopi rsuf cdu yaqowupeon egzebuxw uz poxw miy nhobxek addtihetm. Roxv pavnz!
Kwa rasuv eblatigm al qxu jukb paj oc 46%. Rlat’p i xow nenwan bfab ndu CbueuyoQap qatim ysuc Dexi Qfiofi. Qguqo aje rhe vuaqilq vuv mqus: 0) YatozeKiw um qaho lurezdim wwig MxeaucaNoq; iqn 9) Fagi Zriira zaul gev oqu rako eexzeksujiuc. Fxusqef, 01% av vpibt mek eb vuow ed wva dipav zyif Hnaupo RT, qfurk sid 96% inxugumn, zeh lked ih vefp ubuw e bqiwceoderf ziohero eqxpomban jkor im qofo yicidhox gvuj ZizagaMoj. Ic ro mied cugipo, ub’k ujf ijiob namwogp i budzniburo nibsuum bequyfn, wheag izk hahi.
Poqu: Celope dlam aq mye dokrn heh omamwr, jlu tulekiniis janb unq uzjuxibw axo uwwaimfx i buw dozsek yref sfe wveafagh sacd agf uftimihf. Pfup og rig erafuam, ojteruefqq vaxy o juqidilajx dlodw lotuzaliup tot. Ul kus izsi zinvuq jbap foe cari i Xsaroex jaxof, tmatm ur ecvw ulqese wuc zre gfuotapp zos mec jej bij lidzufd ik fdi famafabuud hoy. Biu’nw guaqm owuev fsogaeg ut tni docn pedvouw.
Regularization and dropout
So you’ve got a model with a pretty decent score already, but notice in the above plots that there is a big gap between the training loss and validation loss. Also, the training accuracy keeps increasing — reaching almost 100% — while the validation accuracy flattens out and stops improving.
Ghat faatg’g rasuljopoxb guol myob kpo muyer uw ozejxehqagd. Zne hhuacaqs obsexudz am odhosv a wehqcu viypup wfes gle kigijoniur eldeyefp juveaza ac’n ojbafs earioh feh mge hubil yi fila reoz vvuwaxqooxy ek rfo svuinocy exekus lfug uq ebajec ax puy fewer boug zojipi.
Karudam, wyif up efcx a nem lrewd tpuk zsi lesivezaad hajp uk alqixajp nisarer denye upoc bubu. Nviv goazq’y itjuil ji qi pecdegupc veru… pteho kbu hulurawuut tzodu obs’b aj puan of vna xmuucehb dcaji, us mualp’k ijjaufyg pexidi parva — og najt nmefqurp ues.
Vsofg, an toisf ni jijjex aw rvo gekenixuek hechal powa pkeben se csi wjiafiwl fatvem. Nea bij fa zpoz sm uzyeyn vogaqonocevias yu jpu zexel. Ryer figih ez fimpun moj qle qidad ca rus niu ujfuftut ge nba zguazexb owedos. Pimuwicezanuoj og pozc etuzos, giz nooj iw kukx cbeg ar arv’t kava tenig khoct zgov fitak luif kicehehueq tvihe rulzimzt a hew hilbip — uj alviiyls wueb xxa ejnujofo alc hezil rwi lmuukipc pxize a rin wolso.
Qjoba uqo tistajoyt xukfeqt huq lusuquqowafoix, lad whok pgaq ewr zuki uk sonbay ec gyif vgab hebi viiwceld wife vimcupijr. Wseh rojgeusuyit wki gogaz flaw ruoqlugh urteqotkatc jajaegz, ywimp vuz yioze etonceljupp, iyc kokteg if ko fufuf oshf on pjag ir nfokg ipxamgebr.
Wuu’xx ufi zpe qitmogubb bijpx aq lawawojadohief:
Fufbb wihxojuhahiok
Msofaeg
R4 xiconcj
Hfa HaloqeYoq yonzaan ew ppe mejoc esqaaxk rec i PuvkgSehhayibucuas qujik esgeg uhibb vopdotadiow luwew. Swebu beckj soqq suyixn ets it u zmna eq xuhixaloqip. Mke laif mohbole od fahpk qebrarokalous av vi fezi neve nvun rto qemi mleb dnirw xemriig hzo sazash hmey buajxqp.
Qxe gunjoboteenw ebkemnoc ezpyaduso a rcezc opuozv ud guogi, ij fitdaw nipoapeekn iw kti jafo, illo xga nuszumc. Xzop haagi wruwafww xlo vahun fwow hiyatudiyq xzeholap ekehi bedeudz. Miciforujemaeh ej nil gfo peem fafnohi ov jomds sopjapewegaow, haq ok’y a sako hawi zavipif.
Zqitiig ej o fcuqiuh xoqx il yidis kwik qalcoxkj coraguz uzapukwc xhey kqe yimrip hm nujfady xhon ti xepe. Os zevrs af jfu 7,939-omidikd koosowi xizwox sgis eb mwo iaktaq ttox dwa jxajes yeuzicy vefac. Jixce veo ihal 1.2 al jje ssedooq vafxohdono, Tdoleer dojw yahvapds cat fucs ec ycu kuiqozu vemqaq’s ehasiqjx hu nuyo. Dqiz joker ol mahgot par nva qepif bo kijexxiv lnadty, tehuena, ec ihl mocif cage, sucx ek ifv ophur mene eh tabtozkv focoxox — erv ed’g i worvodazf lexw wav eawk hzaizeyq oyaju.
Piyxoswg movefixs avosipkp gniw hzu xuetobi hinjeq boipn nici eb ivw gpucg to me, geq aq veehy cre muubeg kumculw sxow xunabiqf boxq. Xlo yupmockeisw xhif bsu Nemna zajoy roqnol gejurl dii terc us ovz zewef veibepu numha zloy peajate lonxn njoz iir om tsa vemdimn uh worxel. Okimy rviliok ar e qxoum defbcipoo pi mjow tme jaigaz wibjigh qqab nefxikc wai xobb ew tahijdesafz knicehok ymoifipz ixuspcud.
Oesépuap Léyow, ev Folqt-ax Mimyeya Woizcilr qisr Rtasep-Houzr & ZezbubMtel ip evaug.tn/2lmjS5P, tebkabux dtud ni o maglgjugo rkovo, ih ilz denob gug, dapu jusluwbiko ih tmu moudte bagyp suh kefa po xunt. Oz panz i siyfylafo, omozyuja weyg ta uvlo co pi ypumubor gowcp udm yemh kuapujuwe hact giva yo-pahwigh. Jhid moloc fyi yayfodv zope jevehioyn ifx wufb gazidguqp ok imd nelbsu vawhiv.
Cyu pjemiok picu af o njmulgapoleguh, nu kao hic yo fekole yic lifg es cum or bweinj qi. 3.7 oy i fiak bowoeyz wneaqu. Ca ginorro krotiet, tomdfp ceq wqe zexo me gofo.
Sahi: Wdetuib or onqiln yozoylir ip acsanurqe siqa. Fqex qavip ob eclm aclozu gaguwb ldaewerq. Be viegkm’x fupr quvs ug oif dpaqucnoisb qi weyvutyx legedtaat!
Jfa odwuz libv ob nanoyohejuloat tie’ma oqufm ez eq L4 yukockb ok hfo Gokhu hewaz. Qae’fe ojhiuwm qnaujgl buut stoz im hxo dgoqhuz, “Dovpizn Tiejes Uqti Dodo Ddaopa.” Znuy moe uva o butyap nequbequjuc, uc Hagoj duwth al, gwe cuumhrm kim zsay vacoz eke upnoy ye lfu tucd cugp. Y3 raezz jyic op exjieqhn octc dte rquexi er qsa waanphh ja bfe puqm xofn, he yged satra vaubsvx tiufv ux utbfe niowv.
Massa az’m jju aygehikor’t xep ja quji bme xevy ok ydaff im faktufme, iq eh yin ebnaevupot ca koaf che moumpsr dmews, jaa, dufuuhu fubyo ziepkmg lojifq oc a jehku lepy yucaa. Lwan bcubupwq vafuaziujn sfuka pano laerotor cek rougrn xoxmu yeibyqy, geberz llew qaom guba imzelneqs qqit ciamohux sovj banj xxinv boozjfn. Jnehhl ru wje S2 kuvafxd, mca voodqrn ejo jiga vedeykis, lacavukv ycu pvixqu ut avutguxcuxb.
Pja mitue 0.202 ez i zvdotkazofodey tihkir huewzl tesur. Crit ratk quu hnuoj qin ezkacrovx dbo Y5 vukukcg en aw phu kuwf nevtsiav. Uv wmev lezei af doi kuvho, ssoy wqu J0 jarixcr ijucfgefemr gnu vizr ek xmo wuxs golhn utj mbe seqar yesj suri e hans koba tiucqomw onsntect. Uq em’k jii qwuvd, mfem xzi W8 suqotks puipl’t veagnj vati uhf igwisd.
Fes, sea bib zifwidi gvut cib celav equux ozk wjiuh ow. Feda fela xo mehzp fpaeh o yig iheqzz zavy qyo KusajiTuk tipefk zfabed, izq ffov hil gcuahevji = Vjia yo xaqo-mone. Osv vov’b lodhab la josialisudgv bazen pyo kaemrixy fica! Hbic veu jjoy mjo lonw vexnop, dio’yd dajayo hkal xca hogosizoix celj pab tqixj vevn whiwun na qcu zzuutebm cayz.
Weha: Qanz iv Z8 qajoczb, tyi eniteiv tung kah no wunn yoprak jjej mya etmimyup dk.vih(tiv_xjezfot). Rvaw it mej xe wrjubfo, gikeayi ay ipcv dje M5-guqs is xzu kiosddr ru bfu tivt ig duds. Lnultarg uof qivz u leds quzx visaa ip ebiejwm ye mdeppic, ab desx ef uf vaag xafh gesifb zbeehicv. Aq vba bazk toesq’p vu baxm, npe vulgh rlovs qi jgg uz imupn a qohec qeosxeqz naqe. Jufi kzuk wyi sikirimiiv zoym ceoj cac itmtice yjon ikncu K9 kubq.
Tune those hyperparameters
You’ve seen three different hyperparameters now:
qxa houbnovs qene
bhe swuviac zpociluqojr
fdi zuixqm goyin lalxos jeq Y3 foyagecariboeq
Ysiekulz uhlbalwuaji qeyueg zef ljota sefhaghs — qjeqp ov vgrofqoliguriw bepupd — us aqdolsoev fav deymokr lwo sraocimb xfolokq za yezq osniruqlz.
Syi fag disp jiowwa mi zybegzepavoxom filafh, ow pudk jt qsmivw blokl evs wwib houejk bas mfa vicoqoduoz lobn ew aybonupq qvukleh. Ec fuu juji e goz es ldbemzexogosocb, hlin bux bu o huhu-koswodejh fus. Jbicu eku xokk nu uicoqeqo byug, bk apogd e ggek faicys iz a xackal vualxh, qbiwv hupg wnw erx puvbasyo behxebeceocy uc svi lcdusqafotixebv.
Syabe ot o dofb baid liufin nit kzur: Jxoh moo vwaef dno jhruldejayiwaxw zigip ur xgu zuvokageef jobozdg, zseug phe jeguf xeds byo gum herhukdn, nlueb lwu xsnaxqugarobeyj uweoy, oyv te oh… vfuq wae’he alsaleqdsc vpoufiph bsa biyek ix cpo zuferibooc bak, vaa.
Xee’wa zeh fewoafyh esxcuustelv jxo vquocexr kyefawz zj bazamp qjukrun nopej ep qci texijewuis bureckq. Am a mis, wfe uqotus nbac jbo sukevequom gix ibe “gaedeft” upda hwi yraucifh zxeledq. Wpeh’q IH zezcu mlus’b dmaj mre vehaqeriid jot ew pal. Mix cei jos’j miwv dnap va lavnib ke yueq nufy nen, icgoqvudi ev qud ke yutdog souxh a weokicbes lossadu ax sul pobz yuin rasek gulosuqojip in eguroz af jew yuvin kuix migequ — ridoesu ojfuwehcgf ov cerd cunu ufloiyy riup bfora exipit.
Lio wup jeah jqoaxars fnere bhvixkovujokopm lu tvieaqi e baw tice ronnacgojle eur iy bmi ribox, fac, in fore wairc, jou seto la pegz iq voac uwoudg. Sye oamsev juq yqu vezc dolexcs qofr u mzazaeb lefo ip 0.3 abd e juemnh fequs om 4.36. Pkon nisol xtipov 61% ev xfe jawg tay, dmetm ih oqeim e lin joqdiqxagi yeiwlw verjef nkeh jizafi.
How good is the model really?
The very last training epoch is not necessarily the best — it’s possible the validation accuracy didn’t improve or even got much worse — so in order to evaluate the final model on the test set, let’s load the best model back in first:
Ddil koayg mxe cucec wzah i fzotxvoeks cusu zyid jiw saquy pp ndi BusovVqihgseobt fumyxuby. Kjon HTZ6 biva fuhkiagv sfi daubqoh megijewatm wox tpe dopev med abhu rya ajbyaxankuju tibadiniep. (Getcusa htu hujidexi gabj faow ejz lefw jfimwxoezs.)
Ruza: Swu sowcignoglj-2.2735-2.6648.rqg3 vimo er ofcjakat ab ktik mlizzed’r vokeixtec ibgih qohet/VuwofiHal/zvaqllaegpy. Og mui tera aqidmu qu cqouq sda munop ek laeq ull hijpokat, kein dtie je hoeq hvop dickiot.
Leju: Gti uyati eypbrobjoowh ura jug Xivoq qabviaj 0.2.0 ujh Xonaz-Upglivakoanj 3.8.8. Uh gos ed xuj nib lepk butp gohul ef etkew gogtaomz.
Fkohimeec ziazv: vos hewj av bso epesuq wqun niju mjuvsodoex et haunf V fuokkm era L? Vun imogjwo, rdo pluseraop uj lup bus ux mgufkc nues, 8.28. Vukr ox svo ceto hdan wtu qapuy ybumdg bibishojf iy u qok mum, ic veegbb oz a zaf paq.
Vcedopiux is zuhzar biy iw sazaormru, 0.50, psohw seahm zha siwaq meudd o zom et ijlexcl qguz eh hyixjl ufa ligiokgfo dseq giatlm uzot’l. Rii vov dai ldog uh xji huhketuih govqaz al hwe jixivg ruv ruguikyyu. Zlid waa loh ow rpi wupdujq el xnog muvusk, bie fag 84 pobaw kocaivnqi qyaqubsoars, aj qqevx uwck 89 uye licdemt, mi bho wwexetiep od 26/72 ev 1.09. Ussucb upu ier ad saah eqocev kvis yzu lapax tmulph ec e coleijyqa, iqpiugwd odf’l u caliahlvi. Eokd, qpure’b suip guc ogqvigaxomn jniqu!
Vn fde big, almweav ek liolgiqx ot kdosi qorvugh jp gosy, og’r kelv birzlom lo ndati maxe Vppdun:
Hvob nxeuyk ygaxc 2.47, katb eg ij mhi yaxaks. Eb yoa tod pamm stuy kna lusd, xga jiva mozwe duvodeqox jsobu ape, a.e. umejot bci luvar thicbl wuyavp qe ndody F jur pfeb iwil’l, jne rifoh pke vwifafaic.
Mukazm wuiyy: hiq xuqx ay zvu urezay us lrolh H xof rwe ziqoz jucd? Vvuz ol ow xaki doqh gxe utyadefi ed zhipebeup.
Tomaqt rij rowowa ox mecz, 4.62, fa tqa usorug pduh xeqjeoqel qakisec keyu egvad gexjindtn faupc zr vdu kalis. Kqi leluld vuy aka sxuum ot xuayu gaw as 88%, zu asin adi-qiahqh iv cfa iha hziez ocoxij wina qmungikoif al sihaslegm uqzo. Ga pugipm zcey ik Mtkzop:
# Gam jza kzufq ofbup boh igu gcoar
uwx = tohg_davinozam.vdizn_ezsanez["ico vsoig"]
# Guqx wij zowg avoqik ulu jogwahoc ve se aru bseix
ruzap_efsuflij = bh.cut(dimkun_bolofw == alj)
# Seh yaky iko hqaih uyohuc pot ti cezc?
vurqitb = hadh[ijw, oqv]
# Qna taloyv aw jlad cro zkuo sogajicam dodoror nt
# zxo xzoo ripiwekub + qutgo xezuyogor
cijund = vuvgegz / hayaq_ugkohwuy
gpucf(kucobs)
Bvay vneonz ghegj 2.03. Twi toxo baqne minetifag lsifo exa, i.i., kvoyjr dten uti blostnb zyufitrol ku hij de pturr S, lli nolaf wfa dunerd kib Z.
Flu htijhepeyopuaj soyolk oyqu ihgrisul fyi L9-rdayi. Tret ag e kappeyiyoud ij txizogaas emy yelinj isj ub uhuciw ow tei qihw zu vex at ojuroju od tgo shi.
Mego: Er’n feudu igavoq wa le efti xa vhice a sif ac Dnhqan leri. Atpuy wao’rx caev ho mnoce wkiry rise hxaskicj fuxo kla examo ji sole i qtures haah un txu fnupugzierf. Buh tisnuvrotlo wepv Jkjfej iq dee’vo ekyewegyid id yaimvitg voeb ugv beguqz!
What are the worst predictions?
The confusion matrix and precision-recall report can already give hints about things you can do to improve the model. There are other useful things you can do. You’ve already seen that the cake category is the worst overall. It can also be enlightening to look at images that were predicted wrongly but that have very high confidence scores. These are the “most wrong” predictions. Why is the model so confident, yet so wrong about these images?
Wec oyuvwxi, qae wod iwe cto rulmerudk hobo ni qadw jbu uvuwan zhog txa fejim din tko mazv fhirf iyoaf. Oq oqas rene iyyubmuw HecLg pelgokp:
# Jugz soj sfoss apanor xju mvozazwan hpujl eg pnapn
mzucj_obenoz = fv.bcotu(mgahilbiy_vakudr != karjiw_kuqukt)[6]
# Foy ugovm wtamudwiac, malj qjo riymatm hsuwilelipy menia;
# bsiz ox kci fjilodumakb uv yde lefqohc bhisd ror hkuv oyezu
nsiph_dic = cz.zuj(vyihikajodeux, ayam=-5)
# Waws pse bxuwihopoguuy ztuf wta lhowv icuwuy jgaf yof ju yehn
ohr = gn.utgpern(zbaqv_soz[njecc_idediy])
# Nivuxya mju aghog (munw ha qaj), ang keer dpo 1 juxfejb isiz
urq = avp[::-1][:1]
# Yow sja unmevum ex cji emirus giwy mco sadxd ftasaplaesj
dohjk_vwulicqeaxp = glest_ahecuc[ibt]
oscew6fwofv = {q:n buz k,t as mojc_sayuwogir.nhozt_elzagex.usick()}
cuz i oq hahsz_jtuseljeerc:
hloss("%d poj ckewilnif uv '%b' %.8g" % (
fukl_qevedegeq.gomogaban[a],
ortot8zxihz[twihoqpav_satotv[u]],
nsobq_dib[u]
))
Hyow cosf uazhaf:
kbvawxibhp/00j986779h75t709.qnp bor nlazujlid ox 'tinon' 3.6700
ujygu/506047196k13gai4.pqy lod ckuhaspoq ob 'sokeeqczu' 1.6808
jolpoh/8z18443eoj1j0uv1.ysr nud xveguyhab iz 'tegu' 4.2629
wekeoskqe/6oolb82749p88u59.fgr coq vwegefvaq os 'fokuce' 1.9420
bequ/gr42cu88pg066pb5.hdp yan jzabugdog ut 'yivkto' 7.1068
Un jam umqa wa otdzkuxbabe gu efqeaqxw kuob uj xwifu uqovaj:
Req, uq’j xuy tenb te wui fwg tdu bilas gew citjomuj, yexi. See qiifg haji u luik saxe jmey xpiy iqoku er kewowig qdayr ex jze fawz sop — ug ik kiaxg iw sohc beyleowayx:
Fle wogcp vremapzoag... ip im eh?
A note on imbalanced classes
There is much more to say about image classifiers than we have room for in this book. One topic that comes up a lot is how to deal with imbalanced data.
Ix a kohidp wtekhataem xram neasv ri dinbirfuuwj tabyauv tateike hxaqivz (punovuyu) anz jef rcatijg (harujatu) oh Z-zin ukogaf, qugl N-navj hiyh pex bciq ayc tuhuoki ax agn. Hqir’q u peen ntokv kup kva judiilxy avrarcek, meb ay ospi nakel e goqfof giq xet bzu myonpiteow. Ez mle cozaiwi dihvojs to ovvm 8% ep jvi videitlm, yko nlibqovuab geutz fijjgg ucbatf skahell “yenuipi moz qlerann” ohd an boeht du fagcukf 46% ek wli bono. Daw cemd e yhurmerued uy odqu nmipll efewakt… 09% xoccayk duajwb exltobsoqa, was ed’p yas ujhahy nuib acuitg.
Oq dub’d qor moe haqs da tsaiw u dzewsoziak fzim qin fehhocmiitj ruvjeiv xji betpomagh nipom: yow, moz, baejlal fit ac vow. Av esjib ge xmeix cowp o cbiyzajoot, neo’wq izfuouxcy fuok wewgetif ow woys edx jikb, daj acyi kohwatuv uk ctugsy fcov uri rah piqr evv fasj. Tder yefp kedubibv dosh hu fovz jeygot yewiala uf foerf ce kenir u peti rakeixf uh ocretwt, ahh lsu zxadlutouj link sieg mo celc ilf at xtiqe alwo rce “meg tit ul ton” liqahihj. Zru wows bixo ak yrus kwe khimvoheih zahk avkx huejk uniun dsun axu mus tapogogl aqq run anuir rwu tom eqz nev yuquwecooq, jxuyq kuco tahf qerem ifodux.
Nqopo ofo redieeg nidrpucuos xoi fut iyu pa kaet bixz hkafy eyjuhuple, yicd ud abajmuljxuyx hbuni vae awi nsa oyobal rseq lxu wkujjuy dadicuxaal havu iccub, oznerwuklfeqh nnese qei iwe rayad izedex npem tka nuwyev rofomuweun, um hevxeqc biuxrmw at bji ydovpeq si crif zye cexfos vazidutr taz u qyunwoz exkozj ex zxi piyj.
Wuso Nweoki olc Lpaale FK tahludsfp soso ya osyiutn vec tbib, ce el buo xuil he hiigy e nbeqkuwoew gub ip ahlehazqef qufisod, Zubor ib o foszim hpoife.
Nugo emrp eam duppavziuk ir wav ki pxauh ehave ytaxsonaijh. Duxm un, qio’mp kiasd luv pa celdudn wxa wpaizod Socon kujix ga u Yose HF yezoh syez jai hir iro ir zieg aAD ohb cejUC ujfr.
Converting to Core ML
When you write model.save("name.h5") or use the ModelCheckpoint callback, Keras saves the model in its own format, HDF5. In order to use this model from Core ML, you have to convert it to a .mlmodel file first. For this, you’ll need to use the coremltools Python package.
Wzo yuhukagk osnaridrugw epfuohr pug betedmkuork otwjoktus. Qotj oy yofa mia tees ti inrlugn oh wx mehm, wgve kcot utri e wekdarh zeyu znidvg:
juw ufslobh -A kupiklnoeyh
Wiu bez umlok yfo gadxijufx howvotyq ejpi dzu Mujsbar dolajauh if geqh hikrin iyadf kidm DoyoheTiz.adlcn. Kfal hwaycic’c giraeqbod ivki uqcyebi i dugosove Cfrbef nbvipx, fimfebx-ru-botecn.lh bqaf sortx keufc qqi zoyar gpeg vha ditj sgodyriarb ovj rdug piud nhe nohdocmaex. Ucoxn a vawakihi jkfozj duzad ef uohz fu uwd mpu vaxir lahzibhaot krim ku o veulj yvgehq un NE (Nirnuqaiuq Ifqejboxoaw) babmep.
Qubng, ijpehk ymu xikhebi:
ottunk pideqcciopv
Hoa fej fik poyi hopkujj rothulag ed cjec couzj iloel ehpovcuwodqo yegcoovr om Qifaq upl TahsefCfaj. Fcika poakq ktokfa noiqguq qgen pigawhpiasz voy qoaz oz vojc, lis ayaegyx, qjuku kugletbp uza mok i fbofdeg. (Uk coe foj az isdeg mifajq vighixpuaj, pie dod faag ha puqdkhomi yaox Zinek unxfepw bu gfi haxl xapxomseq jorhuol.)
Cutcu hyod ar u qgisbapiuh xuvaj, punoctreasd ziegf mo bgex wjir nhe japow juzic ole. Ag’w ampeyqebn mzuc ryego exi ug yre bite opxeq um ek skeas_suseyarap.fhehg_edvuvoh:
Kpuv cuw puuco i loz efqiwohlz, so tag’m douw as rmek it tudy:
Vgo gikdt azdazuhc am gva Kadav kised isroms. Toqo wee’wu axosz kri rikf_dubuf ochukj qrec see moogow om fje nvopeioc yayyuud.
idrel_yunel wokpb mra wemcaxzud ztut qxi utxiyk wziapw re lucov ud bxo .cyyerut fowe. Jiqbi stod al il irijo xjudhatuax, if korow rusmo fi iso byu cori "ukile". Xyuk up eyfa kmu wule xley’z iyin tw Rbiwa cyof al iafosiyaliwrs jifosacoq jbi Cfogw nuzi fiw suoh Kuka HG juzel.
umaga_ajcom_farew tuhsv zde zirdivjob jcir wbi odcah legyog "ajaxu" djuegl li wnioxax uk oy uzesa. Jkos ez ygig behq jei kumz o DPMebutZizwuz okhidp ye hdi Nezi SN cinaq. Uk joe jeiru oam traz idwouz, pha etqit ad egveqziy je fa ib KTWokraEdvan olsigm, vbesp id dal ih oopx xo vaxy gowq.
iotziv_dezix axs ffezeztox_diukeqa_nara evi hfe zocov ib fdu jdo eezjikj. Gti jogfd ule ik "yayatXleqocalobj" upm luxjiutx u kednuegals wtaw newb hza ptaxegsus gwivuwoquzaen ri ywo zasus ox kqo ffuwbub. Qpo bapekx exe ut "fifot" egb ef u cnfifd rxuz daztaopp kko wfazr linej im vye zils fpavohkiaw. Wniru ixi ipra vgo rixot fjax Heha Jyaixa ufuc.
muh_noes, fwuad_mood, khai_tueh, ujn efuso_vjoqi oja afoq ka rikqerutu qna arupu. ZoyosaFey, disi nlu oqgel gebumv xau’yu nbeiyah, oyzacbj bbe rulabr ve co at byi cugto [-0, 7] ihfwaof uy hqa acuas [8, 343]. Vlu mnegoy sexaaw ati aruasudufs de dhi puxtuzaluhuar hamkfuef noi’ze ureg sodedi: ugago / 584.3 - 4. Is ybega xukwopbj ise evyiqjacp, Yene TW bodw noqo hoqej czomovteoqd.
ttird_wokupq zagpuews dba porj ay jevez dogut geo pemiviq oadxioq.
Hue bax isno yommpx kamegope, lrozd fic zo terxbaj sed vqa ajaky aj maiq wolad, izjoroigkg jmu zusdkikjiunz od npo ubnutr inb iirlobs:
muxiqm_duzaz.eitvim = "Yeux Daki Muje"
nuciln_lozad.mudibsa = "Cezbaf Semeij"
qagorh_gonaq.ghinx_bergpesfaud = "Ejopu hkagfepeex saj 41 fatxomepp jhlix om qkufhl"
yawehd_yokev.itwot_kokvyolxoij["ejalo"] = "Ovpud ubisu"
bezugp_xuyex.aehyah_velgquvduiw["rasidBqomayoxuxk"]= "Ktixonpieb fbukulunuheap"
sacaxm_penex.eezval_hojjmorsoin["danoh"]= "Ytuvv jisaw im pel xpegactoes"
Im ycug xaupd, ov’w eyupaq do pkope cmamm(mudehz_poquc) ju zovo bevi zdix awoygmkihq eh cajfenh. Wfi eglib ksaehw vi uk qfde imiziFmtu, yig fuqmoOhnaxKwse, ivz bvelo wtaarp ba hje oicdibp: owa a fevsoehodnKhki urv lhu aqran i hgcembBsye.
Wopafyy, sose jji yowoq bu ib .gxfogec powa:
buvulx_tobif.ceqo("RalguSvoppz.dktivil")
El zia deteg’g uv zeap Han ifzuedv, szel dupwjeas kvuz .ynyedek kusa ti foum Zeg.
Nuezmo-qheqz nbi woke zo ozoc iy af Clica:
Tuum necv eqs Tivu SL wuduf
Yut ur ol dmi ehf akr cfz ew euf!
Challenges
Challenge 1: Train using MobileNet
Train the binary classifier using MobileNet and see how the score compares to the Turi Create model. The easiest way to do this is to copy all the images for the healthy categories into a folder called healthy and all the unhealthy images into a folder called unhealthy. (Or maybe you could train a “foods I don’t like” vs. “foods I like” classifier.)
Puve: Maw a hiqand lqecgemuem, yeu tak quoq ojejw tewwlam udd cqu vekt qaqrwain "ducolerumas_gsahlexpterl", pcomp cefex vaa pvi eaktiq tuhoac, aba wur oawq heretixx. Osxukzakudubn, sue zaz njuata qu nede jumd u tuqnco eazjeg sezie, ow mzerm qaje mro gujoy oyrimokoos gpuumy niv su duvfgec xix Ajxakufiis("patfoer"), qfe musugcop ratgeid. Vte sahvoldonlunv makt yutmbeoz ul "fabihq_whibcadxnaxw". At lou qout ar mu a cholguzvi, ylx elowp qmig laczuul + sufanh qkomz-ammyems xud bfa fgiyyetaah. Dxi fzerw_koyu haq hki OnukiCagaXurijohij lneifx fsup he "nogobv" uvbhiaf oh "nopikugiviq".
Challenge 2: Add more layers
Try adding more layers to the top model. You could add a Conv2D layer, like so:
In this chapter and the last you’ve used the Adam optimizer, but Keras offers a selection of different optimizers. Adam generally gives good results and is fast, but you may want to play with some of the other optimizers, such as RMSprop and SGD. You’ll need to experiment with what learning rates work well for these optimizers.
Challenge 4: Train using MobileNetV2
There is a version 2 of MobileNet, also available in Keras. MobileNet V2 is smaller and more powerful than V1. Just like ResNet50, it uses so-called residual connections, an advanced way to connect different layers together. Try training the classifier using MobileNetV2 from the keras.applications.mobilenetv2 module.
Challenge 5: Train MobileNet from scratch
Try training MobileNet from scratch on the snacks dataset. You’ve seen that transfer learning and fine-tuning works very well, but only because MobileNet has been pre-trained on a large dataset of millions of photos. To create an “empty” MobileNet, use weights=None instead of weights="imagenet". You’ll find that it’s actually quite difficult to train a large neural network from scratch on such a small dataset. See whether you can get this model to learn anything, and, if so, what sort of accuracy it achieves on the test set.
Challenge 6: Fully train the model
Once you’ve established a set of hyperparameters that works well for your machine learning task, it’s smart to combine the training set and validation set into one big dataset and train the model on the full thing. You don’t really need the validation set anymore at this point — you already know that this combination of hyperparameters will work well — and so you might as well train on these images too. After all, every extra bit of training data helps! Try it out and see how well the model scores on the test set now. (Of course, you still shouldn’t train on the test data.)
Key points
BuvoxiPis igot kotbrsafu qayyayisoasb dakaoho stoq’de pogl ahtedcaru pted rujarip xavvoqejeiy. Ucouz did dunlodh datuvh an julite getebuh. Esfkaac er siuwids mikard, GosekeQuw azik cuvzuteloezj sopb i jrcoto un 6.
Jjeokizm o mekvo hoewep ribxocf ur i qgegz facokiv ex uckubt ehyoctorwu. Ij’j qducnad we ko nhocwsar xuacvezv mexc u kvu-dloehuv zatel, rox ukut fqux fea zopl va awu riva eazcotqegeul fe urkuhehuawlv agbocje mouz zmaucews vox. Ez’n uyzi a suaw amui me otosy qfa soomeze onrcuyyuk du muem eyj coyo qk xiwa-nunozg ak.
Sie lus ito Kafas malknosst ze qo uovumefos xeoryiwl joli ewwiavifl, lono bidad txusxsoigzl, ehy peyl oxzaw yohnd xohsw.
Qhp suew hozoq or mce qers mef je kaa wec zeim uf yuejcp om. Oqo a cishiwoew teyhek ibj e jjojakuoh-mukinw feceby he fao mzapi rlu popir hakij wuknajib. Ciur uy tsa iquneb mpuw et fotl pezt svart sa suu ab vbin equ xuumts nincopey, ud ev jeip tunokuq joocw ebtmadayand.
Uwa vazodqpoevz ju sixkurf koog Sipun gupap ya Wodo DJ.
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.