import { Order } from 'blockly/javascript';
/**
* @module Creation
* @category AI
* @subcategory Tensor
*/
/**
* Creates rank-2 tf.Tensor with the provided values, shape and dtype.
*
* @param {Array<number>} values The values of the tensor. Can be nested array of numbers, or a flat array, or a TypedArray.
* @param {Array<number>} shape The shape of the tensor. If not provided, it is inferred from values.
* @param {Enumerator} dataType ('float32'|'int32') The data type.
* @returns {Tensor} tf.tensor2d(values, shape, 'dataType').
*/
function createTwoDimensionTensor(block, generator) {
const values = generator.valueToCode(block, 'TENSOR_VALUES', Order.NONE) || '';
const shape = generator.valueToCode(block, 'TENSOR_SHAPE', Order.NONE) || '';
const dataType = block.getFieldValue('dtype') || '';
return [`tf.tensor2d(${values}, ${shape}, '${dataType}')`, Order.VOID];
}
/**
* Creates rank-1 tf.Tensor with the provided values, shape and dtype.
*
* @param {Array<number>} values The values of the tensor. Can be array of numbers, or a TypedArray.
* @param {Enumerator} dataType ('float32'|'int32') The data type.
* @returns {Tensor} tf.tensor1d(values, 'dataType').
*/
function createVectorTensor(block, generator) {
const values = generator.valueToCode(block, 'TENSOR_VALUES', Order.NONE) || '';
const dataType = block.getFieldValue('dtype') || '';
return [`tf.tensor1d(${values}, '${dataType}')`, Order.VOID];
}
/**
* Creates a tf.Tensor with all elements set to 0.
*
* @param {Array<number>} shape An array of integers defining the output tensor shape.
* @param {Enumerator} dataType ('float32'|'int32') The data type.
* @returns {Tensor} tf.zeros(shape, 'dataType').
*/
function zeros(block, generator) {
const shape = generator.valueToCode(block, 'TENSOR_SHAPE', Order.NONE) || '';
const dataType = block.getFieldValue('dtype') || '';
return [`tf.zeros(${shape}, '${dataType}')`, Order.VOID];
}
/**
* Creates a tf.Tensor with all elements set to 0 with the same shape as the given tensor.
*
* @param {Tensor} tensor The tensor of required shape.
* @returns {Tensor} tf.zerosLike(tensor).
*/
function zerosLike(block, generator) {
const tensor = generator.valueToCode(block, 'TENSOR', Order.NONE) || '';
return [`tf.zerosLike(${tensor})`, Order.VOID];
}
export const creationBlockGenerator = {
create_multi_dimension_tensor: createTwoDimensionTensor,
create_vector_tensor: createVectorTensor,
zeros: zeros,
zeros_like: zerosLike,
};
//# sourceMappingURL=generators.js.map
Source