我们都知道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张量对应位置的值之间。