我目前正在将我的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的逻辑替代方案是什么?这必须是图中的一个操作,因为每个时期将涉及在搜索空间中进行下一步并检查边界。
答案 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