深度学习学习日记4.15 (面向GPT学习)

精确学习时间(09点35分开始)

深度学习

    • torch.nn
    • torch.utils.data
    • numpy
    • torchvision中的模块有哪些
    • os 模块
    • PIL(Python Imaging Library)
    • tqdm
    • matplotlib
    • nn.ReLU inplace参数设为True
    • nn.relu
  • 训练的迭代过程
    • 梯度清零
    • loss指标计算
    • 为什么要加上item?
    • 分割预测图像的理解
      • 在计算损失时,使用 len(trainloader.dataset) 的目的是为了得到整个训练集的样本数量,从而计算出平均损失(average loss)。这是因为损失值通常是单个样本的损失之和,然后再除以样本数量来得到平均损失。
      • 在计算 epoch 中的准确率(epoch_acc)时,使用 total(total 是一个累加变量,用于记录已经处理过的样本数量。) 是更加准确的做法,因为它记录了实际处理过的样本数量,而不是简单地依赖于数据集的总样本数。

torch.nn

在这里插入图片描述
Module:所有神经网络模块的基类。如果你想自定义一个神经网络模块,需要继承自 torch.nn.Module,并实现其中的 forward 方法。
Linear:全连接层,也称为仿射层。它接收输入特征并输出通过学习得到的权重和偏置进行线性变换后的结果。

Conv2d:二维卷积层。用于处理二维图像数据,通过滑动卷积核在输入图像上提取特征。

MaxPool2d 和 AvgPool2d:分别为二维最大池化层和平均池化层,用于减小输入特征图的尺寸并提取最显著的特征
ReLU:修正线性单元激活函数。用于引入非线性性质,增加神经网络的拟合能力。
Sequential:一个容器,按顺序包含了一系列神经网络层。可以通过将各种层组合在一起来构建更复杂的神经网络。
CrossEntropyLoss:交叉熵损失函数。常用于多分类任务的损失函数。

torch.utils.data

在这里插入图片描述
Dataset 类:定义了一个抽象的数据集类,所有自定义数据集都应该继承自该类,并实现 lengetitem 方法。这些方法用于获取数据集的长度和索引对应位置的数据样本。
DataLoader 类:用于将数据集划分为小批量并提供多进程数据加载功能。它可以指定批量大小、是否随机洗牌、是否使用多进程加载等参数,从而方便地将数据提供给神经网络进行训练。

numpy

NumPy 是 Python 中用于数值计算和数据处理的核心库,提供了高效的多维数组对象(ndarray)、广播功能、数学函数、线性代数运算等工具,为科学计算和数据分析提供了强大的支持。

torchvision中的模块有哪些

在这里插入图片描述
transforms:用于对图像进行预处理和数据增强的模块,包括常见的操作如裁剪、缩放、旋转、翻转、归一化等。

os 模块

Python 中用于与操作系统进行交互的标准库之一,它提供了许多与文件系统和操作系统交互的功能。
1.文件和目录操作:
os.getcwd():获取当前工作目录的路径。
os.chdir(path):改变当前工作目录为指定路径。
os.listdir(path=‘.’):返回指定目录下的所有文件和目录的列表。
os.mkdir(path):创建一个新目录。
os.makedirs(path):递归创建多层目录。
os.remove(path):删除指定路径的文件。
os.rmdir(path):删除指定路径的空目录。
os.removedirs(path):递归删除多层目录。
2.路径操作:
os.path.join(path1, path2, …):拼接路径。
os.path.exists(path):判断路径是否存在。
os.path.isfile(path):判断路径是否为文件。
os.path.isdir(path):判断路径是否为目录。
os.path.basename(path):返回路径中的文件名部分。
os.path.dirname(path):返回路径中的目录部分。
os.path.split(path):将路径分割成目录和文件名两部分。
os.path.splitext(path):分割路径的扩展名。
3.系统环境和变量:
os.environ:一个包含环境变量的字典。
os.getenv(name, default=None):获取指定环境变量的值。
4.执行系统命令:
os.system(command):在操作系统上执行命令。
os.popen(command):以读模式打开一个管道,从而可以读取命令的输出。
5.其他功能:
os.getpid():获取当前进程的进程号。
os.kill(pid, signal):向进程发送信号。
os.path.getsize(path):获取文件大小。
os.path.abspath(path):返回绝对路径。
os.path.normpath(path):规范化路径。

PIL(Python Imaging Library)

