Heating controller with neural thermal model written in Python
Jacek Kowalski
2018-06-24 425bf71fc0b24b547006686d83404c54b983de0b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
‰HDF
 
ÿÿÿÿÿÿÿÿØtÿÿÿÿÿÿÿÿ`ˆ¨ TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøHEAPX0Èmodel_weightsoptimizer_weights(ˆ¨ Hkeras_version` @backend
` H model_config6`ÐUh`(TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH HEAPX( dense_1dense_2dense_3dense_40SNOD8`€8V`V€XGCOL2.1.3
tensorflow6{"config": [{"config": {"units": 14, "trainable": true, "batch_input_shape": [null, 28], "name": "dense_1", "kernel_constraint": null, "activation": "linear", "bias_regularizer": null, "use_bias": true, "bias_constraint": null, "kernel_regularizer": null, "activity_regularizer": null, "kernel_initializer": {"config": {"maxval": 0.05, "seed": null, "minval": -0.05}, "class_name": "RandomUniform"}, "dtype": "float32", "bias_initializer": {"config": {}, "class_name": "Zeros"}}, "class_name": "Dense"}, {"config": {"units": 7, "trainable": true, "bias_constraint": null, "name": "dense_2", "kernel_constraint": null, "activation": "linear", "bias_regularizer": null, "use_bias": true, "kernel_regularizer": null, "activity_regularizer": null, "kernel_initializer": {"config": {"maxval": 0.05, "seed": null, "minval": -0.05}, "class_name": "RandomUniform"}, "bias_initializer": {"config": {}, "class_name": "Zeros"}}, "class_name": "Dense"}, {"config": {"units": 3, "trainable": true, "bias_constraint": null, "name": "dense_3", "kernel_constraint": null, "activation": "linear", "bias_regularizer": null, "use_bias": true, "kernel_regularizer": null, "activity_regularizer": null, "kernel_initializer": {"config": {"maxval": 0.05, "seed": null, "minval": -0.05}, "class_name": "RandomUniform"}, "bias_initializer": {"config": {}, "class_name": "Zeros"}}, "class_name": "Dense"}, {"config": {"units": 1, "trainable": true, "bias_constraint": null, "name": "dense_4", "kernel_constraint": null, "activation": "linear", "bias_regularizer": null, "use_bias": true, "kernel_regularizer": null, "activity_regularizer": null, "kernel_initializer": {"config": {"maxval": 0.05, "seed": null, "minval": -0.05}, "class_name": "RandomUniform"}, "bias_initializer": {"config": {}, "class_name": "Zeros"}}, "class_name": "Dense"}], "class_name": "Sequential"}
tensorflow2.1.3à{"sample_weight_mode": null, "metrics": ["accuracy"], "loss_weights": null, "optimizer_config": {"config": {"lr": 0.009999999776482582, "decay": 0.0, "epsilon": 1e-07}, "class_name": "Adagrad"}, "loss": "mean_squared_error"}H`€ X layer_namesdense_1dense_2dense_3dense_4 @backend
` Hkeras_version`TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð!HEAPXðdense_1HSNODˆ°Ð-¸-Ø/P8x8˜: K8KXM°Ð X weight_namesdense_1/kernel:0dense_1/bias:0(  €$ ZhXx!TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8#HEAPX ˜!kernel:0bias:08SNOD0Xx!SNOD€, æ €>'Ý@>ÅR">Ä)a¾KÚL>¾k>±~¾º]>0´>V\
>>I¾xÒp¾ï€>êøB¾á9>†à6>‘}5>ce/¾õ\>½¯K>s{z¾Nq>NBj>èf@>²yY¾¨*¾í(x>=#g¾À½<>†ñP> O>L@:¾üYW>º[>üUR¾
u>´Ðo>âIT> k¾BØV¾2oX>•¾S*>.H<>êé}>*÷L¾JK>dUj>pœ)¾dk>™äb>Ò;>ø+¾åÃP¾ÿ›J> ¦~¾ÃÌU»c#c¼ã"=¹‹:[ Ñ¼-êB½€gÊ<-++½ÿИ9Û=”I=}V¼“+=±.0½
I”½Æú­»¼`μ÷íĺò<—§è;aB†<å&¼m,Â;¥~ì<=TP<îH¼Og–¼Î$½(YZ=u4²¼#¤–¼Œ d=dŽF<‰×&=¥=·¤:=_Àá;簟»•£¼?¡Þ<g/½V}<Q‘O»¼CR½†Š½<¬N(=Æ
“¼8=½oK4½f]ñ<䊼F+ó<…˜o½…î<I1@<”Ó;¨ÕD=ç2Ò<îq—¼åð¹¼ß3à¼TP ½_ëI<;7ˆ< Ža<áþ¼ˆë=žLý¼e–˜¼—OŽ=Ú¿Ó;£ð ¼qwμ¶ß–=¢[=eÙC½H|=”R¾=ï=øv½¡rq»BP“=Ð1½½ØÖä=ó@E=y=ïÐc½ƒ^¦=S–µ=¹k½"(>lÍF=¯›î=(hï½2‡¾ÀÒ=í9¦½Ëlâ==À=ÚrÅ=RÇ꽞&>ÌIŠ=ùæȽÐÆË=h[¢=ø·Î=¾–¾>>s±‘½Ö›’½®I<iˆ
=ŒÆÞ¹©ðÛ¼*Äi½¯Ú„¼NœÅ¼`èÛ;°7‰<;ß»±¿n¼oãå¼¥!½µ¼]½?{/=žDR½Õ¨½vØ<¼~1#°ºÁÔμÚ9=Ï?½Ú$Š<ü ¤;n    ¼ýt=H´<v´i;FѬ<µ*<˜@Ÿ¼Ð.=ôŒT¼ˆöä<š·½¥'=AÇ<×þ¼³ß;'à‘<µp‘¼Û“á<3¼Ôé;™„?=œ½Û    »ª<cW<t4<RðV½®¡¬;ïH÷¼yµÙ»`‘®¼E:"=­<E÷/=[•0¼ºé;oe²¼a€» Rõ» ›ƒ:Ê!½»´Ï¼2    ½'ÉÒ»2ϼí?º¡-<½ñ·`=×-ۼ˲<´ïs¼5r <Ãô:=V9l¼ÕЏ¼/¤=ÐZe¼Z…;‰c½ÙãC=S˜½#™í;Ÿ@‹<ÎÍ<¾ß=ÛÃG½RÉ%=%i´»w™H<̼¼Ð^.<“J`»«ý½ã)=î™»,b3½Ðý<­½(ð; ¯°¼¡†l=2èª;6Ë;‚\½à)<“"½YûF½î_7=‡âý; =½p‹.<‡Ðä<å|<d]×¼ž½j99¼yw†¼ø5½    ³¼c%2<Ñ ‚¼Š½I—½±\­<fȅ<zý€¼l¶Ñ»¯È¸¼QL6=ÛéK¼¿B§¼‹»Å<1ÁH½ùÀ<Dk¼ð€½Ÿ?=È(½Àób¼‰³Ï<ª:ª<PüŠ».î$=æD²9ÃV:½½“A=SÇ]:íÞi½ë=®iü»ŒYV=
s<ïúͼ(ü½t“<½õôS=ÂeÛ¼¯U;§4>¼ÛĪ<v8½.Zm½|nL½:‚?<ç.<¯í<Z¥<·Ø/½ùTC¼B’Ì<Y`­¼( 2<ûƒ¥¼}q½‹]¼Æ¸m½±½ê¼Â<+½¸ù¿¼ÄM=Ió6¼É^½íS    ½Šy¼\­<‡2ú<ðš<­s>»N潐3c½dóÙ<»¦|¼yk¶¼\ð =0÷¼˜Š¼“ú»unL<?u=Á¹[;@ê<ô`=e*½ãº3½<Ô½-,½8꽯ç<‘Ê+»-‰Ø<Bq<= ò¼@lq»Þ¡J<+`½àè    =&T½\>KêO>ô]S> iP¾ŠU>ßøG>Þ¶T¾¨6U>šýO>™A>¾ƒQ¾JS¾Ï¹R>ٓT¾‹g)¾ð†ù=EW¾‚¿=Ú8 ¾’Ä:¾nÐ5¾8Ü%¾¿®1>µÑ½õa3>£°¯½U
¾· ,¾    Ãܽuá>}#¾7òA>DÀ¾y”)¾ E/¾ô˜Ô=u´6¾N:>¾’=>æ(>XÁ>õ÷½“y<>­ÆÚ½x>Àº;¾–Œ¾½– ¾–B¾Q§>æÀ¾‰˜!>Âsó½—<:¾y{Ô½–F>;<¾Ä>Žž&¾“‰D>`Ë>pø>f+4¾Ó/>¯ùH¾Ë?->‘ª:¾‡ŸJ¾D´\¾ÄŽB¾Z=%>§ë½·Å>—@¾"Ô¾ þ7¾ú™¾´=Ýä½m>¨•¾¿²á½^…¾î½3>ܟ!¾xZë=`¾·û!>    ˜>š    7>ÛVÔ=g¾\dÚ=êØ%¾ûF$>6Z!>—Ÿ%>è)4¾h¨ã=Ú)Ú½€o;><Ò7¾ÀDD¾;-¾‹ >õð>¾Ým>ÍÃô½ã=]œ=>6%Ä=ǜ3¾!õ1>Ëz(¾Ip@>4€8¾Ðt.¾1c1¾t¿=   *8ZxP0TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°4HEAPXø/dense_2H¸-Ø/ X weight_namesdense_2/kernel:0dense_2/bias:0(  Ø*ˆZh284TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø5HEAPX X4kernel:0bias:08SNODð1284SNOD@7à0  `,Zx;TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿp?HEAPX¸:dense_3Hx8˜: X weight_namesdense_3/kernel:0dense_3/bias:0(  BTZhØ<ø>TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸@HEAPX ?kernel:0bias:08SNOD°<Ø<ø>SNODJ ;¾ ´>‡sG¾45>ú¦0¾Û>Ìò)¾ý¢>¥èü½bÎõ=äö1¾Ï\>’"8¾“W>  0¾÷ñ¾Ôs->evF¾ÁZÿ½i”1>„ß¾žIõ=Z¾û'>Pô>Ø9¾5uA>ž9EÓ+•EçӁE6Eû†šEØàyEáv¸E,ºÓET2ÆE€YEÀ÷—E>–Eú´±EˏE•19E9•EØ߁E CE»”šE¾÷yEø†¸EÍÓE}CÆEYE4˜Ec–EmıE]E¤D9E I•EÌíESEô¥šEzEݛ¸E¶äÓEðYÆEå0YE˜E-–EQرEZ.EQ[9EX\•E    þEeE¹šE    2zE³¸EÿÓEùrÆEÅKYEB)˜E @–EÜî±Ej@EÁ#×Bâô C CQC6“&C]³
Cæ]HCíjjCOUC¿léBýk%Cl C\ž@CxÇCæÇÕB5hC³ãCîC¥ø$C$Œ    CΉFC\‰hC^‹SCñ çBòä#CéÉCïÔ>C]CC—ÔB8CæC ÀCN#CžC¾üDCîfCLÖQCР   åB™"CBhC%Q=CxúC—vÓB§ðCiCú²CIl"C³¬CIŸCCveCøWPCCãBhs!CR3CÝü;CBÚCÀð8?†¾ƒ?|Xs?}´ƒ?ÅZˆ?L­g?|=£?+§¿?M¬?l    C?~҇?ô‚?k£œ?¼Õ{?S›>?ï‰?½Ñ|? H‰?4ώ?š q?éøª?ÿ#È?òÞ´?V¥K?zŽ?pe‰?g+¤?ïƒ? Y9?…?©Øt?“»„?Ò´‰?Bi?ܤ?aÁ?:®?öŠD?Ò‰?!E„?¬4ž?:S~?}@?u¹Š?»~?u5Š?ˆ?зr?t««?íÉ?‹’µ?n%M?°Ž?7ð‰?À¤?‚Ž„?žXºB™½öBO5ìBdÌúB°þB¼ÈÞB,wCœ8CA!C µBVÿBSáðBœCzéB3ŠºBà`÷Bù¦ìBÔaûBÌþBÆ;ßBâÚC 9C¥‡!C‹ƒµB†ñÿBŽñBƒüC¿éBìá¹Bï÷B‰ìBÃøúBðþBÈÞB®C`²8C×c!CYIµBR˜ÿB`ñBÏÔCî‹éB•@¸B¿õB=rêB2hùB\8ýBIÝB*ÙCcŽ7C3” C
>´B²"þBÈ1ðBMCt[èB~́BRâÇBÙ±B-rÃBXuÏBK¾ªBì/ùB‡¨CZ CðB¦†ÍB‡¥ÈB    ðB`ÀBZˆBE£ÇB6y±Bú)ÃB[5ÏBY{ªBÆâøB!vCÔæC{½B¯CÍBØkÈB=ÁïB:Æ¿Bç<B?wÇBD3±BkìÂBºÏB>ªB>ªøBKC¾ÎCїB_ÍB¯GÈB׍ïBôž¿Bçá€BƒRÇB(ç°B«®ÂBûãÎB—ü©B‘yøB¾CO½CžuB¢àÌB;.ÈBZbïBp¿B_ü€E€4±E–h¦Esà²EC¶EçvE&å×EçÀýE,åâE!*†EÍï´ER'®EcKÎE\¨E„ýEúñ¯EÝ/¥Eà˜±E;ÿ´EÿTœE®eÖE#ôûE&QáEœ4…E˪³Eõ¬E­ßÌE¿Ù¦EªSyEÌo«E‡ë Ey­E“d°E™S˜EûÐE͒õEΟÛEÒÀE¯E“”¨EɹÇE— ¢EçšiEFV E«Ÿ–Eàß¡Eþ¤Eð•ŽEV’ÃE¹îåEs{ÍE]žrEßå£E ¯EbðºE« ˜EÒ|CÿrÏCI[ÇC0-ÔC¡jÕC,›»CeÓþCQDED­¤›COòÔCýÊCàÄòCÌÃC8x C?øÓCçhËCî¢ØCÚC$¿CØ,DƒD5DŸC‹ÙCŸ‹ÎC…øC%ÈCŸ¡CÖûÕCîÍCçÚC‰7ÜCû)ÁCLkD$áD”Š    D‡ C¦˜ÛCeŸÐC~úC"ÊC娠C‹ÕC?ÌCŽÙCÐ]ÛC4CÀCöçDc.D    D=ڟC¹ÚCÔäÏC{ùCÞfÉC<»ê@ӛ<Añ[$A/v6AíXCA×A}&iA´Ø…AåkzA6M    Af$@Ag¨=AQ”`AhÙ4Ak>¡Aø­A‘œXAHÎjAü“ŸAÄÌÌAûoASð2G©¯¯GuÆG63G°GÐcÆGM ÛF·QGâ­jG©e#G=nŸG‘†³Gáz7G|´G™ûÊGLgJG¢ÖÇG'káGX8GY^´G .ËGûûÉB6rCe"ŒCòp Jµ7J32JÄÁF  TB ZxÐMTREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0RHEAPXxMdense_4H8KXM X weight_namesdense_4/kernel:0dense_4/bias:0(  `B Zh˜O¸QTREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxSHEAPX ØQkernel:0bias:08SNODpO˜O¸QSNODÀT`N  |,Zx Htraining_configà`øXXTREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ^HEAPX Xtraining@`V€X   weight_namestraining/Adagrad/Variable:0training/Adagrad/Variable_1:0training/Adagrad/Variable_2:0training/Adagrad/Variable_3:0training/Adagrad/Variable_4:0training/Adagrad/Variable_5:0training/Adagrad/Variable_6:0training/Adagrad/Variable_7:0(  lB Zhˆ[¨]TREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(bHEAPXÈ]AdagradHSNOD`[ˆ[¨]_°aTREEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpcxHEAP°ˆrSNODh__°aSNODPZ¸d(Èe8ØnHèoXøph¸rxÈs  ŒH8Zx(  ØfˆZh€Ep‰%E¯úÙDMøåDA°E}é>EÇNêD`‰NEßà^E²÷E    äEáFNE¿óEPßE    ]1Eo§?ETªøDA-EMŸ1E_Z^EضE*;EJE¢AE8ð
EÔ%;E¡kE†¡ Em||E레Eƒk-E‹$:EüÄ{E0;ŸE8Ï=Eà(uEOI„E'Æ)E‡5EáàtEí;šEs9EÀšƒEÉçEt³4ExBEy7ƒE:¦EÓEE1 ‹E!¤–E×@EzNEb‹EÔ¯ERE)¯ŠE.{•EÐ÷=E¤,LE–/ŠEô¯Eì4PEÒ%E—x%EP§ÖD5äDSZE"@EšèD¾5YEñ_jEzPE/Ä EôèXE    ®ˆEËæ#E½€E ÌŠE? 1EFê=Es]€E"W¢E‡¦AEve–E¼¢EHÄMEIF]E˜Î•E‚î½E“¦aEvM¨EUJµEweEË&wE§EÅÔEÎ|E  ÄHZx(  àHTZh  4I ZxVariable:0Variable_1:0Variable_2:0Variable_3:0Variable_4:0Variable_5:0Variable_6:0Variable_7:0((  @I Zh  LIZx