当前位置:网站首页>pytorch框架学习(3)torch.nn.functional模块和nn.Module模块
pytorch框架学习(3)torch.nn.functional模块和nn.Module模块
2022-08-10 05:29:00 【Time.Xu】
快到七夕了,我们继续学习!
torch.nn.functional模块和nn.Module模块
如何用以上两个模块更加方便地构建出网络的架构
本次使用Mnist数据集进行分类任务的实例进行学习
首先,让我们了解下路径处理库pathlib ,这是一个面向对象的路径操作文件,可以轻松的获取当前文件夹路径(a = Path.cwd())、Home路径(a = Path.home()) 、父目录( a.parent);可以对文件名进行一系列操作; 可以进行文件操作、可以进行文件夹操作、可以进行路径拼接等等。官方文档
| 函数 | 注释 |
|---|---|
| name | 目录的最后一个部分 |
| suffix | 目录中最后一个部分的扩展名 |
| suffixes | 返回多个扩展名列表 |
| stem | 目录最后一个部分,没有后缀 |
| with_name(name) | 替换目录最后一个部分并返回一个新的路径 |
| with_suffix(suffix) | 替换扩展名,返回新的路径,扩展名存在则不变 |
1首先 我们把图像下载、解压,并读一张看看
这里其实有必要简单学习一下matplotlib的pyplot,在这先占个坑

可以看到数据集的shape是(50000, 784) ,其中50000是样本数,784是28281的展开

x_train[]就是灰度值图像, y_train[]就是类别。
分类任务的标签应该是一个独热编码, 我们得到结果的是每一个类别概率的概率值。
2其次我们准备训练
复习一下最基本的训练过程: 数据读入、设置是否需要记录梯度–>搭建网络结构–>设置超参数、损失、优化器等–>进行数据训练(读取-zero_grad()-前向传播-计算Loss-反向传播更新参数-打印过程结果-权重保存)
这里我们首先使用[map()函数1](https://blog.csdn.net/wangxinxin1992816/article/details/124537869?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165944879516782395324210%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165944879516782395324210&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-124537869-null-null.142v39pc_rank_v38&utm_term=map%28%EF%BC%89&spm=1018.2226.3001.4187),将数据都转化为tensor的格式。
下面我们进入今天主要的内容
首先我们简单说一下什么时候用nn.Moudle,什么时候用nn.functional呢?
一般情况下如果模型中有带学习的参数的 最好使用nn.Moudle,其他情况使用nn.functional会相对简单一些。 eg.全连接层、卷积层等最好用nn.Moudle, 激活函数、损失函数 就可以用nn.functional
torch.nn.fuction方法

torch.nn.Moudel方法
- 必须继承nn.Module且在其构造函数中需调用nn.Module的构造函数
- 无需写反向传播函数,nn.Module能够利用autograd自动实现反向传播
- Module中的可学习参数可以通过named_parameters()或者parameters()返回迭代器

这里不光把网络结构定义好了,代码内部也同时帮我们把权重和偏置初始化了。
map() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。 ︎
边栏推荐
- 栈与队列 | 用栈实现队列 | 用队列实现栈 | 基础理论与代码原理
- 反转链表中的第m至第n个节点---leetcode
- MySql's json_extract function processes json fields
- Talk about API Management - Open Source Edition to SaaS Edition
- 基于BP神经网络的多因素房屋价格预测matlab仿真
- oracle cdc时,设置并行度2插槽数1,最终任务只有一个tm,是不是因为oracle不支持并发
- 基于Qiskit——《量子计算编程实战》读书笔记(一)
- 【Pei Shu Theorem】CF1055C Lucky Days
- Guys, is it normal that the oracle archive log grows by 3G in 20 minutes after running cdc?
- 8.STM32F407之HAL库——PWM笔记
猜你喜欢

Buu Web

Qiskit 学习笔记1

基于Qiskit——《量子计算编程实战》读书笔记(四)

最强大脑(1)

Conda creates a virtual environment method and pqi uses a domestic mirror source to install a third-party library method tutorial

Zhongang Mining: Strong downstream demand for fluorite

mysql常用命令有什么

Interface debugging also can play this?

How to use Apifox's Smart Mock function?

一篇文章带你搞懂什么是幂等性问题?如何解决幂等性问题?
随机推荐
大佬们,mysql cdc(2.2.1跟之前的版本)从savepoint起有时出现这种情况,有没有什
论文精读 —— 2021 CVPR《Progressive Temporal Feature Alignment Network for Video Inpainting》
Become a language that hackers have to learn. Do you think it's okay after reading it?
Pony语言学习(一):环境配置(续)
SQL database field to append to main table
Stacks and Queues | Valid parentheses, delete all adjacent elements in a string, reverse Polish expression evaluation, maximum sliding window, top K high frequency elements | leecode brush questions
基于Qiskit——《量子计算编程实战》读书笔记(六)
FPGA工程师面试试题集锦31~40
MySql之json_extract函数处理json字段
树莓派入门(4)LED闪烁&呼吸灯
Qiskit 学习笔记2
How to simulate the background API call scene, very detailed!
AVL tree insertion--rotation notes
顺序表的删除,插入和查找操作
Pony语言学习(九)——泛型与模式匹配(终章)
mysql常用命令有什么
反转链表中的第m至第n个节点---leetcode
聊聊 API 管理-开源版 到 SaaS 版
我用这一招让团队的开发效率提升了 100%!
Buu Web