我們都知道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張量對應位置的值之間。