tfjs-runway
Version:
tfjs-runway CLI
60 lines • 5.38 kB
JavaScript
var concat = function (buffers) {
var totalByteLength = 0;
buffers.forEach(function (buffer) {
totalByteLength += buffer.byteLength;
});
var temp = new Uint8Array(totalByteLength);
var offset = 0;
buffers.forEach(function (buffer) {
temp.set(new Uint8Array(buffer), offset);
offset += buffer.byteLength;
});
return temp.buffer;
};
var loadAll = function (weightsFilePaths, toolbox) {
var fs = toolbox.filesystem;
var shardBuffers = [];
for (var i = 0; i < weightsFilePaths.length; i++) {
var f = weightsFilePaths[i];
var g = fs.read(f, 'buffer');
shardBuffers.push(g);
}
return shardBuffers;
};
module.exports = function (toolbox) {
function convertModel(modelPath) {
var fs = toolbox.filesystem;
var modelConfigFile = fs.read(modelPath + "/model.json");
var modelConfig = JSON.parse(modelConfigFile);
var modelTopology = modelConfig['modelTopology'];
var weightsManifest = modelConfig['weightsManifest'];
var weightSpecs = [];
// We do not allow both modelTopology and weightsManifest to be missing.
if (modelTopology == null && weightsManifest == null) {
throw new Error("The JSON from contains neither model " +
"topology or manifest for weights.");
}
for (var _i = 0, weightsManifest_1 = weightsManifest; _i < weightsManifest_1.length; _i++) {
var entry = weightsManifest_1[_i];
weightSpecs.push.apply(weightSpecs, entry.weights);
}
var shardPaths = [];
weightsManifest.forEach(function (weightsGroup) {
weightsGroup.paths.forEach(function (path) {
shardPaths.push(modelPath + "/" + path);
});
});
var arrayBuffers = loadAll(shardPaths, toolbox);
var monobuffer = concat(arrayBuffers);
var weightDataString64 = Buffer.from(monobuffer).toString('base64');
var modelArtifacts = {
modelTopology: modelTopology,
weightSpecs: weightSpecs,
weightData: weightDataString64
};
var modelArtifactsJSON = JSON.stringify(modelArtifacts);
fs.write('model-artifacts.json', modelArtifactsJSON);
}
toolbox.runway = { convertModel: convertModel };
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC1tb2RlbC1leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9ucy9jb252ZXJ0LW1vZGVsLWV4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxJQUFNLE1BQU0sR0FBRyxVQUFBLE9BQU87SUFDcEIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZCLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQSxNQUFNO1FBQ3BCLGVBQWUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFBO0lBQ3RDLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDNUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ2QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFBLE1BQU07UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN4QyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtBQUNwQixDQUFDLENBQUE7QUFFRCxJQUFNLE9BQU8sR0FBRyxVQUFDLGdCQUFnQixFQUFFLE9BQU87SUFDaEMsSUFBQSx1QkFBYyxDQUFZO0lBQ2xDLElBQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQTtJQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2hELElBQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTdCLElBQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRTlCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDckI7SUFDRCxPQUFPLFlBQVksQ0FBQTtBQUNyQixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQUMsT0FBTztJQUN2QixTQUFTLFlBQVksQ0FBQyxTQUFpQjtRQUM3QixJQUFBLHVCQUFjLENBQVk7UUFDbEMsSUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBSSxTQUFTLGdCQUFhLENBQUMsQ0FBQTtRQUMxRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQy9DLElBQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNsRCxJQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN0RCxJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFFdEIsd0VBQXdFO1FBQ3hFLElBQUksYUFBYSxJQUFJLElBQUksSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1lBQ3BELE1BQU0sSUFBSSxLQUFLLENBQ2IsdUNBQXVDO2dCQUNyQyxtQ0FBbUMsQ0FDdEMsQ0FBQTtTQUNGO1FBRUQsS0FBb0IsVUFBZSxFQUFmLG1DQUFlLEVBQWYsNkJBQWUsRUFBZixJQUFlLEVBQUU7WUFBaEMsSUFBTSxLQUFLLHdCQUFBO1lBQ2QsV0FBVyxDQUFDLElBQUksT0FBaEIsV0FBVyxFQUFTLEtBQUssQ0FBQyxPQUFPLEVBQUM7U0FDbkM7UUFFRCxJQUFNLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFDckIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFBLFlBQVk7WUFDbEMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJO2dCQUM3QixVQUFVLENBQUMsSUFBSSxDQUFJLFNBQVMsU0FBSSxJQUFNLENBQUMsQ0FBQTtZQUN6QyxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNqRCxJQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFdkMsSUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUVyRSxJQUFNLGNBQWMsR0FBRztZQUNyQixhQUFhLEVBQUUsYUFBYTtZQUM1QixXQUFXLEVBQUUsV0FBVztZQUN4QixVQUFVLEVBQUUsa0JBQWtCO1NBQy9CLENBQUE7UUFDRCxJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7UUFFekQsRUFBRSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQ3RELENBQUM7SUFFRCxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsWUFBWSxjQUFBLEVBQUUsQ0FBQTtBQUNuQyxDQUFDLENBQUEifQ==