Python 更改张量某列的值
我想用二维张量(批量大小,序列长度)覆盖三维张量(批量大小,序列长度,类数)的某一列的值。在调试过程中,我在numpy上尝试了以下值赋值,效果非常好,但不确定如何在tensor上进行同样的赋值Python 更改张量某列的值,python,tensorflow,deep-learning,tensor,Python,Tensorflow,Deep Learning,Tensor,我想用二维张量(批量大小,序列长度)覆盖三维张量(批量大小,序列长度,类数)的某一列的值。在调试过程中,我在numpy上尝试了以下值赋值,效果非常好,但不确定如何在tensor上进行同样的赋值 Numpy Solution: Tensor A shape [50,4,4] Tensor B shape [50,4] * A[:,:,0]=b[:,:] Tensor A shape is [50,4,4] Example: A[1]:
Numpy Solution:
Tensor A shape [50,4,4]
Tensor B shape [50,4]
* A[:,:,0]=b[:,:]
Tensor A shape is [50,4,4]
Example:
A[1]:
[[0.2,0.6,0.1,0.02],
[0.3,0.4,0.5,0.12],
[0.2,0.46,0.31,0.02],
[0.2,0.1,0.2,0.03]]
B[1]:
[0,1,1,0]
A*[1]:
[[0,0.6,0.1,0.02],
[1,0.4,0.5,0.12],
[1,0.46,0.31,0.02],
[0,0.1,0.2,0.03]]
我知道在张量上不支持项目分配,但我想知道是否有一种方法可以不丢失ref-tensor的数据。我认为在这种情况下最简单的方法是:
import tensorflow as tf
a = tf.placeholder(tf.float32, [None, None, None])
b = tf.placeholder(tf.float32, [None, None])
a_star = tf.concat([b[:, :, tf.newaxis], a[:, :, 1:]], axis=-1)
# Test
with tf.Session() as sess:
print(sess.run(a_star, feed_dict={
a: [[[0.2 , 0.6 , 0.1 , 0.02],
[0.3 , 0.4 , 0.5 , 0.12],
[0.2 , 0.46, 0.31, 0.02],
[0.2 , 0.1 , 0.2 , 0.03]]],
b: [[0, 1, 1, 0]]
}))
输出:
[[0.0.6 0.1 0.02]
[1. 0.4 0.5 0.12]
[1. 0.46 0.31 0.02]
[0. 0.1 0.2 0.03]]]
我在中提出了一种更灵活的连续切片替换操作,但在这种情况下,这可能更简单、更快。对您有帮助吗?