pytorch 之 nn 库与调试

系列文章目录


文章目录

  • 系列文章目录
  • [一、torch.nn 库](#一、torch.nn 库)
    • [1. nn.Parameter](#1. nn.Parameter)
    • [2. 基于nn.Moduel 的接口](#2. 基于nn.Moduel 的接口)
    • [3. nn.functional](#3. nn.functional)
    • 4.nn.Sequential
  • 二、调式visdom
    • [1. vidom 功能简介](#1. vidom 功能简介)
    • [2. visdom 安装](#2. visdom 安装)
    • [visdom 简单编程](#visdom 简单编程)
    • [三、tensorboardX 数据可视化工具](#三、tensorboardX 数据可视化工具)


一、torch.nn 库

  • torch.nn 是专门为神经网络设计的接口
  • torch.nn 构建于 autograd 之上,可以用来定义和构建神经网络。
    五个常用的函数:
    nn.Patameter
    nn.Linear & nn.cov2d
    nn.functional
    nn.Model
    nn.Sequential

1. nn.Parameter

  该接口来定义可训练参数:

  • self.my_param = nn.Parameter(torch.randn(1)) 定义和初始化参数
  • self.register_parameter 注册可训练参数,效果一致
  • nn.ParameterList & nn.ParameterDict 使用列表或者字典来定义多个可训练的参数。
python 复制代码
import torch
from torch import nn

self.paramas = nn.ParameterList([nn.Parameter(torch.randn(10,10)) for i in range(10)])

self.grads = nn.ParameterDisct({
    'left': nn.Parameter(torch.randn(5,10)),
    'right': nn.Parameter(torch.randn(5.10))
})

列表和字典与我们Python定义的数据结构是一样的。

2. 基于nn.Moduel 的接口

   nn.Linear & nn.conv2d & nn.ReLU & nn.MaxPool2d() & nn.MESLoos这些函数都基于 nn.Module,实现了前向传播和后向传播,我们直接调用就行,非常省事

  • 各种神经网络层的定义,基于 nn.Module 的子类
    • self.conv1 = nn.Conv2d(1,6,(5,5)) 定义一个卷积类,初始化卷积的具体参数。
    • 调用时 self.conv1(x) 调用这个卷积类,进行一次卷积操作,前向运算。
  • 定义网络层,参数为Parameter 类型,也叫可训练类型的参数:
    • lay = nn.Linear(1,1)
    • lay.weight = nn.Parameter(torch.FloatTensor(\[0]))
    • lay.bias = nn.Parameter(torch.FloatTensor(0))

3. nn.functional

  包含 torch.nn 库中所有的函数,包含大量的 Loss 和 activation function:

  • nn.functional.conv2d(input,weight,bias = None,Stride = 1,padding = 0,dialtion = 1,groups = 1) 这个是函数,不是类,与上面有本质的区别
  • nn.functional.xx 本质上就是一个函数接口,无法和 nn.Sequential 结合使用。没有学习参数使用 nn.xx 和 nn.functional.xx 都可以,有学习参数就建议使用 nn.xx.
  • 特别注意 DropOut 层。

4.nn.Sequential

  作用就是把层次给串联起来,形成一个模型

python 复制代码
# Example of use Sequential
model = nn.Sequential(
    nn.Conv2d(1, 5, 10),
    nn.ReLU(),
    nn.Conv2d(1, 5, 10),
    nn.ReLU(),
)

# Example of using Sequential with OrderedDict
model1 = nn.Sequential(OrderedDict([
    ('conv1', nn.Conv2d(1, 5, 10)),
    ('relu1':nn.ReLu()),
    ('conv2', nn.Conv2d(20, 64, 5)),
    ('relu2':nn.ReLu())
]))

二、调式visdom

1. vidom 功能简介

   visdom 主要应用于我们展示神经网络运行的中间过程,一些中间结果,检测结果的变化过程可视化等等。我们可以将 visdom 理解成一个库:

  • 支持数值、文本、视频等可视化。
  • 支持 pyotorch、torch、numpy

图1 例举了数据可视化的一些图表,通过这些可视化的图表,我们可以更加直观的看出数据的变化规律,看起来就很专业。
图 1 数据可视化

2. visdom 安装

安装:

pip install visdom

启动服务:

python -m visdom.server

visdom 简单编程

python 复制代码
import visdom
import numpy as np
vis = visdom.Visdom()
vis.text("hello,四川兔兔")
vis.image(np.ones((3,10,10)))

具体的实例展示,在搭建神经网络章节,后面会完善这篇文章。

三、tensorboardX 数据可视化工具

  这个工具是基于tensorboard,专门用于pytorch的数据可视化:

1.支持 scalar, image, figure, histogram, audio, text, graph等等不同的可视化展示方式

  1. 安装:pip install tensorboardX

  最后如果本文有帮助,帮我点击小店吧,浏览下就行,谢谢朋友们。

相关推荐
林冠宏_指尖下的幽灵3 分钟前
AI发展下的后编程时代思考
前端·人工智能·后端
盛世宏博智慧档案21 分钟前
户外配电柜为什么要装POE供电以太网温湿度传感器?
服务器·网络·人工智能·监控·温湿度·配电柜
孙启超29 分钟前
【AI开发之Rust】第 3 课:字符串与复合类型 —— 数据怎么放
开发语言·人工智能·后端·rust·llm·transformer
小智老师PMP32 分钟前
2026PMP第八版新纲深度解读|从流程管控到价值交付,核心考点全迭代
人工智能·职场和发展·软件工程·制造·敏捷流程
秦先生在广东1 小时前
Worktrunk: 面向并行 AI Agent 工作流的 Git Worktree 管理 CLI
人工智能
韩曙亮1 小时前
【AI 大模型】国内各平台 AI 大模型 价格、性能 对比分析 ② ( 智谱 BigModel | 腾讯云 TokenHub | 千问 AI 平台 )
人工智能·ai·大模型·腾讯云·ai大模型·千问·智谱
2601_962298271 小时前
Python自动化脚本的编写01
python·appium·自动化脚本·web自动化·应收账款管理
YHL1 小时前
🧠 Agent 记忆进阶:总结压缩与向量检索 —— 从截断到 Milvus 长期记忆
前端·人工智能
llilian_161 小时前
时间统一系统 高精度时统设备选购避坑指南 授时系统
大数据·网络·人工智能·功能测试·单片机·嵌入式硬件·51单片机
AIFQuant1 小时前
Python实时外汇行情接入实战:WebSocket与REST K线查询
开发语言·python·websocket