Python 中用于图像处理的常用库之一。
1.Image 类:用于表示图像的类,提供了许多图像处理的方法和属性。
open():打开图像文件。
save():保存图像到文件。
show():显示图像。
resize(size, resample=0):调整图像大小。
crop(box):裁剪图像。
rotate(angle, resample=0, expand=False):旋转图像。
transpose(method):转置图像。
convert(mode=None, matrix=None, dither=None, palette=0, colors=256):转换图像的色彩模式。
paste(im, box, mask=None):粘贴图像到另一个图像上。
2.ImageFilter 类:用于应用滤波器和增强图像的类。
BLUR:模糊滤波器。
CONTOUR:轮廓滤波器。
DETAIL:细节滤波器。
EDGE_ENHANCE:边缘增强滤波器。
EMBOSS:浮雕滤波器。
FIND_EDGES:边缘检测滤波器。
SHARPEN:锐化滤波器。
3.ImageDraw 类:用于在图像上绘制各种形状和文本。
point(xy, fill=None):在指定位置绘制点。
line(xy, fill=None, width=0):绘制直线。
rectangle(xy, fill=None, outline=None, width=0):绘制矩形。
ellipse(xy, fill=None, outline=None, width=0):绘制椭圆。
polygon(xy, fill=None, outline=None):绘制多边形。
text(xy, text, fill=None, font=None):在指定位置绘制文本。
4.ImageFont 类:用于加载和操作字体文件的类。
load_default():加载默认字体。
truetype(font, size):加载 TrueType 字体文件。
5.ImageEnhance 类:用于增强图像的亮度、对比度和锐度。
Brightness(image):亮度增强。
Contrast(image):对比度增强。
Sharpness(image):锐度增强。
6.ImageOps 模块:提供了一些图像操作的函数。
autocontrast(image, cutoff=0):自动调整图像的对比度。
colorize(image, black, white):对图像进行着色。
grayscale(image):将图像转换为灰度图像。
invert(image):反转图像的颜色。
mirror(image):镜像图像。

tqdm

tqdm 是一个用于在 Python 中添加进度条的库,它提供了一种简单而灵活的方式来监视循环的进度。tqdm 的全称是 “taqaddum”,是阿拉伯语,意思是 “进步” 或 “前进”。使用 tqdm 可以为循环迭代过程添加一个美观的进度条,帮助用户了解循环的进度以及估计剩余时间。
tdqm 可以用于任何可迭代对象的循环,例如列表、元组、集合等,以及文件读取、网络请求等耗时操作。你只需要将你的迭代对象作为参数传递给 tqdm 函数即可。tqdm 会自动估计迭代的总体进度,并显示进度条、完成百分比、已完成的迭代次数、以及每秒处理的迭代次数等信息。
在这里插入图片描述

matplotlib

import matplotlib.pyplot as plt #导入Matplotlib库,Matplotlib是Python中用于绘制图表的库,pyplot模块提供了类似于MATLAB的绘图接口。
%matplotlib inline#这是一个IPython魔术命令,用于在Jupyter Notebook中内联显示Matplotlib绘图,使得绘图结果直接显示在单元格中。

nn.ReLU inplace参数设为True

在创建 nn.ReLU 实例时,可以选择设置参数 inplace 的值。**当 inplace=True 时,ReLU 函数将会直接修改输入张量,而不会分配新的内存来存储输出。**这样可以节省一些内存空间,但是也会修改输入张量的值,可能会影响计算图的后续操作。
在这里插入图片描述在这里插入图片描述

nn.relu

1.作用:ReLU 是神经网络中常用的激活函数之一,用于增加神经网络的非线性特性。它的输出等于输入的正值部分,小于零的部分被置为零。即,对于输入 x,ReLU 函数的输出为 max(0, x)。
2.非线性特性:ReLU 的主要作用是引入非线性性质,使神经网络能够学习非线性函数。这有助于网络更好地拟合复杂的数据分布和模式。
3.梯度:ReLU 在正值部分的导数为 1,而在负值部分的导数为 0。这意味着当输入为正时,梯度为 1,可以有效地传播梯度;而当输入为负时,梯度为 0,可能会导致梯度消失问题。
4.稀疏激活:由于 ReLU 在负值部分输出为零,因此会导致网络中一部分神经元处于非激活状态,从而产生稀疏激活性质,有助于减少模型过拟合的可能性。
5.适用性:ReLU 在实践中被广泛使用,并且通常在隐藏层中使用。但需要注意的是,对于输出层,根据具体问题的要求,可能需要选择其他类型的激活函数,如 sigmoid、softmax 等。

训练的迭代过程

