UNPKG

1.88 kBJavaScriptView Raw
1/**
2 * @license
3 * Copyright 2020 Google LLC. All Rights Reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 * =============================================================================
16 */
17import { ENGINE } from '../engine';
18import { sizeFromShape } from '../util';
19import { op } from './operation';
20/**
21 * Creates a `tf.Tensor` with values sampled from a random number generator
22 * function defined by the user.
23 *
24 * @param shape An array of integers defining the output tensor shape.
25 * @param randFunction A random number generator function which is called
26 * for each element in the output tensor.
27 * @param dtype The data type of the output tensor. Defaults to 'float32'.
28 *
29 * @doc {heading: 'Tensors', subheading: 'Random'}
30 */
31function rand_(shape, randFunction, dtype) {
32 const size = sizeFromShape(shape);
33 let values = null;
34 if (dtype == null || dtype === 'float32') {
35 values = new Float32Array(size);
36 }
37 else if (dtype === 'int32') {
38 values = new Int32Array(size);
39 }
40 else if (dtype === 'bool') {
41 values = new Uint8Array(size);
42 }
43 else {
44 throw new Error(`Unknown data type ${dtype}`);
45 }
46 for (let i = 0; i < size; i++) {
47 values[i] = randFunction();
48 }
49 return ENGINE.makeTensor(values, shape, dtype);
50}
51export const rand = op({ rand_ });
52//# sourceMappingURL=rand.js.map
\No newline at end of file