深度学习Pytorch(二)

简介: 深度学习Pytorch(二)

深度学习Pytorch(二)

前言:关于Pycharm终端显示PS而不显示虚拟环境名

解决办法:

  1. 打开Pycharm的设置(File——>setting),找到Tools,点击Terminal
  2. 可以看到Shell path处给的路径是powershell.exe,所以终端才会一直显示PS
  3. 将此处路径改为 C:\Windows\system32\cmd.exe,一般路径都是这个,改好之后点击OK即可
  4. 关掉设置后重新打开终端,就可以看到自己的虚拟环境名了

一、Python文件、Python控制台、Jupyter的对比

  1. 代码是以块为一个整体运行的话:

    Python文件:块是所有行的代码

    ​ 优点:通用,传播方便,适用于大型项目

    ​ 缺点:需要从头运行

    Python控制台:以任意行为块运行

    ​ 优点:显示每个变量属性

    ​ 缺点:不利于代码阅读及修改

    Jupyter:以任意行为块运行的

    ​ 优点:利于代码阅读及修改

    ​ 缺点:环境需要配置

二、Pytorch加载数据

Dataset类:

提供一种方式去获取数据及其label,它的功能是如何获取每一个数据及其label,并告诉我们总共有多少的数据

Dataloader类:

为后面的网络提供不同的数据形式

  1. 在Pycharm中创建一个read_data的Python文件

    from torch.utils.data import Dataset
    help(Dataset)  #或者直接使用Dataset??

    使用以上代码可以查看Dataset类的用法

  2. 下面是读取数据的具体代码

    from torch.utils.data import Dataset
    from PIL import Image
    import os
    class MyData(Dataset):
        def __init__(self,root_dir,label_dir):     #root_dirw为ants目录上层目录,label_dir为ants目录,此ants目录的目录名即为标签名
            self.root_dir=root_dir
            self.label_dir=label_dir
            self.path=os.path.join(self.root_dir,self.label_dir)   #拼接
            self.img_path=os.listdir(self.path)     #得到ants目录中所有图片的名字列表
    
        def __getitem__(self, idx):    #idx为编号
            img_name=self.img_path[idx]
            img_item_path=os.path.join(self.root_dir,self.label_dir,img_name)   #拼接
            img=Image.open(img_item_path)
            label = self.label_dir
            return  img,label
        def __len__(self):
            return len(self.img_path)
    
    root_dir="dataset/train"
    ants_label_dir="ants"
    bees_label_dir="bees"
    ants_dataset=MyData(root_dir,ants_label_dir)   #创建蚂蚁数据集
    bees_dataset=MyData(root_dir,bees_label_dir)    #创建蜜蜂数据集
    train_dataset=ants_dataset+bees_dataset      #将蚂蚁数据集和蜜蜂数据集进行拼接
    img,label=train_dataset[0]      #相当于直接调用__getitem__函数,返回两个参数
    img.show()

    注意:这里采用的是以文件夹名来作为标签名的情况,如果标签名比较复杂,还有一种方式即采用两个文件夹,一个文件夹里放图片,另一个文件夹放对应名称的txt文件,每个txt文件里存有标签名。

三、TensorBoard的使用(add_scalar的使用)

请先看前言!

进入Pytorch环境后安装tensorboard:

pip install tensorboard

新建一个Python文件:

from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter("logs")   #存储到logs文件夹下

# writer.add_image()
# y=x
for i in range(100):
    writer.add_scalar("y=x",i,i)    #第一个参数是标题,第二个参数是y轴,第三个参数是x轴
writer.close()

run以下以上代码后会生成一个logs文件夹,里面有我们的事件文件!

之后进入Pycharm终端,确保在Pytorch环境中,输入以下命令:

tensorboard --logdir=logs --port=6007   #logdir为事件文件所在文件夹名,port指定端口

会出现一个网址,进入即可得到咱们的scalar!

注意:每向wirter写入一个新的事件时,会保留上一次的事件,所以当我们需要变换函数的时候,一种方法是将logs文件夹中的事件文件全部删除,重新run!

四、TensorBoard的使用(add_image的使用)

(后面学习用,这次不用)进入Pytorch环境安装opencv:

