python - 将多维张量中的一个值映射到另一个值

标签 python numpy tensorflow mapping tensor

我有一个 4 维整数张量,我想将其中一个值映射到另一个值。我不确定在 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

对于无符号类型可能会有问题(因为减法会产生负值),但它实际上工作得很好,负值只是溢出,结果最终是正确的。

关于python - 将多维张量中的一个值映射到另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114337/

相关文章:

python - 在尝试组合两个数组时,我在 numpy 中遇到类型问题

python - 函数 numpy.fft.fftfreq 的含义

tensorflow - Tensorflow 版本 2.0.0 中的 'tensorflow' 没有属性 'GraphDef' 是什么?

python - 在 tensorflow 中对图像并行运行预训练的 VGG-16

python - 将输出从子进程传输到文件,然后读回

python - 如何告诉 pylint 组合类的子类可以访问父成员?

python - 确定数组是否已排序的最快方法是什么?

python - Tensorflow:多项尝试中结果的概率

Python网络X : Confining force-directed layout within circular boundary

python - 多边形图