Python中partial函数的用法及作用

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

彻底明白 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")

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值