这是我的问题.我有一个张量X,我想将所有负值设置为零.在numpy,我会做以下np.maximum(0, X).有没有办法在张量流中达到相同的效果?我试过了tf.maximum(tf.fill(X.get_shape(), 0.0), X),但这个抛出ValueError: Cannot convert a partially known TensorShape to a Tensor: (?,).
PS.X是形状的1-D张量(?,).
mrr*_*rry 17
实际上,您的问题与计算整流器激活功能完全相同,而TensorFlow有一个内置运算符tf.nn.relu(),它可以完全满足您的需求:
X_with_negatives_set_to_zero = tf.nn.relu(X)
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用 tf.clip_by_value 函数如下:
t = tf.clip_by_value(t, min_val, max_val)
Run Code Online (Sandbox Code Playgroud)
它将在 [min_val, max_val] 范围内裁剪张量 t。在这里,您可以将 min_val 设置为 0 以裁剪所有负值并将其设置为 0。有关clip_by_value 的更多文档。
may*_*k93 -1
一种可能的解决方案可能是这样的(尽管它不是最好的):
class TensorClass(object):
def __init__(tensor_values):
self.test_tensor = tf.Variable(tensor_values, name="test_tensor")
test_session = tf.Session()
with test_session.as_default():
tc = TensorClass([1, -1, 2, -2, 3])
test_session.run(tf.initialize_all_variables())
test_tensor_value = test_session.run(tc.test_tensor)
print(test_tensor_value) # Will print [1, -1, 2, -2, 3]
new_test_tensor_value = [element * int(element > 0) for element in test_tensor_value]
test_tensor_value_assign_op = tf.assign(tc.test_tensor, new_test_tensor_value)
test_session.run(test_tensor_value_assign_op)
test_tensor_value = test_session.run(tc.test_tensor)
print(test_tensor_value) # Will print [1 0 2 0 3]
Run Code Online (Sandbox Code Playgroud)
虽然这可以满足您的需要,但它不是在张量流中完成的。我们正在取出一个张量流变量,对其进行更改,然后再次将其放回去。
对于性能关键的事情,不要使用它,因为它不是很有效。
| 归档时间: |
|
| 查看次数: |
8233 次 |
| 最近记录: |