deept.js
Version:
Eine TypeScript/JavaScript Library für ML im Browser
80 lines (79 loc) • 2.93 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var matrix_1 = __importDefault(require("../Matrix/matrix"));
var neuralnet_1 = __importDefault(require("./neuralnet"));
var HiddenLayer = /** @class */ (function () {
function HiddenLayer(nodesInFront, numOfNodes) {
this.W_F_T = new matrix_1.default(numOfNodes, nodesInFront);
this.W_F_T.randomize();
this.biases = new matrix_1.default(numOfNodes, 1);
this.biases.randomize();
this.values = new matrix_1.default(numOfNodes, 1);
}
return HiddenLayer;
}());
exports.HiddenLayer = HiddenLayer;
var OutputLayer = /** @class */ (function () {
function OutputLayer(nodesInFront, numOfNodes) {
this.W_F_T = new matrix_1.default(numOfNodes, nodesInFront);
this.W_F_T.randomize();
this.biases = new matrix_1.default(numOfNodes, 1);
this.biases.randomize();
}
return OutputLayer;
}());
exports.OutputLayer = OutputLayer;
function addHiddenLayer(layer, net) {
net.hiddenLayerNodes[net.numHiddenLayers] = layer.nodes;
// Check if its the first hidden layer
if (net.numHiddenLayers === 0) {
net.hiddenLayers[net.numHiddenLayers] =
new HiddenLayer(net.inputNodes, net.hiddenLayerNodes[net.numHiddenLayers]);
}
else {
net.hiddenLayers[net.numHiddenLayers] =
new HiddenLayer(net.hiddenLayerNodes[net.numHiddenLayers - 1], net.hiddenLayerNodes[net.numHiddenLayers]);
}
net.numHiddenLayers++;
}
exports.addHiddenLayer = addHiddenLayer;
function addOutputLayer(layer, net) {
net.outputNodes = layer.nodes;
net.outputLayer = new OutputLayer(net.hiddenLayerNodes[net.numHiddenLayers - 1], net.outputNodes);
}
exports.addOutputLayer = addOutputLayer;
function load(data) {
var obj = JSON.parse(data);
var net = new neuralnet_1.default();
net.inputNodes = obj.inputNodes;
for (var i = 0; i < obj.hiddenLayerNodes.length; i++) {
net.hiddenLayerNodes[i] = obj.hiddenLayerNodes[i];
}
for (var i = 0; i < obj.hiddenLayers.length; i++) {
net.hiddenLayers[i] = obj.hiddenLayers[i];
}
net.numHiddenLayers = obj.numHiddenLayers;
net.outputNodes = obj.outputNodes;
net.outputLayer = obj.outputLayer;
net.learningRate = obj.learningRate;
return net;
}
exports.load = load;
function pickRandomFromArray(array) {
return array[Math.floor(Math.random() * array.length)];
}
exports.pickRandomFromArray = pickRandomFromArray;
function sigmoid(x) {
/*
* Activation-Function
*/
return 1 / (1 + Math.exp(-x));
}
exports.sigmoid = sigmoid;
function dsigmoid(y) {
return y * (1 - y);
}
exports.dsigmoid = dsigmoid;