pip install opencv-python
from PIL import Image
image_path="dataset/train/ants/0013035.jpg"
img=Image.open(image_path)
print(type(img))

以上使用PIL获取图片,得到的图片格式是

下面是add_image的三个参数,可以看到第二个参数只能使用三个类型,所以我们使用PIL的方式无法满足要求,但其中的numpy类型,可利用Opencv读取照片获得numpy型图片数据。

Args:
            tag (str): Data identifier
            img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data
            global_step (int): Global step value to record

此次不使用opencv获取图片,我们使用numpy.array(),对PIL图片进行转换

import numpy as np
img_array=np.array(img)
print(type(img_array))

结果是,符合要求

综上代码如下:

import numpy as np
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
writer=SummaryWriter("logs")   #存储到logs文件夹下

image_path="dataset/train/ants/69639610_95e0de17aa.jpg"
img_PIL=Image.open(image_path)    #得到PIL格式的图片
img_array=np.array(img_PIL)      #将PIL格式的图片转换为numpy格式的
print(type(img_array))
print(img_array.shape)
#从PIL到numpy,需要在add_image()中指定shape中每一个数字/维表示的含义
writer.add_image("train",img_array,1,dataformats='HWC')  #dataformats参数为高度H,宽度W,通道C,不清楚图片的类型就用图片.shape查看
#第二个参数为指定步数
# y=x
for i in range(100):
    writer.add_scalar("y=x",i,i)    #第一个参数是标题,第二个参数是y轴,第三个参数是x轴
writer.close()

run后进入Pycharm终端,确保在Pytorch环境中,输入以下命令:

tensorboard --logdir=logs --port=6007   #logdir为事件文件所在文件夹名,port指定端口

打开网页即可!

更多内容请关注我的博客:bgemini.com

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch深度学习 ? 带你从入门到精通!!!
🌟 蒋星熠Jaxonic,深度学习探索者。三年深耕PyTorch,从基础到部署,分享模型构建、GPU加速、TorchScript优化及PyTorch 2.0新特性,助力AI开发者高效进阶。
PyTorch深度学习 ? 带你从入门到精通!!!
|
3月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
210 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
6月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
295 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
10月前
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
543 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
9月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch PINN实战:用深度学习求解微分方程
物理信息神经网络(PINN)是一种将深度学习与物理定律结合的创新方法,特别适用于微分方程求解。传统神经网络依赖大规模标记数据,而PINN通过将微分方程约束嵌入损失函数,显著提高数据效率。它能在流体动力学、量子力学等领域实现高效建模,弥补了传统数值方法在高维复杂问题上的不足。尽管计算成本较高且对超参数敏感,PINN仍展现出强大的泛化能力和鲁棒性,为科学计算提供了新路径。文章详细介绍了PINN的工作原理、技术优势及局限性,并通过Python代码演示了其在微分方程求解中的应用,验证了其与解析解的高度一致性。
3041 5
PyTorch PINN实战:用深度学习求解微分方程
|
10月前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
3056 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
机器学习/深度学习 监控 PyTorch
深度学习工程实践:PyTorch Lightning与Ignite框架的技术特性对比分析
在深度学习框架的选择上,PyTorch Lightning和Ignite代表了两种不同的技术路线。本文将从技术实现的角度,深入分析这两个框架在实际应用中的差异,为开发者提供客观的技术参考。
357 7
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
890 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
|
机器学习/深度学习 算法 数据可视化
如果你的PyTorch优化器效果欠佳,试试这4种深度学习中的高级优化技术吧
在深度学习领域,优化器的选择对模型性能至关重要。尽管PyTorch中的标准优化器如SGD、Adam和AdamW被广泛应用,但在某些复杂优化问题中,这些方法未必是最优选择。本文介绍了四种高级优化技术:序列最小二乘规划(SLSQP)、粒子群优化(PSO)、协方差矩阵自适应进化策略(CMA-ES)和模拟退火(SA)。这些方法具备无梯度优化、仅需前向传播及全局优化能力等优点,尤其适合非可微操作和参数数量较少的情况。通过实验对比发现,对于特定问题,非传统优化方法可能比标准梯度下降算法表现更好。文章详细描述了这些优化技术的实现过程及结果分析,并提出了未来的研究方向。
444 1