我是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