在Tensorflow中有效替代np.piecewise

时间:2018-01-23 09:28:33

标签: python arrays numpy tensorflow

我目前正在将我的NumPy代码移植到Tensorflow,以便有效地将其应用于神经网络。虽然Tensorflow涵盖了一些基本的NumPy功能,但它显然无法提供完整的覆盖范围。现在,我试图将美丽的numpy.piecewise函数转换为Tensorflow有点困难。目标是检查输入矩阵中的每个元素(张量?)是否会超过给定的边界,如果添加了某个步骤,如果是,则修改相同大小的掩码矩阵中的伴随元素。这就是函数在NumPy中的外观:

 def bounds_check(inputs, mask, step, bounds):
    conds = [np.absolute(inputs + step) > bounds, np.absolute(inputs + step) <= bounds]
    funcs = [lambda mask: -mask, lambda mask: mask]
    return np.piecewise(mask, conds, funcs)  # return mask

Tensorflow的逻辑替代方案是什么?这必须是图中的一个操作,因为每个时期将涉及在搜索空间中进行下一步并检查边界。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的代码,它应该与:

相同
new_inputs = inputs + step
over_bounds = tf.abs(new_inputs) > bounds
new_mask = mask * (1 + (-2) * tf.cast(over_bounds, tf.float32))
return new_mask