使用Numpy数组条件操作掩码与Tensorflow



我是Tensoflow的新手,我尝试在自定义RNN项目中实现它,以了解更多关于神经网络如何工作的信息。

我的问题很简单,但我似乎找不到任何令人满意的答案。

我习惯了Numpy和使用条件掩码对数组进行操作,但我找不到用张量来转换它的方法

def ELu(in_array):
    in_array[in_array<= 0] = math.e ** in_array[in_array<= 0] - 1
    return in_array
>>>print(ELu(np.array([1.0,0.0,-1.0])))

给我

[ 1.          0.         -0.63212056]

我想编辑这个函数使它能得到一个类似的张量如果我这样做

>>>print(ELu(tf.convert_to_tensor([1.0,0.0,-1.0])))

应该是

<tf.Tensor: shape=(3,), dtype=float32, numpy=array([ 1.,  0., -0.63212056], dtype=float32)>

但是用类似的方式访问张量in_array[in_array<= 0]不起作用

使用tensor_scatter_nd_update():

import math
def ELu(in_array):
  mask = in_array <= 0
  inds = tf.where(mask)
  updates = tf.boolean_mask(in_array, mask)
  updates = math.e ** updates - 1.
  res = tf.tensor_scatter_nd_update(in_array, inds, updates)
  return res

最新更新