# 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!

## 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