2024-09-29 04:22:40 发布
网友
我有一个整数的四维张量,我想把一个值映射到另一个。我不确定在tensorflow中什么是有效的方法。你知道吗
如果是numpy数组,我将执行以下操作:
arrayNew = np.zeros(arrayOld.shape, dtype=arrayOld.dtype) arrayNew[arrayOld == valOld] = valNew
所以我基本上是想把这段代码翻译成tensorflow。你知道吗
假设您只想用另一个标量值替换一个标量值,那么最简单的方法可能是减去旧值,然后添加新值:
import tensorflow as tf # Inputs arrayOld = tf.placeholder(tf.int8) valOld = tf.placeholder(tf.int8, ()) valNew = tf.placeholder(tf.int8, ()) # Find positions to replace mask = tf.cast(tf.equal(arrayOld, valOld), arrayOld.dtype) # Make new array arrayNew = arrayOld + (valNew - valOld) * mask with tf.Session() as sess: print(sess.run(arrayNew, feed_dict={ arrayOld: [[12, 20, 32, 17, 20], [31, 15, 20, 25, 14]], valOld: 20, valNew: 10}))
输出:
[[12 10 32 17 10] [31 15 10 25 14]]
编辑:起初,我以为
arrayNew = arrayOld + (valNew - valOld) * mask
对于无符号类型可能有问题(因为减法会产生负值),但实际上效果很好,负值只是溢出,结果是正确的。你知道吗
假设您只想用另一个标量值替换一个标量值,那么最简单的方法可能是减去旧值,然后添加新值:
输出:
编辑:起初,我以为
对于无符号类型可能有问题(因为减法会产生负值),但实际上效果很好,负值只是溢出,结果是正确的。你知道吗
相关问题 更多 >
编程相关推荐