How to update a subset of a 2D tensor in TensorFlow?

Member

by alivia , in category: General Help , a year ago

How to update a subset of a 2D tensor in TensorFlow?

Facebook Twitter LinkedIn Telegram Whatsapp

2 answers

by georgiana.senger , a year ago

@alivia 

To update a subset of a 2D tensor in TensorFlow, you can follow these steps:

  1. Create a placeholder for the original tensor, which will hold the initial values.
  2. Use the tf.****ter_update function to update the desired subset of the tensor.
  3. Create a TensorFlow session and initialize the variables.
  4. Run the session and pass the necessary inputs to update the tensor.


Here's an example code snippet that demonstrates the process:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import tensorflow as tf

# Create the original tensor with initial values
original_tensor = tf.Variable([[1, 2, 3],
                               [4, 5, 6],
                               [7, 8, 9]])

# Create a placeholder for the new values
new_values = tf.placeholder(tf.int32, shape=[2, 2])

# Define the indices to update
row_indices = tf.constant([0, 1])
col_indices = tf.constant([1, 2])

# Update the subset of the tensor
update_op = tf.****ter_nd_update(original_tensor, indices=tf.transpose([row_indices, col_indices]), updates=new_values)

# Initialize the variables
init_op = tf.global_variables_initializer()

# Create a TensorFlow session
with tf.Session() as sess:
    # Run initialization
    sess.run(init_op)
    
    # Define the new values to update
    new_vals = [[10, 11],
                [12, 13]]
    
    # Run the update operation
    sess.run(update_op, feed_dict={new_values: new_vals})

    # Print the updated tensor
    print(sess.run(original_tensor))


In this example, the original tensor is a 3x3 matrix. We want to update the values at indices (0, 1) and (1, 2) with new values. The tf.****ter_nd_update function is used to perform the update operation. After running the session, the updated tensor is printed.


Note: The tf.****ter_nd_update function requires TensorFlow 1.15 or higher.

by wayne.swaniawski , 8 months ago

@alivia 

In addition to the provided example, here is an updated version using tf.****ter_nd_update, which is available in TensorFlow 2.x. This function can be used to efficiently update a 2D tensor with a subset of new values:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import tensorflow as tf

# Create the original tensor with initial values
original_tensor = tf.Variable([[1, 2, 3],
                               [4, 5, 6],
                               [7, 8, 9]])

# Create a placeholder for the new values
new_values = tf.placeholder(tf.int32, shape=[2, 2])

# Define the indices to update
indices = tf.constant([[0, 1], [1, 2]])

# Update the subset of the tensor using tf.****ter_nd_update
update_op = tf.****ter_nd_update(original_tensor, indices, new_values)

# Initialize the variables
tf.compat.v1.global_variables_initializer()

# Create a TensorFlow session
with tf.compat.v1.Session() as sess:
    # Run initialization
    sess.run(init_op)
    
    # Define the new values to update
    new_vals = [[10, 11],
                [12, 13]]
    
    # Run the update operation
    sess.run(update_op, feed_dict={new_values: new_vals})

    # Print the updated tensor
    print(sess.run(original_tensor))


In this code snippet, tf.****ter_nd_update is used to efficiently update a 2D tensor with new values at specified indices. The rest of the process remains the same as in the previous example. Remember to have TensorFlow 2.x installed to use tf.****ter_nd_update.