keras-js
Version:
Run Keras models in the browser, with GPU support using WebGL
352 lines (274 loc) • 14.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Model = exports.Weights = void 0;
var $protobuf = _interopRequireWildcard(require("protobufjs/minimal"));
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
const $Reader = $protobuf.Reader,
$Writer = $protobuf.Writer,
$util = $protobuf.util;
const $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});
exports.default = $root;
const Weights = $root.Weights = (() => {
function Weights(properties) {
this.shape = [];
if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
}
Weights.prototype.layerName = "";
Weights.prototype.weightName = "";
Weights.prototype.shape = $util.emptyArray;
Weights.prototype.type = "";
Weights.prototype.data = $util.newBuffer([]);
Weights.prototype.quantizeMin = 0;
Weights.prototype.quantizeMax = 0;
Weights.create = function create(properties) {
return new Weights(properties);
};
Weights.encode = function encode(message, writer) {
if (!writer) writer = $Writer.create();
if (message.layerName != null && message.hasOwnProperty("layerName")) writer.uint32(10).string(message.layerName);
if (message.weightName != null && message.hasOwnProperty("weightName")) writer.uint32(18).string(message.weightName);
if (message.shape != null && message.shape.length) {
writer.uint32(26).fork();
for (let i = 0; i < message.shape.length; ++i) writer.uint32(message.shape[i]);
writer.ldelim();
}
if (message.type != null && message.hasOwnProperty("type")) writer.uint32(34).string(message.type);
if (message.data != null && message.hasOwnProperty("data")) writer.uint32(42).bytes(message.data);
if (message.quantizeMin != null && message.hasOwnProperty("quantizeMin")) writer.uint32(53).float(message.quantizeMin);
if (message.quantizeMax != null && message.hasOwnProperty("quantizeMax")) writer.uint32(61).float(message.quantizeMax);
return writer;
};
Weights.encodeDelimited = function encodeDelimited(message, writer) {
return this.encode(message, writer).ldelim();
};
Weights.decode = function decode(reader, length) {
if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
let end = length === undefined ? reader.len : reader.pos + length,
message = new $root.Weights();
while (reader.pos < end) {
let tag = reader.uint32();
switch (tag >>> 3) {
case 1:
message.layerName = reader.string();
break;
case 2:
message.weightName = reader.string();
break;
case 3:
if (!(message.shape && message.shape.length)) message.shape = [];
if ((tag & 7) === 2) {
let end2 = reader.uint32() + reader.pos;
while (reader.pos < end2) message.shape.push(reader.uint32());
} else message.shape.push(reader.uint32());
break;
case 4:
message.type = reader.string();
break;
case 5:
message.data = reader.bytes();
break;
case 6:
message.quantizeMin = reader.float();
break;
case 7:
message.quantizeMax = reader.float();
break;
default:
reader.skipType(tag & 7);
break;
}
}
return message;
};
Weights.decodeDelimited = function decodeDelimited(reader) {
if (!(reader instanceof $Reader)) reader = new $Reader(reader);
return this.decode(reader, reader.uint32());
};
Weights.verify = function verify(message) {
if (typeof message !== "object" || message === null) return "object expected";
if (message.layerName != null && message.hasOwnProperty("layerName")) if (!$util.isString(message.layerName)) return "layerName: string expected";
if (message.weightName != null && message.hasOwnProperty("weightName")) if (!$util.isString(message.weightName)) return "weightName: string expected";
if (message.shape != null && message.hasOwnProperty("shape")) {
if (!Array.isArray(message.shape)) return "shape: array expected";
for (let i = 0; i < message.shape.length; ++i) if (!$util.isInteger(message.shape[i])) return "shape: integer[] expected";
}
if (message.type != null && message.hasOwnProperty("type")) if (!$util.isString(message.type)) return "type: string expected";
if (message.data != null && message.hasOwnProperty("data")) if (!(message.data && typeof message.data.length === "number" || $util.isString(message.data))) return "data: buffer expected";
if (message.quantizeMin != null && message.hasOwnProperty("quantizeMin")) if (typeof message.quantizeMin !== "number") return "quantizeMin: number expected";
if (message.quantizeMax != null && message.hasOwnProperty("quantizeMax")) if (typeof message.quantizeMax !== "number") return "quantizeMax: number expected";
return null;
};
Weights.fromObject = function fromObject(object) {
if (object instanceof $root.Weights) return object;
let message = new $root.Weights();
if (object.layerName != null) message.layerName = String(object.layerName);
if (object.weightName != null) message.weightName = String(object.weightName);
if (object.shape) {
if (!Array.isArray(object.shape)) throw TypeError(".Weights.shape: array expected");
message.shape = [];
for (let i = 0; i < object.shape.length; ++i) message.shape[i] = object.shape[i] >>> 0;
}
if (object.type != null) message.type = String(object.type);
if (object.data != null) if (typeof object.data === "string") $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);else if (object.data.length) message.data = object.data;
if (object.quantizeMin != null) message.quantizeMin = Number(object.quantizeMin);
if (object.quantizeMax != null) message.quantizeMax = Number(object.quantizeMax);
return message;
};
Weights.toObject = function toObject(message, options) {
if (!options) options = {};
let object = {};
if (options.arrays || options.defaults) object.shape = [];
if (options.defaults) {
object.layerName = "";
object.weightName = "";
object.type = "";
object.data = options.bytes === String ? "" : [];
object.quantizeMin = 0;
object.quantizeMax = 0;
}
if (message.layerName != null && message.hasOwnProperty("layerName")) object.layerName = message.layerName;
if (message.weightName != null && message.hasOwnProperty("weightName")) object.weightName = message.weightName;
if (message.shape && message.shape.length) {
object.shape = [];
for (let j = 0; j < message.shape.length; ++j) object.shape[j] = message.shape[j];
}
if (message.type != null && message.hasOwnProperty("type")) object.type = message.type;
if (message.data != null && message.hasOwnProperty("data")) object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;
if (message.quantizeMin != null && message.hasOwnProperty("quantizeMin")) object.quantizeMin = options.json && !isFinite(message.quantizeMin) ? String(message.quantizeMin) : message.quantizeMin;
if (message.quantizeMax != null && message.hasOwnProperty("quantizeMax")) object.quantizeMax = options.json && !isFinite(message.quantizeMax) ? String(message.quantizeMax) : message.quantizeMax;
return object;
};
Weights.prototype.toJSON = function toJSON() {
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
};
return Weights;
})();
exports.Weights = Weights;
const Model = $root.Model = (() => {
function Model(properties) {
this.modelWeights = [];
if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
}
Model.prototype.id = "";
Model.prototype.name = "";
Model.prototype.kerasVersion = "";
Model.prototype.backend = "";
Model.prototype.modelConfig = "";
Model.prototype.modelWeights = $util.emptyArray;
Model.create = function create(properties) {
return new Model(properties);
};
Model.encode = function encode(message, writer) {
if (!writer) writer = $Writer.create();
if (message.id != null && message.hasOwnProperty("id")) writer.uint32(10).string(message.id);
if (message.name != null && message.hasOwnProperty("name")) writer.uint32(18).string(message.name);
if (message.kerasVersion != null && message.hasOwnProperty("kerasVersion")) writer.uint32(26).string(message.kerasVersion);
if (message.backend != null && message.hasOwnProperty("backend")) writer.uint32(34).string(message.backend);
if (message.modelConfig != null && message.hasOwnProperty("modelConfig")) writer.uint32(42).string(message.modelConfig);
if (message.modelWeights != null && message.modelWeights.length) for (let i = 0; i < message.modelWeights.length; ++i) $root.Weights.encode(message.modelWeights[i], writer.uint32(50).fork()).ldelim();
return writer;
};
Model.encodeDelimited = function encodeDelimited(message, writer) {
return this.encode(message, writer).ldelim();
};
Model.decode = function decode(reader, length) {
if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
let end = length === undefined ? reader.len : reader.pos + length,
message = new $root.Model();
while (reader.pos < end) {
let tag = reader.uint32();
switch (tag >>> 3) {
case 1:
message.id = reader.string();
break;
case 2:
message.name = reader.string();
break;
case 3:
message.kerasVersion = reader.string();
break;
case 4:
message.backend = reader.string();
break;
case 5:
message.modelConfig = reader.string();
break;
case 6:
if (!(message.modelWeights && message.modelWeights.length)) message.modelWeights = [];
message.modelWeights.push($root.Weights.decode(reader, reader.uint32()));
break;
default:
reader.skipType(tag & 7);
break;
}
}
return message;
};
Model.decodeDelimited = function decodeDelimited(reader) {
if (!(reader instanceof $Reader)) reader = new $Reader(reader);
return this.decode(reader, reader.uint32());
};
Model.verify = function verify(message) {
if (typeof message !== "object" || message === null) return "object expected";
if (message.id != null && message.hasOwnProperty("id")) if (!$util.isString(message.id)) return "id: string expected";
if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected";
if (message.kerasVersion != null && message.hasOwnProperty("kerasVersion")) if (!$util.isString(message.kerasVersion)) return "kerasVersion: string expected";
if (message.backend != null && message.hasOwnProperty("backend")) if (!$util.isString(message.backend)) return "backend: string expected";
if (message.modelConfig != null && message.hasOwnProperty("modelConfig")) if (!$util.isString(message.modelConfig)) return "modelConfig: string expected";
if (message.modelWeights != null && message.hasOwnProperty("modelWeights")) {
if (!Array.isArray(message.modelWeights)) return "modelWeights: array expected";
for (let i = 0; i < message.modelWeights.length; ++i) {
let error = $root.Weights.verify(message.modelWeights[i]);
if (error) return "modelWeights." + error;
}
}
return null;
};
Model.fromObject = function fromObject(object) {
if (object instanceof $root.Model) return object;
let message = new $root.Model();
if (object.id != null) message.id = String(object.id);
if (object.name != null) message.name = String(object.name);
if (object.kerasVersion != null) message.kerasVersion = String(object.kerasVersion);
if (object.backend != null) message.backend = String(object.backend);
if (object.modelConfig != null) message.modelConfig = String(object.modelConfig);
if (object.modelWeights) {
if (!Array.isArray(object.modelWeights)) throw TypeError(".Model.modelWeights: array expected");
message.modelWeights = [];
for (let i = 0; i < object.modelWeights.length; ++i) {
if (typeof object.modelWeights[i] !== "object") throw TypeError(".Model.modelWeights: object expected");
message.modelWeights[i] = $root.Weights.fromObject(object.modelWeights[i]);
}
}
return message;
};
Model.toObject = function toObject(message, options) {
if (!options) options = {};
let object = {};
if (options.arrays || options.defaults) object.modelWeights = [];
if (options.defaults) {
object.id = "";
object.name = "";
object.kerasVersion = "";
object.backend = "";
object.modelConfig = "";
}
if (message.id != null && message.hasOwnProperty("id")) object.id = message.id;
if (message.name != null && message.hasOwnProperty("name")) object.name = message.name;
if (message.kerasVersion != null && message.hasOwnProperty("kerasVersion")) object.kerasVersion = message.kerasVersion;
if (message.backend != null && message.hasOwnProperty("backend")) object.backend = message.backend;
if (message.modelConfig != null && message.hasOwnProperty("modelConfig")) object.modelConfig = message.modelConfig;
if (message.modelWeights && message.modelWeights.length) {
object.modelWeights = [];
for (let j = 0; j < message.modelWeights.length; ++j) object.modelWeights[j] = $root.Weights.toObject(message.modelWeights[j], options);
}
return object;
};
Model.prototype.toJSON = function toJSON() {
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
};
return Model;
})();
exports.Model = Model;
;