0
点赞
收藏
分享

微信扫一扫

Python中partial函数的用法及作用

年迈的代码机器 2022-01-12 阅读 78

先贴一篇大佬的讲解,很清晰易懂:

彻底明白 Python partial() - Demon的文章 - 知乎 https://zhuanlan.zhihu.com/p/47124891

精华版讲解:

partial函数用作 “冻结” 某些函数的参数或者关键字参数,同时会生成一个带有新标签的对象(即返回一个新的函数)。所谓“冻结”,即使得原函数中的某些参数固定不变。

partial来进行参数的绑定,返回一个参数缩减的特化版本, 即冻结了原函数中部分参数,返回一个新的函数

那么,冻结参数有啥用呢?

答:当原函数需要被多次调用,并且调用时函数中部分参数是固定不变的,那么我们就可以把这部分参数冻结,以便调用。

本文主要目的是结合实际应用,讲一下partial函数的用法。

举例:

需要多次调用的类如下所示:

class LayerNorm(nn.Module):

def __init__(self, normalized_shape, eps=1e-6, data_format="channels_last"):
super().__init__()

# 后面省略...

使用partial后:

norm_layer = partial(LayerNorm, eps=1e-6, data_format="channels_first")

分析上述代码:原类为LayerNorm,其中参数有3个(normalized_shape, eps, data_format)。我们使用partial函数进行冻结之后得到了新类norm_layer,新类即指定了参数的LayerNorm类,可以认为是LayerNorm类的简化版本。

后续使用norm_layer类时,便只需要指定一个参数即可:norm_layer(64)

等价于:LayerNorm(normalized_shape=64, eps=1e-6, data_format="channels_last")

举报

相关推荐

0 条评论