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, "activation": "linear", "name": "dense_1", "use_bias": true, "dtype": "float32", "kernel_constraint": null, "batch_input_shape": [null, 28], "activity_regularizer": null, "kernel_initializer": {"config": {"minval": -0.05, "seed": null, "maxval": 0.05}, "class_name": "RandomUniform"}, "bias_regularizer": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "bias_constraint": null, "kernel_regularizer": null}, "class_name": "Dense"}, {"config": {"units": 7, "trainable": true, "activation": "linear", "name": "dense_2", "use_bias": true, "kernel_initializer": {"config": {"minval": -0.05, "seed": null, "maxval": 0.05}, "class_name": "RandomUniform"}, "kernel_constraint": null, "activity_regularizer": null, "bias_regularizer": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "bias_constraint": null, "kernel_regularizer": null}, "class_name": "Dense"}, {"config": {"units": 3, "trainable": true, "activation": "linear", "name": "dense_3", "use_bias": true, "kernel_initializer": {"config": {"minval": -0.05, "seed": null, "maxval": 0.05}, "class_name": "RandomUniform"}, "kernel_constraint": null, "activity_regularizer": null, "bias_regularizer": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "bias_constraint": null, "kernel_regularizer": null}, "class_name": "Dense"}, {"config": {"units": 1, "trainable": true, "activation": "linear", "name": "dense_4", "use_bias": true, "kernel_initializer": {"config": {"minval": -0.05, "seed": null, "maxval": 0.05}, "class_name": "RandomUniform"}, "kernel_constraint": null, "activity_regularizer": null, "bias_regularizer": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "bias_constraint": null, "kernel_regularizer": null}, "class_name": "Dense"}], "class_name": "Sequential"}
tensorflow2.1.3à{"loss_weights": null, "optimizer_config": {"config": {"decay": 0.0, "epsilon": 1e-07, "lr": 0.009999999776482582}, "class_name": "Adagrad"}, "metrics": ["accuracy"], "loss": "mean_squared_error", "sample_weight_mode": null}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€, <d¾õS¾ŒÅI>.K¾¾>Xãg>j‘t¾í©2¾Fj¾s@e¾üb ¾>5U>6qf>Ägo¾Ö1i¾´B¾ûPB>“¿N¾˜³q>¼þ4>M+S¾4œf¾ªÐB¾²Du¾s}}¾@Ïa>!Åa>cO¾‚”Q¾¼hR¾òP%>§%s¾Š@>‰f>VV¾N<¾$Sg¾    ¢.¾ƒž"¾öp>$<b>°#4¾e¦`¾«ŠK¾R a>Ñe¾št4>:lF>õ¶i¾ñX¾žO¾-T¾;µ?¾÷7:>Rm>P 4¾2½À¼Ÿ«>½w_=å7ñ¼ ‹fº$`-;ww»ÑgF½éà\<Ïçɼçð<gÎB½^Ô3=5ð<?ˆ¼øõÖ;'Õz¼Âî¹¼NÑ=´BE½[5*½‚&t¼¥A½E^H=:¼S=5|;Twx¼=^{H<ôI‰¼ý,c½ja.=Ú¢q¼^=(­};þ¥b½®v=ç{==7…R=0|W<oҌ¼>†k¼8<6m2<VB#½¿LÚ<\"=Ü©;‘‰9< C#=«<fç»î~p¼·q·<”—Q½*܌¼Žý;ÇP!½Zü<.³V¼¼ôÖ¼\û‡;ÒV7½Ä    ¼:þ«¼Žƒ)=°Yv;;ô½­™<—­¢»Nà<ꥩ¼<Pþ¼‚”< /.½Åß½ê®U½Ö¾„½nhÏ<–í;”¯±¼%±'=úóõ¼lò¼«u<<µuÏ<m;H<DS=› =“zÚ<ÉU
=ƒC =ņ¼ku£<.§©»¥Mļs½Î¼$=Èb6¼ŽÁ$¼#¨ ¼ãòí¼¸7绽;Š;øl8¼‘"<uŽ=U4½ØÌè¼7o<EI=›Þ½Û1G½Æ]½ø`9½,o¼‰S½BD¸<q,ºK‘Á»õÊ´ºõÊT<ûÆp¼DòU¼õܼC:$=Ù9X;ˆÓŠ¼Õ¼Äá»<`C½%WS=ºT3½¼Ž¦¼3X=•Ÿ=K’
=&ùU¼Ð%½€ 3=Pм/{-½œE{<#TP<hfö¼:¡C<hÖ¼õU½ƒ‰Þ¼H»Ã¹=È֎<b™c<fÛ\=ð$»! 6=òÿ]½Œpþ¼s˜<íÛ½üì<ÿ!= ;à]=þo…¼Ýå`<%¼²¼_¦Ï¼jú›½(O¢¼ùð;êò½È¸ˆ»‡7=ìWœ»±fP<ÎVã¼-Æü†ªŒ<Í\º÷›Ã;—Š»ß‚×»‚<¼¼Ÿó<<¹%=¢T½Çe<ÅÙA:¥È½Ú‚¼‚€(¼¥Lõ<åA =5Ô?½•Ç;(b.½&-=uqÂ<¢P¦»vgP¼½Ažº˜Aû¼£t2=]½Ô'½_ô<š=_>¼" ½ :é¼í=væ°;§I»y\»AFÛ¼Ò¨»í÷x<ˌzºM¸4;ií*½ìwf¼à½míZ=4ÅÔ;¦9g¼    2U¼–¨¹ ¸>½Ø·4=þ;Z»y    J½´ÃD;½»=»”ÒŽ»†üÌ<{6(½‚O~:íií¼‚pz¼Rñ¡¼c;/™<ènf¼J_!=ྠ   <*cg=¨±Y=mû=Àƒ¼azé¼Tè=…K ½7mÒ<l»Dˆ<ÈÇG½U¶ê<+ìã¼»‡£»º =Jü<uc¼,Sá¼´‡=*ž^¼OGÄ<}²9;µ‚»3ø\¼È:½Œe><y¼»ãÊ ½–8ƒ<•Kþ»Æ`¼ÄÁ•<³z”¼»Rú¼_Ñq½n'Î<Ô ª:£çí¼£.¼!Š<
V¤<Ø,-=~u;±}< N=Ղm¼¬¡Ñ¼1F´<!Ð)<M    Ð¼¹<‘yB=…@ò<˜ò¼¿õ½z‰¼›¯Ÿ¼ÛO=êƄ¼7Í<ª²¼.–¼R‡…½…ƒ=î?½ÈT¼Ô±=ؽTb¼ïQF¼ª¥»:=­ ½V,x<ê"=MZ¼¡è¨<®îš;Õö=„5C=*€'¼    3<¯+= ¾»«°ó»øÄ(½5O.½ì_½Ã’;¾ûL:¾Žú,>å˜=¾‹8>“6>Òu9¾›8¾Úk5¾">¾àÿ9¾°<>ڑ:>`:4¾½¾fˆ/¾m@¾VtÁ½’E¾ö#É=én>™ü½'Ò.¾ol÷½ý5¾Á ¾pÀK>ëD>¾7>ÿzü=f£Å=ƒÎ8>½þB>þƒ¾>ï¾²V5¾Pt¾(¾Š>¾éÿ¾ë‰>F—(>~]>¶Ð >Ó9$>‘P×=™Úì=ÇÞ½vd5¾=B>}Ž2>q±4>w­>4    >]‹:¾¡èD¾‰#0¾>ßó½/}¾@o¾
ZB¾bÂ>(¯/>‡í½q¾¶® ¾Ó§?¾(<¾: ><>(.*¾¤@¾Û¾T6*¾ÓL¾§L'>¥ˆG>m-¾›œ¾.i%¾P»A¾†÷½°=î=5¶¾=*=/¾8Éݽ`Š7¾…Ù"¾Ÿ ¾4`Ö=#[>})Ý=dþ>ׂ>{¸B>ïßô=ôÒ¾­c¾*>ìÁC>ܱF>N§@>lì=9ß8¾æÕ½o¾>¾“H¾Ûÿ¾Lˆ+¾£ø>·vØ=“:">@X>¨•>y>†Þ">+þ¹j¾[0®=   *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 ;C,;¾G)Ú=þî>¾ž¾YD>É]!¾—~¾R+$>,™)¾±o¾!s,>—¤¾A ¾E™>tã2¾»€Ï=ùhî½î¯A>Ï&G>iƒ¾€£=>4±ü½0ßð=ø½ed'¾ðP6>£Q5¾ÄW~Eð¿ŒE±{E‡ÙEb2OE´ÎE@Ô§EîI’EÚÁÜE¾ÇE­iE~^‚E-Ñ®Erâ`E¦]~E-ÌEœ{E˜ÜE17OEîÎEÍקEM’E4ÆÜEŠÊEزiEda‚EÖÔ®EÊç`E¾d~EÔƌEô {E®àE‰<OEÙÎEŸÜ§EBQ’EÊÌÜE"΁Eè¸iE e‚EëÙ®Eòí`E³e~EênjE›"{EuáEÀ=OEÖ ÎEYݧEèQ’E¶ÍÜE™ÎECºiEye‚E{Ú®Eÿî`EC-ÔC«Cö3C¹ÛBóRC=ý)CÞCÄ5aC,`C„Ñ÷BßCåü3Cw“èB C¦¿C¥˜CCéüÚBIûQCä)CÉCÞaC‹LC}¯÷BõÊCsã3CßpèB"þCO¹C–’CC˜òÚB×òQCpÜ)C‘ÂC¨ aC—EC‘¤÷BPÄC:Ü3CeèBªÎC …CÖcC½âC•¤ÚB~§QCs)C    C½`CEC[N÷B!’C˜›3C#èBÛV<?Z>Z?
aF?yRY?¡ø$?mý“?ùšp?/$`?è?z©??F®9?&ë=?‡ì€?3W,?‹Ÿ=?ÝÓ[?Å×G?6ÙZ?„1&?ùø”?1.r?Ô¾a?%óž?íô@?›;?²,??Ôˁ?̍-?cv<?DwZ?…F?ŽY?>%?¡2”?çÛp?Ðc`?%ž?@É??~Ð9?xý=?؁?;l,?.N<?ì<Z?DfF?ÓVY?Oó$?å ”?k§p?ß(`?%þ?™¡??1¡9?ÓÙ=?èô€?¯G,?YÖBÔóûBœ—ãBÔÞøB½B6>)C+KCv÷Cä/5CZ°ØBÏo×BvÖBÝCF]ÃBúÖB•çûB֋ãBWÓøBÚ½Bƒ7)C»ECuñC°(5C§ØBjd×BËúÕB×C‹SÃBšúÕB²ØûB(~ãB«ÅøB'ú¼B/)C?CYêCù5C¢›ØB\W×BÌïÕBPÏCžHÃBìÕBSÆûBEmãB²´øB¿ë¼BÄ$)CO6C{áC›5CRØBG×BEâÕBIÅC™:ÃBlÇ¢B©â¶B¡S¤B˜Ã¹B#’‡B_|C¡±ÕBñŸ½BÍ Cw¦Bîb˜Bu×¥B|tàBÓ‘BÁ¢BìÚ¶B‡L¤B¼¹BmŒ‡B¦wCÈ©ÕB!˜½BÌÇ C¦B3\˜B#Ñ¥BëkàBÑ ‘Bº¢BÝÒ¶BÑD¤Bî³¹B˅‡B:rC¡ÕBœ½B  Cø    ¦BU˜B=Ê¥BƒbàB,‘BͲ¢B\ʶB=¤B´«¹B ‡BâlCo˜ÕB
‡½Bx¼ C¦BÂM˜BÃ¥BëXàB…ÿBoözEV8E|
‚EW\EÑYEþÒÂEû/ŸE͓E,£ÏEH EÁñvE(V~E›ªE~›eE½ŽzE9üEóցEŠ!EywYEî‚ÂEŒïžE“E+MÏE‰¥~E ‰vE¡î}EÝЩE">eEqS{E„}EKQ‚EœEÔFZENÃE eŸEp”EêÏEwmEånwE«ª~E³ZªE$fEËzEå.E$ ‚EFNE¹ÏYEr­ÂE¯ŸEÒÁ“EkzÏEä~EáævEŸ!~E²þ©Eœ†eE‘uÎC·ñCþÿÙC²gîCݶC^¿ DùQD+÷Cð+DÇ'ÑC]ÙÏCoªÏC    ö D¹ƒ½CÇ´ÎCúñCÕ;ÚCÖ¬îCïR¶Cï DˆyD’c÷C?Ã+DúgÑC¦ÐCìÏCm D¼½C>NÎC6‚ñCœÏÙCº6îCWøµCŒ¡ DP;D°èöCšo+D—ÑC3©ÏCì„ÏC2Ú DË]½CHzÎCG¯ñC÷ÙCgîC¶C°Æ D YD°÷Cú–+Dõ-ÑCÒÌÏCû²ÏC”ø DЂ½C{† AÌá1AĖAɶ5A]âA˜öAYØSAÎÕ8Aø6‹AÐç#AÔ£AF£$AU¿\A0AAy”A®zªAªFœA»ÕA~éˆA^Å<A’Å·A†³PGxЂGÄh„G'üVG}á†G䐈G ²PGۂG˜w„G)VrG)˜G‚šG¡7BG²`sGƒAvG%GÿáNGæQGHSGû·„GA]†Gß=C5PCU‡TCIJ­€õI†:J¬èµ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}L}E$\Eà̄E3=uEÅjE—#Eo”›E-)8E†GQEƒí@EE2EQ^*EõœïD™eaEl¦Eh©(EѝEaâE隠   E‹RÂD[›5E¬¬_EŒÆ~EfjE‹XE¼¼NE|E‰)‰EçEŒ‚%E–¹E9 EÑEKß¾D42Eˆ"YE ~wE…ÄcEÍ7REf£HEÃý E¾A…E  †Eæ™EtȌEÚہEêwE¾~,En¥E3T2ET´JE>Ö:E ,EAô$EÞçD_SZEdƒKEóÜgEopUE{EEƒ<Ej^EÕyEèÇ`Eo€E¢ÂkEžYE„½OEE!ê‰EHØEªò)E±ÖE0
E@¼
ERÄD<ù6E0ýjEœÝ…EĄvE>cE!YElvEéCEÅ[MEeÙiE7TWEÉÎFE“Ó=Eð¿E=ó{E<@ES”"EåúEu¨
Eù˜E¿&»DÌ/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