2017-09-25 109 views

回答

2

可以使用tf.minimum,这按元素最小化计算;

A = tf.constant([-1, 0, 1, 3, 4]) 

A_clipped = tf.minimum(A, 1) 

sess = tf.InteractiveSession() 
A_clipped.eval() 
# array([-1, 0, 1, 1, 1], dtype=int32) 

另一种选择是使用tf.where设定值:

tf.where(A > 1, tf.constant(1, shape=A.shape), A).eval() 
# array([-1, 0, 1, 1, 1], dtype=int32) 

如果你需要更新通过设置y = 1,在x值将与最大的1被裁剪变量A

A = tf.Variable([-1, 0, 1, 3, 4]) 
​ 
tf.global_variables_initializer().run() 
tf.assign(A, tf.minimum(A, 1)).eval() 

A.eval() 
# array([-1, 0, 1, 1, 1], dtype=int32) 
+0

您的回答缺少作业部分。不是吗? – nessuno

+0

这两种方法都会创建新的张量,而不是直接修改'A',所以我猜这里没有'tf.assign'? – Psidom

+0

我的意思是,OP在询问如何修改输入矩阵A,而不是从A创建新的张量。 – nessuno