tf.clip_by_value 限制在兩個矩陣/張量之間的用法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章