model = {
const g = new dl.Graph();
let node;
const inputTensor = g.placeholder('input', [features.length]);
const labelTensor = g.placeholder('label', [labels.length]);
const weight0 = g.variable('weight', dl.Array2D.randNormal([numNeuronsInHiddenLayer, features.length]));
const bias0 = g.variable('bias', dl.Array1D.randNormal([numNeuronsInHiddenLayer]));
node = g.matmul(weight0, inputTensor);
node = g.add(node, bias0);
node = g.sigmoid(node);
const weight1 = g.variable('weight', dl.Array2D.randNormal([labels.length, numNeuronsInHiddenLayer]));
const bias1 = g.variable('bias', dl.Array1D.randNormal([labels.length]));
node = g.matmul(weight1, node);
node = g.add(node, bias1);
node = g.sigmoid(node);
const outputTensor = g.softmax(node);
const costTensor = g.softmaxCrossEntropyCost(node, labelTensor);
return {
graph: g,
inputTensor: inputTensor, labelTensor: labelTensor, outputTensor: outputTensor, costTensor: costTensor
};
}