pytorch自学笔记(旧)

2023-11-12

数据预处理

心得笔记

        首先要理解一下pytorch中的神经网络的数据格式,通过print打印mnist数据的shape可以知道,输入pytorch中nn.model中的数据的shape格式如下:
                                        [[batch_size, 1, 28, 28]]
        其中,batch_size就是每次该网络同时处理的图片数,设置合理的baich_size可以加快训练的运行速度与模型的稳定性(亲测如此)。然后‘1’就是通道数,因为我打印的时mnist数据集的shape,它是灰度图片,所以通道数为1, 如果图片为彩色图片,其通道数为3。最后两个‘28’就是图片的像素大小了,可以通过该图片文件的属性中的详细属性看到。

代码分析

需要用到的包

import torch
from torchvision import datasets, tranforms
from torch.utils.data import DataLoader

如何预处理自己的图片文件

        网上有很多关于mnist数据集的预处理方法,但当我们自己要处理自己的图片文件时,就显得有些不知所措,详细请看代码:

import torch
import torchvision
import torch.nn as nn
import torch.optim as optim
'''
 定义一个转化函数,目的就是可以把我们常见的图片文件(jpg,png等)通过torchvision.transforms.ToTensor()函数
 转化成tensor格式,然后再通过torchvision.transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
 函数进行图片归一化,即将tensor中的值都限定在-1到1之间。
'''
transfroms = torchvision.transforms.Compose([torchvision.transforms.ToTensor()],
									torchvision.transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]))
'''
 读取目录下的图片文件,你的文件夹格式应该为如下情况:
	 directory/
	├── class_x
	│   ├── xxx.jpg
	│   ├── xxy.jpg
	│   └── ...
	│       └── xxz.jpg
	└── class_y
	    ├── 123.jpg
	    ├── nsdf3.jpg
	    └── ...
	    └── asd932_.jpg
 即,directory下面有各种各样的类别文件夹,然后在这个类别文件夹下才是你自己的图片文件,之所以需要这样
 是因为,它这个torchvision.datasets.DatasetFolder函数能够根据你的class_x的名字来自动定义标签,
 如上,class_x文件夹下的图片的标签就是0,class_y下的图片标签就是1,以此类推。
'''							
imagenet_data = torchvision.datasets.DatasetFolder('path/to/directory/', transform=transfroms )
'''
最后就是构造一个迭代器了,batch_size就是接下来要批量处理的数量,shffle标志是否给imagenet_data中的数据打乱,顺序随机一下。
'''
data_loader = torch.utils.data.DataLoader(imagenet_data,
                                          batch_size=4,
                                          shuffle=True)
'''
 最后就是可以处理数据了,我们先假设我们已经构造好了模型为model, 损失函数为criterion,优化函数为optimizer
'''
model = ’自己的网络结构‘
optimizer = optim.Adam(model.parameters(), lr=0.0001) # 优化方法,学习率为lr的值
criterion = nn.MSELoss() # 损失函数,即计算模型的预测值和真实标签label的差异大小的函数
epoch = 200 # 将整个数据集训练200次
for i in range(epoch):
	for data in data_loader:
		imgs, labels = data  #提出图片和该图片的标签
		# ======前向传播=======
		outputs = model(img)   
		loss = criterion(outputs, labels)
		# ======反向传播=======
		optimizer.zero_grad()
		loss.backward()
		optimizer.step()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytorch自学笔记(旧) 的相关文章

