<snapdata remixID="8417128"><project name="naming colors" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="naming colors"><notes></notes><palette><category name="Neural net" color="26,202,255,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="Name all colors" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>color names</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>color</l><block var="colors"/><script><block s="setPenColorDimension"><l><option>hue</option></l><block s="reportListItem"><l>1</l><block var="color"/></block></block><block s="setPenColorDimension"><l><option>saturation</option></l><block s="reportListItem"><l>2</l><block var="color"/></block></block><block s="setPenColorDimension"><l><option>brightness</option></l><block s="reportListItem"><l>3</l><block var="color"/></block></block><block s="floodFill"></block><block s="doAsk"><l>What color is this?</l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="color names"/></block></script></block></script></block-definition><block-definition s="Create %&apos;n&apos; random colors" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n">50</input></inputs><script><block s="doSetVar"><l>colors</l><block s="reportNewList"><list></list></block></block><block s="doRepeat"><block var="n"/><script><custom-block s="let %upvar be %s"><l>hue</l><block s="reportRandom"><l>1</l><l>100</l></block></custom-block><custom-block s="let %upvar be %s"><l>saturation</l><block s="reportRandom"><l>1</l><l>100</l></block></custom-block><custom-block s="let %upvar be %s"><l>brightness</l><block s="reportRandom"><l>1</l><l>100</l></block></custom-block><block s="doAddToList"><block s="reportNewList"><list><block var="hue"/><block var="saturation"/><block var="brightness"/></list></block><block var="colors"/></block></script></block></script></block-definition><block-definition s="Name a random color" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="let %upvar be %s"><l>hue</l><block s="reportRandom"><l>1</l><l>100</l></block></custom-block><custom-block s="let %upvar be %s"><l>saturation</l><block s="reportRandom"><l>1</l><l>100</l></block></custom-block><custom-block s="let %upvar be %s"><l>brightness</l><block s="reportRandom"><l>1</l><l>100</l></block></custom-block><block s="setPenColorDimension"><l><option>hue</option></l><block var="hue"/></block><block s="setPenColorDimension"><l><option>saturation</option></l><block var="saturation"/></block><block s="setPenColorDimension"><l><option>brightness</option></l><block var="brightness"/></block><custom-block s="let %upvar be %s"><l>color</l><block s="reportNewList"><list><block var="hue"/><block var="saturation"/><block var="brightness"/></list></block></custom-block><block s="floodFill"></block><custom-block s="Name this color %l then %cmdRing"><block var="color"/><block s="reifyScript"><script><block s="bubble"><block var="response"/></block></script><list><l>response</l></list></block></custom-block></script></block-definition><block-definition s="Create and train color naming model $nl with layers %&apos;layers&apos; $nl with %&apos;n&apos; training steps" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n"></input></inputs><script><block s="doThink"><l>When this is finished training you can press the space bar to see the name of more random colors.</l></block><custom-block s="Create a neural network model %txt %br with layers %l %br using optimizer %txt %br with loss function %txt %br each input has %s number(s) %br then %cmdRing %br but if there is an error %cmdRing"><l>naming colors</l><block var="layers"/><l>Adaptive Stochastic Gradient Descent</l><l>Softmax Cross Entropy</l><l>3</l><block s="reifyScript"><script><custom-block s="Send %txt data input %l output %l %br forget old data %b ( this is only for %txt ) %br then when data has been received %cs %br and if the output data are labels use these %l"><l>training</l><block var="colors"/><block var="color names"/><l><bool>true</bool></l><l>all models</l><script><block s="doTellTo"><l>Messages</l><block s="reifyScript"><script><block s="bubble"><l>Training started. When finished the accuracy is the fraction it answered correctly in testing.</l></block></script><list></list></block><list></list></block><custom-block s="Train model named %txt %n times %br unless no progress for %n cycles %br with learning rate %n %br and shuffle the data %b %br and use %n of the data for validation %br then when completed %cmdRing %br or if there is an error %cmdRing"><l>naming colors</l><block var="n"/><l>50</l><l>.002</l><l><bool>false</bool></l><l>.2</l><block s="reifyScript"><script><block s="doTellTo"><l>Messages</l><block s="reifyScript"><script><block s="doThink"><block var="training statistics"/></block></script><list></list></block><list></list></block><custom-block s="Name a random color"></custom-block></script><list><l>training statistics</l></list></block><block s="reifyScript"><script><custom-block s="inform %txt with title %txt"><block var="error message"/><l>Error training a model</l></custom-block></script><list><l>error message</l></list></block><comment w="300" collapsed="false">Train the model. It will adjust neuron weights &apos;n&apos; times to slowly reduce the error.</comment></custom-block></script><custom-block s="$flash remove duplicates from %l"><block var="color names"/></custom-block></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="inform %txt with title %txt"><block var="error message"/><l>Error creating a model</l></custom-block></script><list><l>error message</l></list></block></custom-block></script></block-definition><block-definition s="Name this color %&apos;color&apos; then %&apos;receive response&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%cmdRing"></input></inputs><script><custom-block s="Get prediction from model(s) %s with input %s %br then %cmdRing %br or if there is an error %cmdRing %br with categories %l"><l>naming colors</l><block var="color"/><block s="reifyScript"><script><block s="doRun"><block var="receive response"/><list><custom-block s="Categorical prediction sorted with confidence percentages %l"><block var="prediction"/></custom-block></list></block></script><list><l>prediction</l></list></block><block s="reifyScript"><script><block s="doThink"><block var="error message"/></block></script><list><l>error message</l></list></block><custom-block s="$flash remove duplicates from %l"><block var="color names"/></custom-block><comment w="285.7142857142857" collapsed="false">Asking the trained model to predict the color name for a new random color.</comment></custom-block></script></block-definition><block-definition s="Name color under mouse pointer" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="let %upvar be %s"><l>color</l><block s="reportNewList"><list><block s="reportAspect"><l><option>hue</option></l><l><option>mouse-pointer</option></l></block><block s="reportAspect"><l><option>saturation</option></l><l><option>mouse-pointer</option></l></block><block s="reportAspect"><l><option>brightness</option></l><l><option>mouse-pointer</option></l></block></list></block></custom-block><block s="setPenColorDimension"><l><option>hue</option></l><block s="reportAspect"><l><option>hue</option></l><l><option>mouse-pointer</option></l></block></block><block s="setPenColorDimension"><l><option>saturation</option></l><block s="reportAspect"><l><option>saturation</option></l><l><option>mouse-pointer</option></l></block></block><block s="setPenColorDimension"><l><option>brightness</option></l><block s="reportAspect"><l><option>brightness</option></l><l><option>mouse-pointer</option></l></block></block><block s="floodFill"></block><custom-block s="Name this color %l then %cmdRing"><block var="color"/><block s="reifyScript"><script><block s="bubble"><block var="response"/></block><custom-block s="Name color under mouse pointer"></custom-block></script><list><l>response</l></list></block></custom-block></script></block-definition><block-definition s="sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="161.14285714285708" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations>ca:ordena _ segons criteri _&#xD;</translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doDeclareVariables"><list><l>even items</l><l>odd items</l><l>merge</l><l>split</l><l>copy of data</l><l>id</l></list></block><block s="doSetVar"><l>id</l><block s="reifyScript"><script><block s="doReport"><l></l></block></script><list></list></block></block><block s="doSetVar"><l>copy of data</l><block s="reportMap"><block var="id"/><block var="data"/></block></block><block s="doSetVar"><l>split</l><block s="reifyScript"><script><block s="doSetVar"><l>even items</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>odd items</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportListIsEmpty"><block var="copy of data"/></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="copy of data"/></block><block var="odd items"/></block><block s="doDeleteFromList"><l>1</l><block var="copy of data"/></block><block s="doIf"><block s="reportNot"><block s="reportListIsEmpty"><block var="copy of data"/></block></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="copy of data"/></block><block var="even items"/></block><block s="doDeleteFromList"><l>1</l><block var="copy of data"/></block></script></block></script></block></script><list></list></block></block><block s="doSetVar"><l>merge</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="#1"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#2"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="#2"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#1"/></block></script></block><block s="doIfElse"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="reportListItem"><l>1</l><block var="#2"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="evaluate"><block var="merge"/><list><block s="reportCDR"><block var="#1"/></block><block var="#2"/></list></block></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#2"/></block><block s="evaluate"><block var="merge"/><list><block var="#1"/><block s="reportCDR"><block var="#2"/></block></list></block></block></block></script></block></script><list><l>#1</l><l>#2</l></list></block></block><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doRun"><block var="split"/><list></list></block><block s="doReport"><block s="evaluate"><block var="merge"/><list><custom-block s="sort %l ordering with %predRing"><block var="odd items"/><block var="function"/></custom-block><custom-block s="sort %l ordering with %predRing"><block var="even items"/><block var="function"/></custom-block></list></block></block></script></block-definition><block-definition s="Categorical prediction sorted with confidence percentages %&apos;prediction&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><custom-block s="let %upvar be %s"><l>sorted</l><custom-block s="sort %l ordering with %predRing"><block var="prediction"/><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block s="reportListItem"><l>2</l><block var="#1"/></block><block s="reportListItem"><l>2</l><block var="#2"/></block></block></autolambda><list><l>#1</l><l>#2</l></list></block></custom-block></custom-block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportListItem"><l>1</l><l/></block><block s="reportRound"><block s="reportVariadicProduct"><list><l>100</l><block s="reportListItem"><l>2</l><l/></block></list></block></block></list></block></autolambda><list></list></block><block var="sorted"/></block></block></script></block-definition><block-definition s="Open this in a new tab" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>re_open_full_window</l><list></list></custom-block></script></block-definition><block-definition s="Search for a good color naming model $nl with layers %&apos;layers&apos; $nl with %&apos;n&apos; training steps" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n"></input></inputs><script><block s="doThink"><l>When this is finished training you can press the space bar to see the name of more random colors.</l></block><custom-block s="Create a neural network model %txt %br with layers %l %br using optimizer %txt %br with loss function %txt %br each input has %s number(s) %br then %cmdRing %br but if there is an error %cmdRing"><block var="model name"/><block var="layers"/><l>Adaptive Stochastic Gradient Descent</l><l>Softmax Cross Entropy</l><l>3</l><block s="reifyScript"><script><custom-block s="Send %txt data input %l output %l %br forget old data %b ( this is only for %txt ) %br then when data has been received %cs"><l>training</l><block var="colors"/><block var="color names"/><l><bool>true</bool></l><l>all models</l><script><block s="bubble"><l>Search started.</l></block><custom-block s="Search and replace %n times %br with number of experiments %n %br with number of samples %n %br with %n initial number of training cylces %br do after each experiment finishes %cmdRing %br do after each replacement %cmdRing %br then finally do %cmdRing"><l>4</l><l>5</l><l>3</l><block var="n"/><block s="reifyScript"><script><block s="doSetVar"><l>best score so far</l><custom-block s="max %n %n"><block var="best score so far"/><custom-block s="get the %txt of %l"><l>score</l><block var="results"/></custom-block></custom-block></block></script><list><l>results</l></list></block><block s="reifyScript"><script><block s="doSetVar"><l>best parameters so far</l><block var="parameters"/></block><block s="bubble"><l>Model updated.</l></block></script><list><l>parameters</l></list></block><block s="reifyScript"><script><block s="doSayFor"><l>Search finshed. Testing it with a new color.</l><l>2</l></block><custom-block s="Name a random color"></custom-block></script><list></list></block><comment w="250.71428571428572" collapsed="false">Wil search for good model parameters several times and when it a better one is found replaces the model with that one and searches again.</comment></custom-block></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="inform %txt with title %txt"><block var="error message"/><l>Error creating a model</l></custom-block></script><list><l>error message</l></list></block></custom-block></script></block-definition><block-definition s="Train model named %&apos;name&apos; %&apos;n&apos; times $nl unless no progress for %&apos;stop after&apos; cycles $nl with learning rate %&apos;learning rate&apos; $nl and shuffle the data %&apos;shuffle&apos; $nl and use %&apos;validation split&apos; of the data for validation $nl then when completed %&apos;process response&apos; $nl or if there is an error %&apos;process error&apos;" type="command" category="other"><comment x="0" y="0" w="267.14285714285717" collapsed="false">Train the model using &apos;n&apos; learning steps. If three is no progress for &apos;stop after&apos; cycles it will stop early. Each step will change weights by &apos;learning rate&apos;. If it is too big the learning will fail. If it is too small it will go very slowly. So that the learning doesn&apos;t rely upon the order of the data it can be &apos;shuffled&apos; each step. If validation data hasn&apos;t been created then an alternative is to use &apos;validation split&apos; fraction of the data for validation.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%b">true</input><input type="%n">0</input><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>train_model</l><list><block var="name"/><block var="n"/><block var="learning rate"/><block var="shuffle"/><block var="validation split"/><block var="process response"/><block var="process error"/><block var="stop after"/></list></custom-block></script></block-definition><block-definition s="max %&apos;x&apos; %&apos;y&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportGreaterThan"><block var="x"/><l></l></block><block var="x"/><block var="y"/></block></block></script></block-definition><block-definition s="Create a neural network model %&apos;name&apos; $nl with layers %&apos;layers&apos; $nl using optimizer %&apos;optimizer&apos; $nl with loss function %&apos;loss function&apos; $nl each input has %&apos;input size&apos; number(s) $nl then %&apos;do after model created&apos; $nl but if there is an error %&apos;process error&apos;" type="command" category="Neural net"><comment x="0" y="0" w="245.00000000000003" collapsed="false">Creates a neural with a &apos;name&apos; that is used in other blocks for training and prediction. &apos;Layers&apos; is a list of positive numbers determine the size of each layer. The &apos;optimizer&apos; is the name of the method that will be used during training. &apos;loss function&apos; is used to measure the difference between predictions and outputs during training. &apos;Input size&apos; should be a number or a list of numbers that describes what the input dimensions are. You don&apos;t need to provide this if you have already sent or loaded training data.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%l"></input><input type="%txt" readonly="true">Stochastic Gradient Descent<options>Stochastic Gradient Descent&#xD;Adaptive Stochastic Gradient Descent&#xD;Adaptive Learning Rate Gradiant Descent&#xD;Adaptive Moment Estimation&#xD;Adaptive Moment Estimation Max&#xD;Momentum&#xD;Root Mean Squared Prop</options></input><input type="%txt" readonly="true">Mean Squared Error<options>Absolute Distance&#xD;Compute Weighted Loss&#xD;Cosine Distance&#xD;Hinge Loss&#xD;Huber Loss&#xD;Log Loss&#xD;Mean Squared Error&#xD;Sigmoid Cross Entropy&#xD;Softmax Cross Entropy</options></input><input type="%s"></input><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>create_tensorflow_model</l><list><block var="name"/><block var="layers"/><block var="optimizer"/><block var="loss function"/><block var="input size"/><block var="do after model created"/><block var="process error"/></list></custom-block></script></block-definition><block-definition s="Replace model named %&apos;model name&apos; with the best model found $nl and when finished %&apos;run after replacement&apos; $nl but if there is an error %&apos;run if there is an error&apos;" type="command" category="Neural net"><comment x="0" y="0" w="268.5714285714286" collapsed="false">This will replace the model named by the best model found by the &apos;Search for good neural net model ...&quot; command.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%cs"></input><input type="%cmdRing"></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>replace_with_best_model</l><list><block var="model name"/><block var="run after replacement"/><block var="run if there is an error"/></list></custom-block></script></block-definition><block-definition s="Open support panel %&apos;source&apos;" type="command" category="sensing"><comment x="0" y="0" w="170.71428571428572" collapsed="false">Open an interface page for different machine learning models.</comment><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">training using camera<options>training using camera&#xD;training using microphone&#xD;posenet&#xD;tensorflow.js</options></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>display_support_window</l><list><block var="source"/></list></custom-block></script></block-definition><block-definition s="Send %&apos;kind of data&apos; data input %&apos;input&apos; output %&apos;output&apos; $nl forget old data %&apos;ignore old data&apos; ( this is only for %&apos;model name&apos; ) $nl then when data has been received %&apos;do when finished&apos;" type="command" category="Neural net"><comment x="0" y="0" w="282.14285714285717" collapsed="false">Sends either training or validation data to the support panel.</comment><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">training<options>training&#xD;validation&#xD;test</options></input><input type="%l"></input><input type="%l"></input><input type="%b">false</input><input type="%txt">all models</input><input type="%cs"></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>send_data</l><list><block var="model name"/><block var="kind of data"/><block var="input"/><block var="output"/><block var="ignore old data"/><block var="do when finished"/></list></custom-block></script></block-definition><block-definition s="Get prediction from model(s) %&apos;model names&apos; with input %&apos;input&apos; $nl then %&apos;process prediction&apos; $nl or if there is an error %&apos;process error&apos; $nl with categories %&apos;categories&apos;" type="command" category="Neural net"><comment x="0" y="0" w="226.42857142857144" collapsed="false">Ask the trained model to predict what the output should be for the &apos;input&apos;. There is also a block for computing many predictions all at once. &apos;Model names&apos; can be a list of names or a single name. Categories should only be provided if the prediction is for labelling the input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%cmdRing"></input><input type="%cmdRing"></input><input type="%l"></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>predictions_from_model</l><list><block var="model names"/><block s="reportNewList"><list><block var="input"/></list></block><block s="reifyReporter"><script><block s="doRun"><block var="process prediction"/><list><block s="reportListItem"><l>1</l><block var="predictions"/></block></list></block></script><list><l>predictions</l></list></block><block var="process error"/><block var="categories"/></list></custom-block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;value&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="value"/></block></script></block-definition><block-definition s="inform %&apos;message&apos; with title %&apos;title&apos;" type="command" category="other"><comment x="0" y="0" w="217.14285714285717" collapsed="false">Will display &apos;message&apos; in a dialog box with &apos;title&apos;. User needs to click &apos;OK&apos; to remove it.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>inform</l><list><block var="title"/><block var="message"/><l></l><block s="reportBoolean"><l><bool>true</bool></l></block></list></custom-block></script></block-definition><block-definition s="get the %&apos;key&apos; of %&apos;table&apos;" type="reporter" category="variables"><comment x="0" y="0" w="192.85714285714286" collapsed="false">Reports the value of the &apos;key&apos; in a table that is a list of pairs of keys and values.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%l"></input></inputs><script><custom-block s="let %upvar be %s"><l>pair</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>1</l><l/></block><block var="key"/></block></autolambda><list></list></block><block var="table"/></block></custom-block><block s="doIfElse"><block s="reportEquals"><block var="pair"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="pair"/></block></block></script></block></script></block-definition><block-definition s="Search and replace %&apos;number of replacements&apos; times $nl with number of experiments %&apos;number of experiments&apos; $nl with number of samples %&apos;number of samples&apos; $nl with %&apos;number of training cycles&apos; initial number of training cylces $nl do after each experiment finishes %&apos;when an experiment finishes&apos; $nl do after each replacement %&apos;do with parameters&apos; $nl then finally do %&apos;when finished&apos;" type="command" category="Neural net"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n">3</input><input type="%n"></input><input type="%cmdRing"></input><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><block s="doIfElse"><block s="reportGreaterThan"><block var="number of replacements"/><l>0</l></block><script><custom-block s="Search for good neural net model parameters for %txt %br perform %n experiments %br where each experiment should run the same parameters %n times %br where at first run %n training cycles %br and when each experiment finishes do %cmdRing %br then process best parameters %cmdRing %br but if there is an error %cmdRing %br $pointRight-1-64-64-255 Varying these parameters: %br ...optimization method %b %br ...loss function %b %br ...activation function %b %br ...shuffle data %b %br ...learning rate %b %br ...number of training iterations %b %br ...validation split %b %br ...dropout rate %b %br ...number and size of layers %b %br $pointRight-1-64-64-255 With these scoring weights: %br ...loss weight %n %br ...accuracy weight %n %br ...duration weight %n %br ...size of model weight %n %br ...variance of score weight %n %br $pointRight-1-64-64-255 With these initial settings: %br ...learning rate %n %br ...stop training if no progress for %n cycles %br ...fraction set aside for validation from training data %n %br ...shuffle data after each step %b"><block var="model name"/><block var="number of experiments"/><block var="number of samples"/><block var="number of training cycles"/><block s="reifyScript"><script><block s="doRun"><block var="when an experiment finishes"/><list><block var="results"/></list></block></script><list><l>results</l></list></block><block s="reifyScript"><script><custom-block s="process best parameters %l %n %n %n %n %cmdRing %cmdRing %cmdRing"><block var="best parameters"/><block var="number of replacements"/><block var="number of experiments"/><block var="number of samples"/><block var="number of training cycles"/><block var="when an experiment finishes"/><block var="do with parameters"/><block var="when finished"/></custom-block></script><list><l>best parameters</l></list></block><block s="reifyScript"><script><custom-block s="inform %txt with title %txt"><l></l><l>Error while searching for good parameters</l></custom-block></script><list></list></block><l><bool>true</bool></l><l><bool>false</bool></l><l><bool>false</bool></l><l><bool>false</bool></l><l><bool>true</bool></l><l><bool>false</bool></l><l><bool>false</bool></l><l><bool>true</bool></l><l><bool>true</bool></l><l>1</l><l>5</l><l>1</l><l>1</l><l>2</l><l>.001</l><l>20</l><l>.2</l><l><bool>true</bool></l></custom-block></script><script><block s="doRun"><block var="when finished"/><list></list></block></script></block></script></block-definition><block-definition s="Search for good neural net model parameters for %&apos;model name&apos; $nl perform %&apos;number of experiments&apos; experiments $nl where each experiment should run the same parameters %&apos;number of samples&apos; times $nl where at first run %&apos;training cycles&apos; training cycles $nl and when each experiment finishes do %&apos;do when a trial finishes&apos; $nl then process best parameters %&apos;do with best parameters&apos; $nl but if there is an error %&apos;process error&apos; $nl $pointRight-1-64-64-255 Varying these parameters: $nl ...optimization method %&apos;vary optimization method&apos; $nl ...loss function %&apos;vary loss function&apos; $nl ...activation function %&apos;vary activation function&apos; $nl ...shuffle data %&apos;vary whether to shuffle data&apos; $nl ...learning rate %&apos;vary learning rate&apos; $nl ...number of training iterations %&apos;vary number of training iterations&apos; $nl ...validation split %&apos;vary validation split&apos; $nl ...dropout rate %&apos;vary dropout rate&apos; $nl ...number and size of layers %&apos;vary number of layers&apos; $nl $pointRight-1-64-64-255 With these scoring weights: $nl ...loss weight %&apos;loss weight&apos; $nl ...accuracy weight %&apos;accuracy weight&apos; $nl ...duration weight %&apos;duration weight&apos; $nl ...size of model weight %&apos;size weight&apos; $nl ...variance of score weight %&apos;standard deviation weight&apos; $nl $pointRight-1-64-64-255 With these initial settings: $nl ...learning rate %&apos;learning rate&apos; $nl ...stop training if no progress for %&apos;stop if no progress&apos; cycles $nl ...fraction set aside for validation from training data %&apos;validation fraction&apos; $nl ...shuffle data after each step %&apos;shuffle data&apos;" type="command" category="Neural net"><comment x="0" y="0" w="280.7142857142857" collapsed="false">This searches for the best hyperparameters (learning rate, number of training cycles, loss function, optimazation method, and layers) that results in the most accurate model. It will run &apos;do when a trial finishes&apos; with the results of each experiment. Each experiment will average the results of &apos;number of samples&apos; runs with the same hyperparameters. After &apos;number of experiments&apos; it will run &apos;do with parameters&apos; with the best parameters found. The parameters can then be passed along to the &quot;Create and train a neural net named ... base upon ...&quot; block.&#xD;The named model must already exist and its training data (and optionally its validation data) already made available. It scores each experiment by adding the weighted values of the loss, accuracy, time to train, number of parameter, and degree of variability in the outcome scores.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n">10</input><input type="%n">3</input><input type="%n">100</input><input type="%cmdRing"></input><input type="%cmdRing"></input><input type="%cmdRing"></input><input type="%b">true</input><input type="%b">true</input><input type="%b">true</input><input type="%b">true</input><input type="%b">true</input><input type="%b">true</input><input type="%b">true</input><input type="%b">true</input><input type="%b">true</input><input type="%n">10</input><input type="%n">10</input><input type="%n">1</input><input type="%n">2</input><input type="%n">3</input><input type="%n">.001</input><input type="%n">0</input><input type="%n"></input><input type="%b">true</input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>optimize_hyperparameters</l><list><block var="model name"/><block var="number of experiments"/><block var="training cycles"/><block var="do when a trial finishes"/><block var="do with best parameters"/><block var="process error"/><block s="reportNewList"><list><block var="vary optimization method"/><block var="vary loss function"/><block var="vary activation function"/><block var="vary whether to shuffle data"/><block var="vary number of training iterations"/><block var="vary validation split"/><block var="vary dropout rate"/><block var="vary number of layers"/><block var="vary learning rate"/></list></block><block s="reportNewList"><list><block var="loss weight"/><block var="accuracy weight"/><block var="duration weight"/><block var="size weight"/><block var="standard deviation weight"/></list></block><block var="number of samples"/><block var="learning rate"/><block var="stop if no progress"/><block var="validation fraction"/><block var="shuffle data"/></list></custom-block></script></block-definition><block-definition s="process best parameters %&apos;best parameters&apos; %&apos;number of replacements&apos; %&apos;number of experiments&apos; %&apos;number of samples&apos; %&apos;initial training cycles&apos; %&apos;when an experiment finishes&apos; %&apos;do with parameters&apos; %&apos;when finished&apos;" type="command" category="Neural net"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%cmdRing"></input><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><custom-block s="let %upvar be %s"><l>current score</l><custom-block s="get the %txt of %l"><l>highest_score</l><block var="best parameters"/></custom-block></custom-block><block s="doIfElse"><block s="reportGreaterThan"><block var="current score"/><block var="best score so far"/></block><script><block s="doSetVar"><l>best score so far</l><block var="current score"/></block><custom-block s="Replace model named %txt with the best model found %br and when finished %cs %br but if there is an error %cmdRing"><block var="model name"/><script><block s="doRun"><block var="do with parameters"/><list><block var="best parameters"/></list></block><custom-block s="Search and replace %n times %br with number of experiments %n %br with number of samples %n %br with %n initial number of training cylces %br do after each experiment finishes %cmdRing %br do after each replacement %cmdRing %br then finally do %cmdRing"><block s="reportDifference"><block var="number of replacements"/><l>1</l></block><block var="number of experiments"/><block var="number of samples"/><custom-block s="get the %txt of %l"><l>epochs</l><block var="best parameters"/></custom-block><block var="when an experiment finishes"/><block var="do with parameters"/><block var="when finished"/></custom-block></script><block s="reifyScript"><script><custom-block s="inform %txt with title %txt"><l></l><l>Error while replacing model with best model while searching.</l></custom-block><custom-block s="Search and replace %n times %br with number of experiments %n %br with number of samples %n %br with %n initial number of training cylces %br do after each experiment finishes %cmdRing %br do after each replacement %cmdRing %br then finally do %cmdRing"><block s="reportDifference"><block var="number of replacements"/><l>1</l></block><block var="number of experiments"/><block var="number of samples"/><block var="initial training cycles"/><block var="when an experiment finishes"/><block var="do with parameters"/><block var="when finished"/></custom-block></script><list></list></block></custom-block></script><script><custom-block s="Search and replace %n times %br with number of experiments %n %br with number of samples %n %br with %n initial number of training cylces %br do after each experiment finishes %cmdRing %br do after each replacement %cmdRing %br then finally do %cmdRing"><block s="reportDifference"><block var="number of replacements"/><l>1</l></block><block var="number of experiments"/><block var="number of samples"/><block var="initial training cycles"/><block var="when an experiment finishes"/><block var="do with parameters"/><block var="when finished"/></custom-block></script></block></script></block-definition><block-definition s="run eCraft2Learn command %&apos;command name&apos; with %&apos;inputs&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%mult%s"></input></inputs><script><custom-block s="load eCraft2Learn"></custom-block><block s="doApplyExtension"><l>e2l_run(command_name, parameters)</l><list><block var="command name"/><block var="inputs"/></list></block></script></block-definition><block-definition s="load eCraft2Learn" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>https://ecraft2learn.github.io/ai/ecraft2learn.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>https://ecraft2learn.github.io/ai/js/ecraft2learn_snap_extension.js</l></list></block></script></block-definition><block-definition s="$flash remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><translations>ca:elimina els duplicats de _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>columns</option></l><block s="reportApplyExtension"><l>dta_analyze(list)</l><list><block var="data"/></list></block></block></block></block></script></block-definition><block-definition s="Send %&apos;kind of data&apos; data input %&apos;input&apos; output %&apos;output&apos; $nl forget old data %&apos;ignore old data&apos; ( this is only for %&apos;model name&apos; ) $nl then when data has been received %&apos;do when finished&apos; $nl and if the output data are labels use these %&apos;labels&apos;" type="command" category="Neural net"><comment x="0" y="0" w="282.14285714285717" collapsed="false">Sends either training or validation data to be used by training blocks. Note that if the output are labels of categories then if you are also providing validation data then provide the same list of labels. Note all data whose output is not one of the labels is automatically removed. </comment><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">training<options>training&#xD;validation&#xD;test</options></input><input type="%l"></input><input type="%l"></input><input type="%b">false</input><input type="%txt">all models</input><input type="%cs"></input><input type="%l"></input></inputs><script><custom-block s="run eCraft2Learn command %txt with %mult%s"><l>send_data</l><list><block var="model name"/><block var="kind of data"/><block var="input"/><block var="output"/><block var="ignore old data"/><block var="do when finished"/><block var="labels"/></list></custom-block></script></block-definition></blocks><stage name="Stage" width="360" height="240" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" id="1035"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="1036"></list></costumes><sounds><list struct="atomic" id="1037"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Messages" idx="2" x="-150.10192223480064" y="-106.23882840564285" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="142.8,0,42.84000000000011,1" pen="tip" id="1042"><costumes><list struct="atomic" id="1043"></list></costumes><sounds><list struct="atomic" id="1044"></list></sounds><blocks></blocks><variables></variables><scripts></scripts></sprite><sprite name="Sprite" idx="1" x="149.71404228848075" y="-107.82641155420164" heading="270" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="168.3,10.09800000000001,114.51132000000001,1" pen="tip" id="1048"><costumes><list struct="atomic" id="1049"></list></costumes><sounds><list struct="atomic" id="1050"></list></sounds><blocks></blocks><variables><variable name="colors"><list id="1053"><item><list struct="atomic" id="1054">63,3,71</list></item><item><list struct="atomic" id="1055">39,95,13</list></item><item><list struct="atomic" id="1056">90,86,10</list></item><item><list struct="atomic" id="1057">94,68,69</list></item><item><list struct="atomic" id="1058">71,1,71</list></item><item><list struct="atomic" id="1059">76,46,70</list></item><item><list struct="atomic" id="1060">5,93,59</list></item><item><list struct="atomic" id="1061">57,43,97</list></item><item><list struct="atomic" id="1062">85,65,43</list></item><item><list struct="atomic" id="1063">80,88,15</list></item><item><list struct="atomic" id="1064">11,23,84</list></item><item><list struct="atomic" id="1065">37,94,45</list></item><item><list struct="atomic" id="1066">55,14,43</list></item><item><list struct="atomic" id="1067">87,8,1</list></item><item><list struct="atomic" id="1068">98,42,99</list></item><item><list struct="atomic" id="1069">27,65,97</list></item><item><list struct="atomic" id="1070">44,91,13</list></item><item><list struct="atomic" id="1071">48,57,45</list></item><item><list struct="atomic" id="1072">31,71,57</list></item><item><list struct="atomic" id="1073">2,9,95</list></item><item><list struct="atomic" id="1074">68,34,7</list></item><item><list struct="atomic" id="1075">100,1,52</list></item><item><list struct="atomic" id="1076">58,33,41</list></item><item><list struct="atomic" id="1077">9,34,3</list></item><item><list struct="atomic" id="1078">98,16,29</list></item><item><list struct="atomic" id="1079">38,27,66</list></item><item><list struct="atomic" id="1080">12,5,51</list></item><item><list struct="atomic" id="1081">33,5,24</list></item><item><list struct="atomic" id="1082">41,73,68</list></item><item><list struct="atomic" id="1083">38,12,34</list></item><item><list struct="atomic" id="1084">32,78,98</list></item><item><list struct="atomic" id="1085">50,64,7</list></item><item><list struct="atomic" id="1086">61,50,85</list></item><item><list struct="atomic" id="1087">65,58,81</list></item><item><list struct="atomic" id="1088">96,81,13</list></item><item><list struct="atomic" id="1089">16,96,13</list></item><item><list struct="atomic" id="1090">61,24,72</list></item><item><list struct="atomic" id="1091">59,50,13</list></item><item><list struct="atomic" id="1092">86,95,15</list></item><item><list struct="atomic" id="1093">87,2,76</list></item><item><list struct="atomic" id="1094">16,34,68</list></item><item><list struct="atomic" id="1095">11,66,9</list></item><item><list struct="atomic" id="1096">84,57,98</list></item><item><list struct="atomic" id="1097">28,70,95</list></item><item><list struct="atomic" id="1098">26,54,16</list></item><item><list struct="atomic" id="1099">21,5,55</list></item><item><list struct="atomic" id="1100">47,95,87</list></item><item><list struct="atomic" id="1101">45,41,26</list></item><item><list struct="atomic" id="1102">69,92,20</list></item><item><list struct="atomic" id="1103">30,60,95</list></item><item><list struct="atomic" id="1104">43,91,62</list></item><item><list struct="atomic" id="1105">89,91,89</list></item><item><list struct="atomic" id="1106">57,59,82</list></item><item><list struct="atomic" id="1107">44,10,28</list></item><item><list struct="atomic" id="1108">74,76,95</list></item><item><list struct="atomic" id="1109">80,69,70</list></item><item><list struct="atomic" id="1110">34,65,5</list></item><item><list struct="atomic" id="1111">52,64,17</list></item><item><list struct="atomic" id="1112">20,51,88</list></item><item><list struct="atomic" id="1113">12,74,17</list></item><item><list struct="atomic" id="1114">13,37,17</list></item><item><list struct="atomic" id="1115">87,14,15</list></item><item><list struct="atomic" id="1116">69,5,30</list></item><item><list struct="atomic" id="1117">32,58,4</list></item><item><list struct="atomic" id="1118">6,81,29</list></item><item><list struct="atomic" id="1119">68,54,99</list></item><item><list struct="atomic" id="1120">79,16,16</list></item><item><list struct="atomic" id="1121">60,87,7</list></item><item><list struct="atomic" id="1122">40,42,77</list></item><item><list struct="atomic" id="1123">58,80,23</list></item><item><list struct="atomic" id="1124">14,78,3</list></item><item><list struct="atomic" id="1125">9,63,1</list></item><item><list struct="atomic" id="1126">31,12,44</list></item><item><list struct="atomic" id="1127">63,39,26</list></item><item><list struct="atomic" id="1128">29,81,42</list></item><item><list struct="atomic" id="1129">11,42,8</list></item><item><list struct="atomic" id="1130">61,69,48</list></item><item><list struct="atomic" id="1131">13,47,41</list></item><item><list struct="atomic" id="1132">88,43,15</list></item><item><list struct="atomic" id="1133">4,42,68</list></item><item><list struct="atomic" id="1134">87,38,4</list></item><item><list struct="atomic" id="1135">46,76,74</list></item><item><list struct="atomic" id="1136">50,66,47</list></item><item><list struct="atomic" id="1137">43,54,61</list></item><item><list struct="atomic" id="1138">91,14,32</list></item><item><list struct="atomic" id="1139">88,64,35</list></item><item><list struct="atomic" id="1140">58,66,28</list></item><item><list struct="atomic" id="1141">25,72,79</list></item><item><list struct="atomic" id="1142">13,95,24</list></item><item><list struct="atomic" id="1143">64,90,10</list></item><item><list struct="atomic" id="1144">30,83,41</list></item><item><list struct="atomic" id="1145">50,80,13</list></item><item><list struct="atomic" id="1146">28,3,51</list></item><item><list struct="atomic" id="1147">75,4,29</list></item><item><list struct="atomic" id="1148">99,93,30</list></item><item><list struct="atomic" id="1149">29,44,47</list></item><item><list struct="atomic" id="1150">23,11,49</list></item><item><list struct="atomic" id="1151">41,61,83</list></item><item><list struct="atomic" id="1152">18,22,33</list></item><item><list struct="atomic" id="1153">49,26,88</list></item></list></variable><variable name="color names"><list struct="atomic" id="1154">grey,black,black,red,grey,purple,red,blue,purple,black,tan,green,grey,black,pink,green,black,green,green,pink,black,grey,grey,black,brown,green,grey,black,green,grey,green,black,blue,blue,black,black,grey,black,black,grey,tan,black,purple,green,black,grey,green,black,black,green,green,red,blue,grey,purple,purple,black,black,green,black,black,black,grey,black,brown,purple,black,black,green,black,black,black,grey,black,green,black,blue,brown,black,tan,black,green,green,green,brown,purple,black,green,brown,black,green,black,grey,grey,brown,green,grey,green,grey,blue</list></variable><variable name="model name"><l>naming colors</l></variable></variables><scripts><script x="10" y="10"><block s="receiveGo"></block><custom-block s="Create and train color naming model %br with layers %l %br with %n training steps"><block s="reportNewList"><list><l>100</l><l>20</l><l>10</l></list></block><l>100</l><comment w="317.8571428571429" collapsed="false">This model is 100 neurons connected to 20 connect to 10 to n outputs&#xD;where n is the number of unique color names.&#xD;Experiment with other designs.</comment></custom-block></script><script x="10.285714285714311" y="115.14285714285722"><block s="receiveKey"><l><option>space</option></l><list></list></block><custom-block s="Name a random color"></custom-block></script><comment x="10.142857142857135" y="201.00000000000009" w="491" collapsed="true">This makes many mistakes - can you make it do a better job? Maybe more data would help.</comment><script x="12.714285714285722" y="227.5714285714287"><custom-block s="Create %n random colors"><l>100</l><comment w="313" collapsed="true">You can train this with new (and more) colors by clicking this </comment></custom-block><custom-block s="Name all colors"></custom-block></script><script x="12.285714285714278" y="297"><custom-block s="Name color under mouse pointer"><comment w="452" collapsed="true">Repeatedly name the color under the mouse pointer until the stop sign is clicked.</comment></custom-block></script><script x="10" y="338.42857142857156"><custom-block s="Open support panel %txt"><l>tensorflow.js</l><comment w="435" collapsed="false">Opens up a page where you can create new models, train them, and use them for predictions.&#xD;Also provides an interface for saving and loading models and training data. Try it!</comment></custom-block></script><script x="14.857142857142867" y="390"><custom-block s="Open this in a new tab"></custom-block></script><script x="14.285714285714286" y="441.5714285714286"><block s="doSetVar"><l>model name</l><l>naming colors</l></block><block s="doSetVar"><l>best score so far</l><l>-99999999</l></block><block s="doSetVar"><l>best parameters so far</l><l>None found yet.</l></block><block s="doShowVar"><l>best score so far</l></block><block s="doShowVar"><l>best parameters so far</l></block><custom-block s="Search for a good color naming model %br with layers %l %br with %n training steps"><block s="reportNewList"><list><l>100</l></list></block><l>100</l><comment w="249.2857142857143" collapsed="false">Will search for good parameters for the best accuracy. Can take a very long time.</comment></custom-block></script></scripts></sprite><watcher s="xPosition" style="normal" x="0" y="455.7070184308144" color="74,108,212" hidden="true"/><watcher s="yPosition" style="normal" x="-31.382979748462265" y="942.143204532002" color="74,108,212" hidden="true"/><watcher scope="Stage" s="reportMouseX" style="normal" x="156.91489874232832" y="156.91489874231786" color="4,148,220" hidden="true"/><watcher scope="Stage" s="reportMouseY" style="normal" x="156.91489874232832" y="593.1383486289413" color="4,148,220" hidden="true"/><watcher scope="Sprite" var="colors" style="normal" x="68.62650802326414" y="68.62650802326249" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="color names" style="normal" x="41.17590481395577" y="41.17591853925892" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="model name" style="normal" x="50.011220421810314" y="50.01122042181068" color="243,118,29" hidden="true"/><watcher var="best parameters so far" style="normal" x="5.65098894032979" y="5.718719492984885" color="243,118,29" hidden="true"/><watcher var="best score so far" style="normal" x="9.999999999999774" y="193" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="best parameters so far"><list id="1208"><item><list struct="atomic" id="1209">optimization_method,Stochastic Gradient Descent</list></item><item><list id="1210"><item><l>shuffle</l></item><item><bool>true</bool></item></list></item><item><list struct="atomic" id="1211">epochs,100</list></item><item><list struct="atomic" id="1212">validation_split,0.2</list></item><item><list struct="atomic" id="1213">dropout_rate,0.37702995306937837</list></item><item><list struct="atomic" id="1214">learning_rate,0.0005</list></item><item><list id="1215"><item><l>layers</l></item><item><list struct="atomic" id="1216">210,9</list></item></list></item><item><list struct="atomic" id="1217">stop_if_no_progress_for_n_epochs,20</list></item><item><list struct="atomic" id="1218">loss_function,</list></item><item><list id="1219"><item><l>is_best_so_far</l></item><item><bool>true</bool></item></list></item><item><list id="1220"><item><l>input_shape</l></item><item><list struct="atomic" id="1221">3</list></item></list></item><item><list id="1222"><item><l>used_validation_data</l></item><item><bool>false</bool></item></list></item><item><list struct="atomic" id="1223">lowest_loss,3.524678071339925</list></item><item><list struct="atomic" id="1224">highest_accuracy,0.5</list></item><item><list struct="atomic" id="1225">highest_score,2.5057063586997637</list></item><item><list id="1226"><item><l>metrics</l></item><item><list id="1227"><item><list struct="atomic" id="1228">average_loss,3.907991091410319</list></item><item><list struct="atomic" id="1229">average_accuracy,0.5</list></item><item><list struct="atomic" id="1230">average_duration,4.916333333333334</list></item><item><list struct="atomic" id="1231">average_size,2730</list></item><item><list struct="atomic" id="1232">score_standard_deviation,0.03418539983607238</list></item></list></item></list></item></list></variable><variable name="best score so far"><l>2.5057063586997637</l></variable></variables></scene></scenes></project><media name="naming colors" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>