bigml-nodered
Version:
BigML bindings for Nodered
463 lines (417 loc) • 18.5 kB
HTML
<style>
.bigml_node_label { fill: white; }
#palette-BigML .palette_node { color: white; }
#red-ui-palette-BigML .red-ui-palette-label { color: white; }
</style>
<script type="text/javascript">
RED.nodes.registerType('deepnet', {
category: 'BigML',
color: '#454957',
defaults: {"missing_numerics":{"value":true},"optmiizer":{"value":""},"objective_field":{"value":""},"default_numeric_value":{"value":"none"},"range":{"value":0},"learning_rate":{"value":0.01},"hidden_layers":{"value":""},"replacement":{"value":false},"tags":{"value":""},"ordering":{"value":0},"name":{"value":"deepnet","required":true},"suggest_structure":{"value":null},"reify":{"value":false},"seed":{"value":""},"learn_residuals":{"value":null},"batch_normalization":{"value":null},"excluded_fields":{"value":""},"balance_objective":{"value":false},"number_of_model_candidates":{"value":128},"deepnet_seed":{"value":""},"fields":{"value":""},"regression_weight_ratio":{"value":null},"tree_embedding":{"value":null},"number_of_hidden_layers":{"value":10},"category":{"value":0},"max_iterations":{"value":null},"dropout_rate":{"value":0.0},"webhook":{"value":""},"search":{"value":null},"max_training_time":{"value":1800},"objective_weights":{"value":""},"out_of_bag":{"value":false},"description":{"value":""},"sample_rate":{"value":1.0},"input_fields":{"value":""}},
inputs:1,
outputs:1,
inputLabels: 'dataset',
outputLabels: 'deepnet',
icon: 'icon_deepnet.png',
label: function() {
return this.name || 'Deepnet';
},
labelStyle: function() {
return this.name?"bigml_node_label":"";
},
});
</script>
<script type="text/x-red" data-template-name="deepnet">
<div class="form-row">
<label for="node-input-name">
<i class="icon-tag"></i> Name
</label>
<input type=text id=node-input-name value='deepnet'>
</div>
<div class="form-row">
<label for="node-input-description">
<i class="icon-tag"></i> Description
</label>
<input type=text id=node-input-description >
</div>
<div class="form-row">
<label for="node-input-balance_objective">
<i class="icon-tag"></i> Balance objective
</label>
<input type=checkbox id=node-input-balance_objective value='false'>
</div>
<div class="form-row">
<label for="node-input-batch_normalization">
<i class="icon-tag"></i> Batch normalization
</label>
<input type=checkbox id=node-input-batch_normalization >
</div>
<div class="form-row">
<label for="node-input-deepnet_seed">
<i class="icon-tag"></i> Deepnet seed
</label>
<input type=text id=node-input-deepnet_seed >
</div>
<div class="form-row">
<label for="node-input-default_numeric_value">
<i class="icon-tag"></i> Default numeric value
</label>
<select id=node-input-default_numeric_value value='none'><option value=none>None</option> <option value=mean>Mean</option> <option value=median>Median</option> <option value=minimum>Minimum</option> <option value=maximum>Maximum</option> <option value=zero>Zero</option></select>
</div>
<div class="form-row">
<label for="node-input-dropout_rate">
<i class="icon-tag"></i> Dropout rate
</label>
<input type=number step=any id=node-input-dropout_rate value='0.0'>
</div>
<div class="form-row">
<label for="node-input-excluded_fields">
<i class="icon-tag"></i> Excluded fields
</label>
<input type=text id=node-input-excluded_fields placeholder='["000000", "000002"]' >
</div>
<div class="form-row">
<label for="node-input-fields">
<i class="icon-tag"></i> Fields
</label>
<input type=text id=node-input-fields placeholder='{ "000000": { "name": "length_1", "label": "Length 1", "description": "Length 1 is sepal length"}, "000002": {"name": "length_2"}}' >
</div>
<div class="form-row">
<label for="node-input-hidden_layers">
<i class="icon-tag"></i> Hidden layers
</label>
<input type=text id=node-input-hidden_layers >
</div>
<div class="form-row">
<label for="node-input-input_fields">
<i class="icon-tag"></i> Input fields
</label>
<input type=text id=node-input-input_fields placeholder='["000000", "000003"]' >
</div>
<div class="form-row">
<label for="node-input-learn_residuals">
<i class="icon-tag"></i> Learn residuals
</label>
<input type=checkbox id=node-input-learn_residuals >
</div>
<div class="form-row">
<label for="node-input-learning_rate">
<i class="icon-tag"></i> Learning rate
</label>
<input type=number step=any id=node-input-learning_rate value='0.01'>
</div>
<div class="form-row">
<label for="node-input-max_iterations">
<i class="icon-tag"></i> Max iterations
</label>
<input type=number id=node-input-max_iterations >
</div>
<div class="form-row">
<label for="node-input-max_training_time">
<i class="icon-tag"></i> Max training time
</label>
<input type=number id=node-input-max_training_time value='1800'>
</div>
<div class="form-row">
<label for="node-input-missing_numerics">
<i class="icon-tag"></i> Missing numerics
</label>
<input type=checkbox id=node-input-missing_numerics value='true'>
</div>
<div class="form-row">
<label for="node-input-number_of_hidden_layers">
<i class="icon-tag"></i> Number of hidden layers
</label>
<input type=number id=node-input-number_of_hidden_layers value='10'>
</div>
<div class="form-row">
<label for="node-input-number_of_model_candidates">
<i class="icon-tag"></i> Number of model candidates
</label>
<input type=number id=node-input-number_of_model_candidates value='128'>
</div>
<div class="form-row">
<label for="node-input-objective_field">
<i class="icon-tag"></i> Objective field
</label>
<input type=text id=node-input-objective_field placeholder='{"id": "000003"}' >
</div>
<div class="form-row">
<label for="node-input-objective_weights">
<i class="icon-tag"></i> Objective weights
</label>
<input type=text id=node-input-objective_weights placeholder='[["Iris-versicolor", 2], ["Iris-virginica", 1], ["Iris-setosa", 1]]]' >
</div>
<div class="form-row">
<label for="node-input-optmiizer">
<i class="icon-tag"></i> Optmiizer
</label>
<input type=text id=node-input-optmiizer placeholder='{ "adam": { "beta1": 0.9, "beta2": 0.999, "epsilon": 0.11 }}' >
</div>
<div class="form-row">
<label for="node-input-ordering">
<i class="icon-tag"></i> Ordering
</label>
<select id=node-input-ordering value='0'><option value=0>Deterministic</option> <option value=1>Linear</option> <option value=2>Random</option></select>
</div>
<div class="form-row">
<label for="node-input-out_of_bag">
<i class="icon-tag"></i> Out of bag
</label>
<input type=checkbox id=node-input-out_of_bag value='false'>
</div>
<div class="form-row">
<label for="node-input-range">
<i class="icon-tag"></i> Range
</label>
<input type=number id=node-input-range value='0'>
</div>
<div class="form-row">
<label for="node-input-regression_weight_ratio">
<i class="icon-tag"></i> Regression weight ratio
</label>
<input type=number step=any id=node-input-regression_weight_ratio >
</div>
<div class="form-row">
<label for="node-input-replacement">
<i class="icon-tag"></i> Replacement
</label>
<input type=checkbox id=node-input-replacement value='false'>
</div>
<div class="form-row">
<label for="node-input-sample_rate">
<i class="icon-tag"></i> Sample rate
</label>
<input type=number step=any id=node-input-sample_rate value='1.0'>
</div>
<div class="form-row">
<label for="node-input-search">
<i class="icon-tag"></i> Search
</label>
<input type=checkbox id=node-input-search >
</div>
<div class="form-row">
<label for="node-input-seed">
<i class="icon-tag"></i> Seed
</label>
<input type=text id=node-input-seed >
</div>
<div class="form-row">
<label for="node-input-suggest_structure">
<i class="icon-tag"></i> Suggest structure
</label>
<input type=checkbox id=node-input-suggest_structure >
</div>
<div class="form-row">
<label for="node-input-tree_embedding">
<i class="icon-tag"></i> Tree embedding
</label>
<input type=checkbox id=node-input-tree_embedding >
</div>
<div class="form-row">
<label for="node-input-tags">
<i class="icon-tag"></i> Tags
</label>
<input type=text id=node-input-tags placeholder='["A tag", "Another Tag"]' >
</div>
<div class="form-row">
<label for="node-input-category">
<i class="icon-tag"></i> Category
</label>
<select id=node-input-category value='0'><option value=5>5</option> <option value=Healthcare>Healthcare</option></select>
</div>
<div class="form-row">
<label for="node-input-webhook">
<i class="icon-tag"></i> Webhook
</label>
<input type=text id=node-input-webhook >
</div>
<div class="form-row">
<label for="node-input-reify">
<i class="icon-tag"></i> Reify
</label>
<input type=checkbox id=node-input-reify value='false'>
</div>
</script>
<script type="text/html" data-help-name="deepnet">
<p>Create BigML Deepnet.</p>
<h3>Details</h3>
<p>This node support all inputs defined in
<a href='https://bigml.com/api/deepnets' target=blank>BigML REST
API</a>. By default, it expects to receive
a <code>dataset</code> input (see below for more details) and
it will output the <code>deepnet</code> field of the created
resource.
</p>
<p>However, you can override default inputs and outputs by defining
the node port label so they match the desired input or output as
specified below.</p>
<p>Only when the node is used with the <code>reify</code> option
enabled, it will actually hit BigML and do its work there. This
generally means some resources will be created and sent through as
node outputs.</p>
<p>When the node is used with the <code>reify</code>option disabled,
it will generate WhizzML code and send it through to the next node
in the flow without hitting BigML. All WhizzML code created by this
node (and others) when not in <code>reify</code> mode is accumulated
and executed as a single WhizzML script by the first
downstream <code>reified</code> node.</p>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>Name
<span class="property-type">:text</span>
</dt>
<dd>A name for this node.</dd>
<dt>Description
<span class="property-type">:text</span>
</dt>
<dd></dd>
<dt>Balance objective
<span class="property-type">:boolean</span>
</dt>
<dd>Whether to balance classes proportionally to their category counts or not.</dd>
<dt>Batch normalization
<span class="property-type">:boolean</span>
</dt>
<dd>Specifies whether to normalize the outputs of a network before being passed to the activation function or not</dd>
<dt>Deepnet seed
<span class="property-type">:text</span>
</dt>
<dd>A string to generate a deterministic ordering of training data, the initial network weights, and the behavior of dropout during training.</dd>
<dt>Default numeric value
<span class="property-type">:select</span>
</dt>
<dd>Substitute missing numeric values across all the numeric fields in the dataset.</dd>
<dt>Dropout rate
<span class="property-type">:float</span>
</dt>
<dd>A number between 0 and 1 specifying the rate at which to drop weights during training to control overfitting. </dd>
<dt>Excluded fields
<span class="property-type">:text</span>
</dt>
<dd>Specifies the fields that won't be included in the dataset.</dd>
<dt>Fields
<span class="property-type">:text</span>
</dt>
<dd>Updates the names, labels, and descriptions of the fields in the dataset.</dd>
<dt>Hidden layers
<span class="property-type">:text</span>
</dt>
<dd>A list of maps describing the number and type of layers in the network (other than the output layer, which is determined by the type of learning problem)</dd>
<dt>Input fields
<span class="property-type">:text</span>
</dt>
<dd>Specifies the fields to be included in the dataset.</dd>
<dt>Learn residuals
<span class="property-type">:boolean</span>
</dt>
<dd>Specifies whether alternate layers should learn a representation of the residuals for a given layer rather than the layer itself or not</dd>
<dt>Learning rate
<span class="property-type">:float</span>
</dt>
<dd>A number between 0 and 1 specifying the learning rate. </dd>
<dt>Max iterations
<span class="property-type">:number</span>
</dt>
<dd>A number between 100 and 100000 for the maximum number of gradient steps to take during the optimization. </dd>
<dt>Max training time
<span class="property-type">:number</span>
</dt>
<dd>The maximum training time allowed for the optimization, in seconds, as a strictly positive integer. Applicable only when optimize is set to true.</dd>
<dt>Missing numerics
<span class="property-type">:boolean</span>
</dt>
<dd>Whether to create an additional binary predictor each numeric field which denotes a missing value.</dd>
<dt>Number of hidden layers
<span class="property-type">:number</span>
</dt>
<dd>The number of hidden layers to use in the network.</dd>
<dt>Number of model candidates
<span class="property-type">:number</span>
</dt>
<dd>A integer specifying the number of models to try during the model search. Maximum 200 candidates. </dd>
<dt>Objective field
<span class="property-type">:text</span>
</dt>
<dd>Specifies the default objective field.</dd>
<dt>Objective weights
<span class="property-type">:text</span>
</dt>
<dd>A list of category and weight pairs. One per objective class.</dd>
<dt>Optmiizer
<span class="property-type">:text</span>
</dt>
<dd>Algorithm configuration used to calculate deepnet. </dd>
<dt>Ordering
<span class="property-type">:select</span>
</dt>
<dd>Specifies the type of ordering followed to build the model.</dd>
<dt>Out of bag
<span class="property-type">:boolean</span>
</dt>
<dd>Setting this parameter to true will return a sequence of the out-of-bag instances instead of the sampled instances.</dd>
<dt>Range
<span class="property-type">:number</span>
</dt>
<dd>The range of successive instances to build the model.</dd>
<dt>Regression weight ratio
<span class="property-type">:float</span>
</dt>
<dd>A strictly positive value describing the learning penalty for above-objective errors in relation to below-objective errors.</dd>
<dt>Replacement
<span class="property-type">:boolean</span>
</dt>
<dd>Whether sampling should be performed with or without replacement.</dd>
<dt>Sample rate
<span class="property-type">:float</span>
</dt>
<dd>A real number between 0 and 1 specifying the sample rate.</dd>
<dt>Search
<span class="property-type">:boolean</span>
</dt>
<dd></dd>
<dt>Seed
<span class="property-type">:text</span>
</dt>
<dd>A string to be hashed to generate deterministic samples.</dd>
<dt>Suggest structure
<span class="property-type">:boolean</span>
</dt>
<dd></dd>
<dt>Tree embedding
<span class="property-type">:boolean</span>
</dt>
<dd>Specify whether to learn a tree-based representation of the data as engineered features along with the raw features.</dd>
<dt>Tags
<span class="property-type">:text</span>
</dt>
<dd>A list of tags to identify the resource.</dd>
<dt>Category
<span class="property-type">:select</span>
</dt>
<dd></dd>
<dt>Webhook
<span class="property-type">:text</span>
</dt>
<dd>A webhook url and an optional secret phrase.</dd>
<dt>Reify
<span class="property-type">:boolean</span>
</dt>
<dd>Execute the WhizzML code generated at this (and upstream) node(s). You need to enable this option if you want to get a result from your flow that you can pass to a non-BigML node.</dd>
</dl>
<h3>Outputs</h3>
<ol class="node-ports">
<dl class="message-properties">
<dt>payload <span class="property-type">string or
JSON</span></dt>
<dd>the <code>deepnet</code> of the created
BigML entity.</dd>
<dt>whizzml <span class="property-type">string</dt>
<dd>(only for <code>reified</code> nodes) the
generated WhizzML code which is fed into the next
node.
<dt>wzStack <span class="property-type">object</dt>
<dd>(only for <code>reified</code> nodes) private.
</dl>
</ol>
</script>