随机推荐

  • 时域采样,频域为什么周期延拓了

    频域周期延拓只是表面现象 其实质是不同的信号采样后的像可能相同 不可区分 如果硬要做实验 还是要有一定的编程基础 起码要整一个声音出来 让你听一听 可是你要重复这一实验可能又太难了 所以我还是讲一讲简单的数学原理 并用简单的三角函数及程序验
  • Linux系统同时安装MySQL5.7和MySQL8.0

    本文是在一台Centos7虚拟机上面同时安装mysql5 7和mysql8 0的步骤 记录一下 方便后续回顾 这篇文章之后会接着学习搭建两台虚拟机一主一从的架构 其中配置的文件名称 目录 端口号 IP地址要根据自己电脑的实际情况进行更改 m
  • Ubuntu 22.04上安装Docker的完整过程

    更新系统软件包 sudo apt update 安装所需的依赖包 以允许APT使用HTTPS sudo apt install apt transport https ca certificates curl software proper
  • Docker构建tomcat无法用startup.sh启动,无法输出catalina.out

    最近部署测试环境 想尝试一下docker 毕竟技术人不能落伍 So 我先学习了一下docker的简单使用 很多东西都是实践出真知 没必要看书找教程 大概看一下能干就可以了 菜鸟教程地址Docker 教程 菜鸟教程 初学者可以了解一下 下面进
  • 编程变量命名的一些技巧

    最近做项目仿真时 在编程的时候发现自己对变量的命名比较混乱 没有统一的规则 故搜集了一些资料对变量命名的技巧和原则有所了解和总结 总的来说 就是英文字母大小写 数字 下划线 按照一定的规则搭配 自己比较喜欢的是帕斯卡 pascal 命名法和
  • stm32f103 TIM2定时器4路PWM输出实验

    这里以TIM2为例 pwm c include pwm h uint16 t TIM2 CCR1 Val uint16 t TIM2 CCR2 Val uint16 t TIM2 CCR3 Val uint16 t TIM2 CCR4 Va
  • 【前端】HTML基础总结

    概要 html基本结构 nbsp 空格 emsp 空字符 html标签 h1 h1 标题标签1 6之间字体大小逐渐减小 p p 段落标签 b b 加粗 strong strong 加粗优化搜索 i i 斜体 div div 块级元素 spa
  • 数据结构学习——栈的应用:迷宫问题

    简介 基于栈的迷宫问题本质上是深度优先遍历 从起点开始深度优先搜索 遇到碰壁的情况时 根据栈的特性 可以 回溯 到之前走过的路 并继续搜索未搜索的方向 具体实现 我使用的ide是qt 它里面的一些图形库有助于我更加直观地理解深度优先搜索的过
  • 华为OD机试真题-评论转换输出-2023年OD统一考试(B卷)

    题目描述 在一个博客网站上 每篇博客都有评论 每一条评论都是一个非空英文字母字符串 评论具有树状结构 除了根评论外 每个评论都有一个父评论 当评论保存时 使用以下格式 首先是评论的内容 然后是回复当前评论的数量 最后是当前评论的所有子评论
  • 服务器显示中国移动,中国移动服务器地址是什么

    中国移动服务器地址是什么 内容精选 换一换 域名的DNS服务器定义了域名用于解析的权威DNS服务器 通过华为云注册成功的域名默认使用华为云DNS进行解析 详细内容 请参见华为云DNS对用户提供域名服务的DNS是什么 若您选择非华为云DNS进
  • 微服务部署:蓝绿部署、滚动部署、灰度部署(金丝雀部署)、功能开关发布

    简介 产品或项目不可能一步到位 一次性推向用户 故而有版本的存在 在app版本更新或者项目迭代的过程中 不可避免需要发布 发布就是部署 部署就是修改 修改则意味着风险 目前有很多用于部署的技术 本文将目前常用的布署方案做一个总结 备注 本文
  • C++指针的注意事项

    1 定义指针时 切勿忘记初始化 2 当指针作为函数参数时 函数体内记得判空 3 动态申请内存时 不要忘记判断内存申请是否成功 4 勿忘释放内存 并且只释放堆内存 即动态申请的内存 5 内存释放后 记得将指针置空 6 函数返回值一定不要是局部
  • 恶意域名解析

    原因 今天在使用搜狗搜索我们公司的网站名称的时候搜索到一个域名为 test99 cn的网站 打开直接弹出了我们的后台管理系统 后果 非法网站被工信部扫描到之后 将会影响到该主机客户的域名备案等信息 另外我们的后台管理系统就这样被暴露了 解决
  • linux内核配置支持ipv6,Linux系统IPv6配置

    1 自动获取IPV6地址 修改 etc sysconfig network文件 加入下列配置文本 NETWORKING IPV6 yes 然后 运行命令service network restart 用命令ifconfig a 查看IPV6
  • 远程RPC+插桩巧解瑞数5,人人都能懂的瑞数(附源码)

    前言 众所周知 rpc对于一些复杂的加密有奇效 我们只需要找到加密函数所在的位置即可通过RPC远程调用 从而省去了扣代码补环境等掉头发过程 本篇以维普期刊为例 一探瑞数的奥秘 1 抓包分析请求接口 通过抓包分析可知 我们要找的url是Sea
  • 学习笔记-Matlab算法篇-差分方程建模

    差分方程建模 01差分方程建模 02蛛网模型 问题提出 在自由竞争的社会中 很多领域会出现循环波动的现象 在经济领域中 可以从自由集市上某种商品的价格变化看到如下现象 在某一时期 商品的上市量大于需求 引起价格下跌 生产者觉得该商品无利可图
  • 诗词-- 收集

    摘自语录 1 所有的优越感 都来自缺乏见识和缺乏悲悯 2 如果一样东西你得到了 却觉得不过如此 那么这个东西其实是你的欲望 如果一样东西你得到了之后 依然爱不释手 那么这这才是你真正想要的 3 不行动的话 你永远都是观众 4 别用自我牺牲
  • Qt扫盲-QStackedWidget理论总结

    QStackedWidget理论总结 1 简述 2 布局用法 3 页面切换 4 常用功能 1 简述 QStackedWidget和QTabWidget的功能类似 都是为解决大量的控件在一个页面上可能显示不出来 同时呢 这些控件也可以按一定方
  • 学习笔记——git从远程仓库拉取代码修改并提交和本地代码提交到远程仓库

    最近开始学习使用git 找了好多博主的文章总结了一下 并非原创 多多指教 一 git从远程仓库拉取代码修改并提交 1 本地新建项目目录 2 从远程仓库拉取代码到本地 git clone git xxx xxx git 注 默认拉取的是mas
  • pytorch自学笔记(旧)

    pytorch自学笔记 数据预处理 心得笔记 代码分析 需要用到的包 如何预处理自己的图片文件 数据预处理 心得笔记 首先要理解一下pytorch中的神经网络的数据格式 通过print打印mnist数据的shape可以知道 输入pytorc