trainingData[1].output.map((value) => Float32Array.from([value]) )
ret = x.output; } else if (x instanceof Input) { ret = x.size;
for (const i in trainingData) { const output = net.run(trainingData[i].input); const target = trainingData[i].output; for (const i in not) { const output = net.run(not[i].input)[0]; const target = not[i].output[0]; expect( output < target + wiggle && output > target - wiggle for (const i in xor) { const output = net.run(xor[i].input)[0]; const target = xor[i].output[0]; expect( output < target + wiggle && output > target - wiggle for (const i in or) { const output = net.run(or[i].input)[0]; const target = or[i].output[0]; expect( output < target + wiggle && output > target - wiggle for (const i in and) { const output = net.run(and[i].input)[0]; const target = and[i].output[0]; expect( output < target + wiggle && output > target - wiggle for (const i in and) {
_.times(set.length, (index) => { let input = set[index].input; let target = set[index].output; let output = self.activate(input, { trace: false }); error += cost(target, output); });
describe("Multi-Label BR Classifier online-trained on Single-class inputs", function() { var classifierOnline = new BinaryRelevanceWinnow(); for (var i = 0; i <= retrain_count; ++i) for (var d = 0; d < dataset.length; ++d) classifierOnline.trainOnline(dataset[d].input, dataset[d].output); testMultiLabelClassifier(classifierOnline); // COMPARE TO BATCH CLASSIFIER: // Strangely, there is a slight difference, so this test is disabled: it.skip("is identical to batch classifier", function() { var classifierBatch = new BinaryRelevanceWinnow(); classifierBatch.trainBatch(dataset); //console.log("batch: "); console.dir(classifierBatch.mapClassnameToClassifier); //console.log("online: "); console.dir(classifierOnline.mapClassnameToClassifier); classifierOnline.should.eql(classifierBatch); }); });
warnings: true, }, publicPath: webpackConfig.output.publicPath, }));
describe("Meta-Labeler online-trained on Single-class inputs", function() { var classifierOnline = new MetaLabelerWinnow(); for (var i = 0; i <= retrain_count; ++i) for (var d = 0; d < dataset.length; ++d) classifierOnline.trainOnline(dataset[d].input, dataset[d].output); var classifier = classifierOnline; it("classifies 1-class samples", function() { classifier.classify({ I: 1, want: 1, aa: 1 }).should.eql(["A"]); classifier.classify({ I: 1, want: 1, bb: 1 }).should.eql(["B"]); classifier.classify({ I: 1, want: 1, cc: 1 }).should.eql(['{"C":"c"}']); }); it("knows its classes", function() { classifier.getAllClasses().should.eql(["A", "B", '{"C":"c"}']); }); it("explains its decisions", function() { // classifier.classify({I:1 , want:1 , aa:1 , and:1 , bb:1 }, /*explain=*/1).should.have.property('explanation').with.property('ranking').with.lengthOf(3); classifier .classify({ I: 1, want: 1, aa: 1, and: 1, bb: 1 }, /*explain=*/ 1) .should.have.property("explanation") .with.property("ranking"); // classifier.classify({I:1 , want:1 , aa:1 , and:1 , bb:1 }, /*explain=*/3).should.have.property('explanation').with.property('counting').with.lengthOf(1); classifier .classify({ I: 1, want: 1, aa: 1, and: 1, bb: 1 }, /*explain=*/ 3) .should.have.property("explanation") .with.property("counting"); }); });
for (var j = t; j <= t + n; j++){ set[j].input[1] = n / 20; set[j].output[0] = 0.5;
trainingData[1].output.map((value) => Float32Array.from(value) )
trainingData[0].output.map((value) => Float32Array.from(value) )
trainingData[0].output.map((value) => Float32Array.from([value]) )