TensorFlow之tf.map_fn()

tf.map_fn()

划重点:从0维度的 elems 中解压的张量列表上的映射。 

map_fn(
    fn,
    elems,
    dtype=None,
    parallel_iterations=10,
    back_prop=True,
    swap_memory=False,
    infer_shape=True,
    name=None
)
  • fn:可调用的执行。它接受一个参数,它将具有与之相同的(可能嵌套的)结构 elems。其输出必须具有与 dtype 相同的结构(如果提供了),否则它必须具有与elems 相同的结构。
  • elems:张量或(可能是嵌套的)张量序列,其中的每一个都将沿着它们的第一维度进行解压。生成的切片的嵌套序列将应用于 fn。

使用方法:

1. map_fn 的最简单版本是反复地将可调用的 fn 应用于从第一个到最后一个的元素序列。这些元素由 elems 解压缩的张量构成。如:

elems = np.array([1, 2, 3, 4, 5, 6])
squares = tf.map_fn(lambda x: x * x, elems)
# squares == [1, 4, 9, 16, 25, 36]

elems = (np.array([1, 2, 3]), np.array([-1, 1, -1]))
alternate = tf.map_fn(lambda x: x[0] * x[1], elems, dtype=tf.int64)
# alternate == [-1, 2, -3]


 elems = np.array([1, 2, 3])
 alternates = tf.map_fn(lambda x: (x, -x), elems, dtype=(tf.int64, tf.int64))
 # alternates[0] == [1, 2, 3]
 # alternates[1] == [-1, -2, -3]

2. 

def integrate(integrate_input):
    Xy = integrate_input[0]
    Yx = integrate_input[1]
    assert dimensions_equal(Xy.shape,(max_len, dim,))
    assert dimensions_equal(Xy.shape, (max_len, dim,))
    outputs = tf.concat([Xy,Yx],1)
    return outputs

#若inputs1,inputs2的shape为[batch_size,max_len,dim]
#map_fn将inputs1、inputs2按第0维展开
#每次执行integrate时,Xy的shape为[max_len, dim]
outputs = tf.map_fn(integrate, (inputs1, inputs2))

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值