PyTorch Cart-pole示例中map与lambda表达式的功能疑问
疑问解答
- lambda返回值的问题:
lambda s: s is not None的返回值是布尔值(True或False)。你直接在Python终端输入lambda s: s is None得到函数对象,是因为你只定义了这个匿名函数,没给它传参数调用。举个例子,你试试(lambda s: s is None)(None),就能得到True的返回结果了。 - map()的处理逻辑:
map()的第一个参数需要是一个函数,第二个参数是可迭代对象(这里就是batch.next_state这个列表)。它会把列表里的每个元素挨个传给这个lambda函数,把每次调用的返回值收集成一个迭代器。所以这段代码里,map会遍历batch.next_state的每个元素s,判断s是否不为None,得到一串布尔值的迭代器,再用tuple()转成元组,最后转换成PyTorch的布尔张量non_final_mask。 - 关于重复标记的说明:这个疑问结合了PyTorch强化学习的具体代码场景,不是单纯的基础语法问题,找不到对应说明的话,确实不该被标记为重复。
内容的提问来源于stack exchange,提问作者Ruslan Mukhamadiarov
相关产品推荐
相关产品推荐

