当前位置: 首页 > news >正文

搭建神经网络(torch.nn的用法)

零零碎碎总结了一些torch框架里面nn模块的用法,尤其是关于搭建神经网络的

nn.ModuleList

nn.Module

nn.Sequential

nn.Linear

nn.Dropout

nn.Embedding

nn.DataParallel()

将模型封装起来,便于在多个gpu上并行计算,训练或者推理

nn.DataParallel 是一个用于并行计算的 PyTorch 模型包装器。它可以将模型复制到多个GPU设备上,并自动将输入数据划分为多个子批次(mini-batches),分配给不同的GPU进行计算,并且能够有效地将梯度聚合回主模型。

nn.DataParallel 是一个用于在多个GPU上并行执行模型训练或推断的PyTorch模型包装器。下面是 nn.DataParallel 的一般用法:

1.导入必要的库:import torch
import torch.nn as nn2.定义模型:class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.conv1 = nn.Conv2d(3, 64, 3)# 定义其他层和操作def forward(self, x):# 定义前向传播逻辑return out3.创建模型对象:model = MyModel()4.指定要使用的GPU设备:device_ids = [0, 1, 2]  # 指定要使用的GPU设备的索引5.使用 nn.DataParallel 包装模型对象:model = nn.DataParallel(model, device_ids=device_ids)

以上代码将模型对象 model 包装在 nn.DataParallel 中,使用 device_ids 指定要使用的GPU设备的索引列表。
现在,model 将被自动复制到指定的GPU设备上,并且计算会在每个设备上同时进行。输入数据会被自动划分为多个子批次,并分配给不同的GPU设备。在计算梯度时,梯度将被聚合回主模型,并进行参数更新。
请注意,使用 nn.DataParallel 时,一些操作(如 model.parameters() 和 model.to(device))可能需要进行适当的调整。具体调整取决于您的代码结构和需求。
使用 nn.DataParallel 可以方便地利用多个GPU设备并行计算,从而加快模型训练和推断的速度,并提高深度学习任务的效率和扩展性。

nn.Parameter

在PyTorch中,nn.Parameter 是一个类,它用于将一个张量包装成一个可训练的参数。它是torch.nn.Parameter类的实例。
通常,当你在定义一个PyTorch模型的时候,你会有一些需要在训练过程中更新的参数。使用nn.Parameter可以将这些参数明确地标记为模型的参数,以便优化器在训练时更新它们的值。
nn.Parameter 的常见用法如下:

import torch
import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()# 定义一个可训练的参数self.weight = nn.Parameter(torch.randn(3, 4))def forward(self, x):# 在前向传播过程中使用参数output = torch.matmul(x, self.weight)return output

在上面的例子中,self.weight 被包装成了一个 nn.Parameter,这意味着它是模型的一部分,并且在训练时会被优化器更新。你可以像使用普通张量一样使用 self.weight,但它有一些额外的属性,如 .grad 用于存储梯度,.requires_grad 用于指示是否需要计算梯度等。
注意,nn.Parameter 实际上是 torch.nn.Parameter 的一个别名,所以可以直接使用 nn.Parameter,也可以使用 torch.nn.Parameter。例如:
param = nn.Parameter(torch.randn(3, 4))

这个参数可以像普通张量一样使用,同时它也是模型的一部分,会在反向传播中计算梯度并更新。

http://www.lryc.cn/news/226297.html

相关文章:

  • 卡码网语言基础课 | 11. 句子缩写
  • Surface RT 安装 Linux
  • C++中的函数重载:多功能而强大的特性
  • 数据分析实战 | K-means算法——蛋白质消费特征分析
  • HTTP协议详解-下(Tomcat)
  • acwing算法基础之搜索与图论--prim算法
  • Amazon EC2 Serial Console 现已在其他亚马逊云科技区域推出
  • hdlbits系列verilog解答(100输入逻辑门)-39
  • Python 中 Selenium 的屏幕截图
  • scrapy发json的post请求
  • 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
  • 自主开发刷题应用网站H5源码(无需后端无需数据库)
  • java 读取excel/word存入mysql
  • 11.(vue3.x+vite)组件间通信方式之ref与$parent、$children
  • [工业自动化-12]:西门子S7-15xxx编程 - PLC从站 - ET200 SP系列详解
  • 消息队列简介
  • SQL中实现汉字的拼音首字母查询
  • 今天知道LiveData的ktx是真的香
  • SpringBoot中的桥接模式
  • AI爆文变现脚本:易用且免费的自动写作脚本更新了
  • 代码随想录算法训练营Day 49 || 123.买卖股票的最佳时机III 、188.买卖股票的最佳时机IV
  • threejs(11)-精通着色器编程(难点)2
  • 配置cuda和cudnn出现 libcudnn.so.8 is not a symbolic link问题
  • “目标值排列匹配“和“背包组合问题“的区别和leetcode例题详解
  • 火星加载WMTS服务
  • 为什么要学习去使用云服务器,外网 IP能干什么,MAC使用Termius连接阿里云服务器。保姆级教学
  • VS c++多文件编译
  • JVM关键指标监控(调优)
  • 【Proteus仿真】【Arduino单片机】LCD1602-IIC液晶显示
  • skynet学习笔记03— 服务