1.求损失:首先计算模型的输出与真实标签之间的损失。
2.梯度清零:然后将之前计算的梯度清零,这是因为 PyTorch 中梯度是累积的,所以每次迭代前需要将之前的梯度清零。
3.反向传播:接着进行反向传播,计算损失对模型参数的梯度。
4.梯度更新:最后使用优化器根据计算得到的梯度更新模型的参数
在这里插入图片描述
在这里插入图片描述

梯度清零

在进行反向传播之前,必须清除(归零)旧的梯度。因为如果不清除,新的梯度会和旧的梯度累加,这会导致错误的更新方向。这是因为每次迭代应只考虑当前批次的数据。

loss指标计算

在这里插入图片描述
在这里插入图片描述

为什么要加上item?

将张量转换成python数值
在这里插入图片描述

分割预测图像的理解

 correct = 0total = 0running_loss = 0epoch_iou = []model.train()for x, y in tqdm(trainloader):if torch.cuda.is_available():x, y = x.to('cuda'), y.to('cuda')y_pred = model(x) #[128, 2, 128, 128]y= torch.squeeze(y).long()loss = loss_fn(y_pred,y)optimizer.zero_grad() #清零梯度loss.backward()optimizer.step() #使用优化器更新权重with torch.no_grad():y_pred = torch.argmax(y_pred, dim=1)  #torch.Size([128, 128, 128])#print(y_pred.shape)   correct += (y_pred == y).sum().item()total += y.size(0)   #torch.Size([16, 128, 128])#print(y.size)running_loss += loss.item()##iouintersection = torch.logical_and(y, y_pred)union = torch.logical_or(y, y_pred)batch_iou = torch.sum(intersection) / torch.sum(union)batch_iou=batch_iou.cpu().numpy()epoch_iou.append(batch_iou)epoch_loss = running_loss / len(trainloader.dataset)epoch_acc = correct / (total*128*128)  #预测正确像素点/总共像素点

在这里插入图片描述
在这里插入图片描述

在计算损失时,使用 len(trainloader.dataset) 的目的是为了得到整个训练集的样本数量,从而计算出平均损失(average loss)。这是因为损失值通常是单个样本的损失之和,然后再除以样本数量来得到平均损失。

在这里插入图片描述

在计算 epoch 中的准确率(epoch_acc)时,使用 total(total 是一个累加变量,用于记录已经处理过的样本数量。) 是更加准确的做法,因为它记录了实际处理过的样本数量,而不是简单地依赖于数据集的总样本数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 蓝桥打卡Day40

