我们都知道tf.clip_by_value(A, min, max)可以实现将张量A中元素限制在两个值之间。
即输入一个张量A,把A中的每一个元素的值都压缩在min和max之间。小于min的让它等于min,大于max的元素的值等于max。
可是我想要实现将张量A中的元素每个位置都使用不同的取值范围,即把张量限制在两个极值张量之间代码如下:
import tensorflow as tf import numpy as np A=np.arange(12).reshape((3,4)) B=np.array([[1,2,3,4], [1,2,3,4], [1,2,3,4]]) C=np.array([[9,9,9,9], [9,9,9,9], [9,9,9,9]]) print('A:\n',A) print('B:\n',B) print('C:\n',C) with tf.Session() as sess: print('result:\n',sess.run(tf.clip_by_value(A, B, C)))
输出如下:
A: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] B: [[1 2 3 4] [1 2 3 4] [1 2 3 4]] C: [[9 9 9 9] [9 9 9 9] [9 9 9 9]] result: [[1 2 3 4] [4 5 6 7] [8 9 9 9]]
这样我们得到的结果A中元素的大小被限制在B和C张量对应位置的值之间。