pytorch笔记:ModuleDict

embedded/2024/10/22 14:42:05/

1 介绍 

  • 在 PyTorch 中,nn.ModuleDict 是一个方便的容器,用于存储一组子模块(即 nn.Module 对象)的字典
  • 这个容器主要用于动态地管理多个模块,并通过键来访问它们,类似于 Python 的字典

2 特点

  • 组织性
    • nn.ModuleDict 提供了一种将多个模块有序组织在一起的方法。
    • 这有助于让代码更加结构化,易于理解和维护
  • 动态操作
    • ​​​​​​​​​​​​​​可以像操作普通字典那样添加或删除模块
    • 例如使用 module_dict['key'] = module 添加模块,使用 del module_dict['key'] 删除模块
  • 自动参数注册
    • ​​​​​​​当将模块添加到 ModuleDict 中时,它们的参数会自动注册到整个网络中,确保在模型训练时这些参数可以被识别和更新

3 例子

import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.layers = nn.ModuleDict({'linear': nn.Linear(10, 20),'activation': nn.ReLU()})def forward(self, x):x = self.layers['linear'](x)x = self.layers['activation'](x)return x
  • 在构造函数中,我们使用 ModuleDict 来存储一个线性层和一个激活层,并在前向传播 forward 方法中通过键名访问这些层

4 主要方法

clear清空 ModuleDict 中的所有条目
items

返回一个可迭代对象,包含 ModuleDict 中的键/值对

keys

返回一个可迭代对象,包含 ModuleDict 的所有键

popModuleDict 中移除指定的键,并返回其对应的模块
update(modules)使用另一个映射或键值对迭代器更新 ModuleDict,如果存在相同的键,则会覆盖原有的条目
values返回一个可迭代对象,包含 ModuleDict 的所有模块值


http://www.ppmy.cn/embedded/30639.html

相关文章

【ARM Cache 系列文章 11.2 -- ARM Cache 组相联映射】

请阅读【ARM Cache 系列文章专栏导读】 文章目录 Cache 组相联映射组相联映射原理多路组相连缓存的优势多路组相连缓存的代价关联度(Associativity) 上篇文章:【ARM Cache 系列文章 11.1 – ARM Cache 全相连 详细介绍】 Cache 组相联映射 A…

【QA】Java集合的常见遍历方式

前言 本文主要讲述Java集合常见的遍历方式。 通用遍历方式 | Collection集合 迭代器Iterator遍历 Collection<Student> c new ArrayList<>();c.add(new Student("张三", 23)); c.add(new Student("李四", 24)); c.add(new Student("…

【Java笔记】CAS比较的是什么+交换的是什么+自旋到啥时候

文章目录 什么是CASCAS原理CAS的原子性CAS的三个问题问题一&#xff1a;ABA解决方法 问题二&#xff1a;CPU开销过大解决方法 问题三&#xff1a;不能保证代码块的原子性解决方法 Reference 之前看CAS一致迷迷糊糊的&#xff0c;知道它通过自旋来避免多线程冲突&#xff0c;然后…

MATLAB 微积分

MATLAB 微积分 MATLAB提供了多种方法来解决微分和积分问题&#xff0c;求解任意程度的微分方程式以及计算极限。最重要的是&#xff0c;您可以轻松求解复杂函数的图&#xff0c;并通过求解原始函数及其导数来检查图上的最大值&#xff0c;最小值和其他文具点。 本章将讨论微…

前端工程化05-初始前端工程化Node基本介绍安装配置基础知识

6、初始前端工程化 6.1、工程化概述 虽然前几篇我的目录标题写的前端工程化&#xff0c;但是那些东西并不属于前端工程化的内容&#xff0c;更倾向于是js、jq当中的东西&#xff0c;下面我们将接触真正的前端工程化。 前端工程化开发其实现在是离不开一个东西的&#xff0c;…

rust将json字符串直接转为map对象或者hashmap对象

有些时候我们还真的不清楚返回的json数据里面到底有哪些数据&#xff0c;数据类型是什么等&#xff0c;这个时候就可以使用批处理的方式将json字符串转为一个对象&#xff0c;然后通过这个对象的get方法来获取json里面的数据。 pub async fn test_json(&self) {let json_st…

QT-构造函数

类的构造函数是类的一种特殊的成员函数&#xff0c;它会在每次创建类的新对象时执行。 构造成员变量的初始化值&#xff0c;内存空间等 构造函数的名称与类的名称是完全相同的&#xff0c;并且不会返回任何类型&#xff0c;也不会返回 void。构造函数可用于为某些成员变量设置…

React Context

Context https://juejin.cn/post/7244838033454727227?searchId202404012120436CD549D66BBD6C542177 context 提供了一个无需为每层组件手动添加 props, 就能在组件树间进行数据传递的方法 React 中数据通过 props 属性自上而下(由父及子)进行传递&#xff0c;但此种用法对…