2021、2022年蓝桥杯真题练习 2021年蓝桥杯真题练习A ASCB 卡片C 查找D 货物摆放F 时间显示H 杨辉三角形 2022年蓝桥杯真题练习A 星期计算B 山C 字符统计D 最少刷题数E 求阶乘 2021年蓝桥杯真题练习 A ASC package THL_0412;public class A_2021 {public static void main(Str…

SQLite超详细的编译时选项(十六)

返回:SQLite—系列文章目录 上一篇:SQLite数据库文件格式(十五) 下一篇:SQLite 在Android安装与定制方案(十七) 1. 概述 对于大多数目的,SQLite可以使用默认的 编译选项。但是…

WinForms 零基础进阶教程:文件操作与 CSV 处理

文章目录 文件操作数据存储与文件操作文件存取的好处文件存取的方式文本文件的写入和读取文本文件的删除、复制和移动 目录的操作文件属性操作文件路径 对话框OpenFileDialog对话框SaveFileDialog对话框对话框中CheckPathExists属性的应用 CSV 文件读写与 DataGridView 进阶Dat…

Python基于Django的微博热搜、微博舆论可视化系统

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

Redis限流插件

Redis限流插件: 1:搭建层级结构 同时对 redis.log 授权 chmod 777 redis.log2:确认 redis 版本 3:下载redis配置文件 redis.conf https://redis.io/docs/management/config/ 4:上传/redis/conf作为原始 redis.conf 5:在/redis_6390/conf下编辑redis.conf docker run -it \ --…

美国有哪些银行可以开?美国华美银行开户

很多客户在注册香港公司后,都会选择美国的银行开户,因为目前较好开,简单,快速,便宜,性价比较高的银行 。 华美银行现为全美以华裔为主要市场规模较大的商业银行,总部位于加州,专注于…

营销自动化的未来趋势

​营销自动化在2024年的趋势将继续沿着数字化、个性化和智能化的方向发展。 根据小编全网搜索相关资料信息整理得出,营销自动化有以下可能趋势: 1、深度智能化:随着人工智能技术的进一步发展,营销自动化将更加智能化。通过机器学…

51单片机上面的IIC协议

1、什么是IIC协议 2、模拟IIC协议 51单片机上面是没有与IIC协议相关的寄存器的(没有相关的硬件),不像串口可以配置对应的寄存器达到目的(比如修改波特率9600 or 115200),要配置IIC只能够根据用户手册里面的…

​面试经典150题——LRU 缓存

​ 1. 题目描述 2. 题目分析与解析 首先讲解一下LRU LRU 是“Least Recently Used”的缩写,LRU 算法的基本思想是跟踪最近最少使用的数据,并在缓存已满且需要存储新数据时优先驱逐该数据。 LRU 算法通常的工作原理的简化解释: 当访问或使…

第十五届蓝桥杯python组

第十五届蓝桥杯Python组的比赛涉及了多个编程问题,这些问题覆盖了不同的算法和数据结构知识点。以下是一些题目的描述和解题思路: A题“穿越时空之门”要求计算在二进制和四进制表示下,数字的各数位之和相等的勇者数量。解题的关键是将数字转…

vue.config.js跨域问题解决

讲解视频 问题背景 目标地址: 而当前项目启动是http,协议名不同,所以跨域了 解决步骤和解答 1. 新建vue.config.js文件 2. 添加如下代码: 一般目标路径target写 域名 就可以了 但其实,写路径也可以,…

查看 Linux 接入的 USB 设备速率是 USB2 还是 USB3

查看接入 usb 设备的速率 使用以下命令查看接入的 USB 设备速率(每一行最后的 xxM 字样)。插入设备前查看一次,插入设备后查看一次,对比即可定位到刚插入的设备是哪一条。 lsusb -t命令输出如下图 对照 USB 速率表 对照 USB 速…

EasyRecovery数据恢复软件2024试用版下载安装包

EasyRecovery支持的文件格式非常广泛,几乎涵盖了用户日常所需的所有文件类型。具体来说,它支持恢复的办公文档类型包括Microsoft Word、Excel、PPT、MS office、Adobe PDF、Access等。此外,对于音频文件,EasyRecovery同样支持丰富…

基于matlab的PPG与ECG心率计算

% 清除工作空间变量,关闭所有图形界面 clear; close all;% 读取数据 [a, b] = xlsread(s10_walk.xlsx);% 采样频率 fs = 500;% 选择PPG信号和ECG信号 PPG = a(:, 2); ECG = a(:, end);% 创建时间轴 t = (1:length(PPG)) / fs;% 绘制PPG和ECG的时域图 figure subplot(2,1,1) pl…

初识three.js创建第一个threejs3D页面

说到3D&#xff0c;想必大家都能想到three.js&#xff0c;它是由WebGL封装出来的&#xff0c;接下来&#xff0c;我手把手教大家创建一个简单的3D页面 话尽在代码中&#xff0c;哈哈 大家可以复制代码玩一下 <!DOCTYPE html> <html lang"en"><head&…

【Spring高级】Springboot自动配置类原理

目录 如何引入第三方库第三方库与当前项目Bean重复自定义自动配置类 自动配置类通常位于Spring Boot的自动配置模块中&#xff0c;并且被标记为 Configuration类。这些类使用 Conditional注解来检查某些条件是否满足&#xff0c;如果满足&#xff0c;则创建和配置相关的bean。…

【嵌入式 - 输出驱动电路Open Drain (开漏)和Push-Pull (推挽)】

定义 Open drain 和 push-pull 是两种常见的输出驱动电路。它们在数字电子电路中用于控制信号的输出。让我逐一解释它们&#xff1a; 1. Open Drain (开漏): Open drain 输出端通常连接到地 (GND) 或者一个高电阻 (pull-up) 上。当输出信号为逻辑高电平时&#xff0c;输出端…

【CSS】CSS元素的垂直居中案例

CSS元素的垂直居中案例 1. 绝对定位 缺点 必须使用定位&#xff0c;并且是脱标元素必须给元素设置高度 <div class"container"><div class"box"></div> </div>.container {position: relative;width: 300px;height: 300px;bac…

【Python】从零开始学习Python中的随机模块:实现验证码生成功能

欢迎来CILMY23的博客 本篇主题为 从零开始学习Python中的随机模块&#xff1a;实现验证码生成功能 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏系列&#xff1a; Python | C语言 | 数据结构与算法 | C 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注…

【位运算】Leetcode 丢失的数字

题目解析 268. 丢失的数字 本题的意思就是数组的长度为n&#xff0c;在[0,n]区间中寻找缺失的一个数字 算法讲解 直观思路&#xff1a;排序 Hash&#xff0c;顺序查找缺失的数字 优化&#xff1a;使用异或&#xff0c;首先将[0,n]之间所有数字异或在一起&#xff0c;然后将…