UNPKG

@tensorflow-models/coco-ssd

Version:

Object detection model (coco-ssd) in TensorFlow.js

77 lines 3.04 kB
"use strict"; /** * @license * Copyright 2017 Google Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= */ Object.defineProperty(exports, "__esModule", { value: true }); var seedrandom = require("seedrandom"); // https://en.wikipedia.org/wiki/Marsaglia_polar_method var MPRandGauss = /** @class */ (function () { function MPRandGauss(mean, stdDeviation, dtype, truncated, seed) { this.mean = mean; this.stdDev = stdDeviation; this.dtype = dtype; this.nextVal = NaN; this.truncated = truncated; if (this.truncated) { this.upper = this.mean + this.stdDev * 2; this.lower = this.mean - this.stdDev * 2; } var seedValue = seed ? seed : Math.random(); this.random = seedrandom.alea(seedValue.toString()); } /** Returns next sample from a gaussian distribution. */ MPRandGauss.prototype.nextValue = function () { if (!isNaN(this.nextVal)) { var value = this.nextVal; this.nextVal = NaN; return value; } var resultX, resultY; var isValid = false; while (!isValid) { var v1 = void 0, v2 = void 0, s = void 0; do { v1 = 2 * this.random() - 1; v2 = 2 * this.random() - 1; s = v1 * v1 + v2 * v2; } while (s >= 1 || s === 0); var mul = Math.sqrt(-2.0 * Math.log(s) / s); resultX = this.mean + this.stdDev * v1 * mul; resultY = this.mean + this.stdDev * v2 * mul; if (!this.truncated || this.isValidTruncated(resultX)) { isValid = true; } } if (!this.truncated || this.isValidTruncated(resultY)) { this.nextVal = this.convertValue(resultY); } return this.convertValue(resultX); }; /** Handles proper rounding for non floating point numbers. */ MPRandGauss.prototype.convertValue = function (value) { if (this.dtype == null || this.dtype === 'float32') { return value; } return Math.round(value); }; /** Returns true if less than 2-standard-deviations from the mean. */ MPRandGauss.prototype.isValidTruncated = function (value) { return value <= this.upper && value >= this.lower; }; return MPRandGauss; }()); exports.MPRandGauss = MPRandGauss; //# sourceMappingURL=rand.js.map