TensorflowJs – what are tensors, creating and reshaping tensors, limiting the data types

šŸ“– Neural networks for Javascript developers

The Neural Networks for JavaScript developers book is almost ready! Learn the basics of AI with TensorFlowJs examples. Join now the presale and get a 15$ coupon off the launching price!

So what is a tensor, anyway?

A tensor is just a fancy general name for any type of data structure such as arrays, matrixes (2d arrays), cubes (3d arrays), and so on. A tensor is just a structured collection of numbers.

Please note that we are not limited to a maximum or a 3d array. In the documentation, we have methods to create including 6d tensors. Not even sure what a 6d array is called.

We even have a 0d tensors. They are called scalars and they can be seen as similar to simple variables:

const intTensor = tf.scalar(12)
intTensor.print() // 12

Creating tensors in TensorflowJs

One general way to create a new tensor with any number of dimensions in TensorflowJs is to use the tf.tensor() method:

// create a 1d tensor
tf.tensor([1, 2, 3, 4]).print();

// create a 2d tensor
tf.tensor([[1, 2, 3], [4, 5, 6]]).print();

However, even if the tf.tensor() method provides flexibility, the recommended way of creating tensors in TensorflowJs is to use methods such as tensor1d() to tensor6d(), as it makes the code more readable:

tf.tensor1d([1, 2]).print()
tf.tensor2d([[1, 2], [1, 2]]).print()
tf.tensor3d([[[1], [2]], [[3], [4]]]).print()
// till tf.tensor6d

Getting the shape of a tensor and reshaping it

We can read the shape of a tensor by using its shape attribute:

const x = tf.tensor2d([[1, 2], [3, 4]])
console.log('The shape of X is:', a.shape) // [2,2]
x.print() // [[1, 2], [3, 4]]

We can also reshape a tensor to change its number of dimensions and update the way the data is stored in that tensor.

So, if we want to reshape the initial x tensor of 2rows and 2cols into one of 1row and 4cols we can do this:

const y = x.reshape([4, 1])
console.log('B shape:', y .shape) // [1,2,3,4]
y .print() // [1,2,3,4]

For tensors with more than 1 dimension, we can pass the shape as the second parameter to the constructor function:

// Pass a flat array and specify a shape. 
const mat = tf.tensor2d([1, 2, 3, 4], [2, 2]) 
mat.print() // [[1, 2], [3, 4]]

In the case where we don't respect the shape of a tensor we will get an error like the one below:

Uncaught Error: tensor1d() requires values to be a flat/TypedArray at Object.pE [as tensor1d]

Restrict the data type of a tensor in TensorflowJs

Given that Javascript does not have data types, we have a parameter named dtype that we can pass to set the type of data stored in that tensor:

const intTensor = tf.tensor1d([10, 20, 30], 'int32')
intTensor.print()

The data type can be any of the following, with float32 as the default option:

('float32'|'int32'|'bool'|'complex64'|'string')

If we want to read the data type of a tensor we can do:

console.log(intTensor.dtype)

If we break the data type convention TensorflowJs will try to cast the wrong data to its closest rounding:

const intTensor = tf.tensor1d([1.5, 2, 'two'], 'int32')
intTensor.print() // [1,2,0]

Next, you can checkout some basic tensor operations and get the individual values from a tensor.

šŸ“– Neural networks for Javascript developers

The Neural Networks for JavaScript developers book is almost ready! Learn the basics of AI with TensorFlowJs examples. Join now the presale and get a 15$ coupon off the launching price!


Leave a Reply

Your email address will not be published. Required fields are marked *

Home Screencasts Best of Newsletter Search X

Neural Networks for JavaScript developers
Presale - 15$ free coupon

Hi friend! Before you go, just wanted to let you know that in March 2023 I will be launching the TensorFlow.Js by Example course.

This course will include basic concepts of AI and Neural Networks done with TensorFlowJs such as:

  • Working with datasets
  • Visualizing training
  • Deep Neural Networks in JavaScript
  • Reinforcement Learning
  • Convolutional neural networks
  • and much more ...

Also, there will be a lot of examples as:

  • Object detection
  • Natural language processing
  • Face and voice recognition
  • Gaming AI

Join now the waiting list and get a 15$ coupon off the launching price!

X