当前位置:网站首页>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() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。 ︎
边栏推荐
- Order table delete, insert and search operations
- aliases node analysis
- Zhongang Mining: Strong downstream demand for fluorite
- 动手写prometheus的exporter-02-Counter(计数器)
- 论文精读 —— 2021 CVPR《Progressive Temporal Feature Alignment Network for Video Inpainting》
- 如何用Apifox 的智能Mock功能?
- 并发工具类——CountDownLatch、CyclicBarrier、Semaphore、Exchanger的介绍与使用
- SQL database field to append to main table
- SQL Server查询优化
- Big guys, mysql cdc (2.2.1 and previous versions) sometimes has this situation since savepoint, is there anything wrong?
猜你喜欢

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

scikit-learn机器学习 读书笔记(二)

Talk about API Management - Open Source Edition to SaaS Edition

每周推荐短视频:探索AI的应用边界

深度梳理:防止模型过拟合的方法汇总

聊聊 API 管理-开源版 到 SaaS 版

Zhongang Mining: Strong downstream demand for fluorite

一篇文章带你搞懂什么是幂等性问题?如何解决幂等性问题?

Flutter development: error The following assertion was thrown resolving an image codec: Solution for Unable to...

Arduino框架下合宙ESP32C3 +1.8“tft 网络时钟
随机推荐
顺序表的删除,插入和查找操作
暑期学前作业
EasyGBS连接mysql数据库提示“can’t connect to mysql server”,该如何解决?
Linear Algebra (4)
FPGA engineer interview questions collection 21~30
SEO搜索引擎优化
I have a dream for Career .
Interface debugging also can play this?
OAuth2的使用场景、常见误区、使用案例
实战小技巧19:List转Map List的几种姿势
Practical skills 19: Several postures of List to Map List
Shield Alt hotkey in vscode
在vscode中屏蔽Alt热键
`id` bigint(20) unsigned NOT NULL COMMENT '数据库主键',
各位大佬,idea中测试使用FlinkCDC SQL 读取Mysql 数据写入Kafka中,代码中创
strongest brain (1)
Qiskit 学习笔记2
一文带你搞懂OAuth2.0
AVL树的插入--旋转笔记
How does flinksql write that the value of redis has only the last field?