Python中enumerate用法详解

部署运行你感兴趣的模型镜像

代码分解

for idx, module in enumerate(args):

1. args 参数

  • *args 表示函数可以接受任意数量的参数

  • 在 __init__ 方法中,args 是一个包含所有传入参数的元组

2. enumerate(args) 函数

  • enumerate() 是Python内置函数

  • 它会遍历一个序列(如列表、元组),同时返回索引和对应的值

  • 格式:(索引, 元素值)

3. 具体例子

假设这样使用:

model = MySequential(
    nn.Linear(10, 20),
    nn.ReLU(),
    nn.Linear(20, 5)
)

那么:

  • args = (nn.Linear(10, 20), nn.ReLU(), nn.Linear(20, 5))

  • enumerate(args) 会产生:

    • (0, nn.Linear(10, 20))

    • (1, nn.ReLU())

    • (2, nn.Linear(20, 5))

4. 循环过程

第一次循环:

  • idx = 0module = nn.Linear(10, 20)

  • self._modules["0"] = nn.Linear(10, 20)

第二次循环:

  • idx = 1module = nn.ReLU()

  • self._modules["1"] = nn.ReLU()

第三次循环:

  • idx = 2module = nn.Linear(20, 5)

  • self._modules["2"] = nn.Linear(20, 5)

5. 最终结果

self._modules = {
    "0": nn.Linear(10, 20),
    "1": nn.ReLU(),
    "2": nn.Linear(20, 5)
}

简单理解

这句代码的作用就是:给每个传入的神经网络层自动编号并保存起来,方便后面按顺序执行。

这样设计让 MySequential 类可以接受任意数量的层,并且自动管理它们的执行顺序。

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值