Inserting tensors
Inserting in TensorFlow lets you plant specific values or chunks of data within your tensors, like carefully placing seeds in a garden! Unlike slicing, there’s no need for neat rows – each element or subsection can be placed wherever you choose.
Meet tf.scatter_nd:
This handy tool takes three things:
- Planting map: a list of indices telling you where to put the seeds (elements/subsections).
- Seed bag: the values you want to insert.
- Garden size: the overall shape of your final “planted” tensor.
Example:
Imagine you have an empty garden plot t4 with 8 spots:
Python3
import tensorflow as tf t4 = tf.zeros_like(tf.constant([ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ])) t4 |
Output:
<tf.Tensor: shape=(8,), dtype=int32, numpy=array([0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)>
Want to plant seeds with values [10, 20, 30] at spots [1, 3, 6]? Use tf.scatter_nd:
Python3
Index = [[ 1 ], [ 3 ], [ 6 ]] values = [ 10 , 20 , 30 ] t4 = tf.scatter_nd(indices = Index, updates = values, shape = [ 8 ]) print (t4) # Output: [0 10 0 20 0 0 30 0] |
Output:
tf.Tensor([ 0 10 0 20 0 0 30 0], shape=(8,), dtype=int32)
The “garden” grows to match the chosen size, and empty spots stay bare (filled with zeros here).
Beyond Flat Land:
tf.scatter_nd works for multi-dimensional gardens too! Imagine a plot t5 with rows and columns:
Python3
t5 = tf.zeros(shape = ( 4 , 5 )) t5 |
Output:
<tf.Tensor: shape=(4, 5), dtype=float32, numpy=
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]], dtype=float32)>
Plant seeds [100, 200, 300] at spots [[0, 0], [1, 1], [2, 2]]:
Python3
Index = [[ 0 , 0 ], [ 1 , 1 ], [ 2 , 2 ]] values = [ 100 , 200 , 300 ] t5 = tf.scatter_nd(indices = Index, updates = values, shape = t5.shape) print (t5) # Output: [[100 0 0 0 0], [0 200 0 0 0], [0 0 300 0 0], [0 0 0 0 0]] |
Output:
tf.Tensor(
[[100 0 0 0 0]
[ 0 200 0 0 0]
[ 0 0 300 0 0]
[ 0 0 0 0 0]], shape=(4, 5), dtype=int32)
The “garden” grows to the specified shape, with empty spots remaining bare.
Tensor Indexing in Tensorflow
In the realm of machine learning and deep learning, tensors are fundamental data structures used to represent numerical data with multiple dimensions. TensorFlow, a powerful numerical computation library, equips you with an intuitive and versatile set of operations for manipulating and accessing data within these tensors. Understanding tensor indexing in TensorFlow becomes crucial for navigating data effectively and building machine learning models.