首页 > 其他分享 >pytorch的学习

pytorch的学习

时间:2023-07-02 10:44:18浏览次数:36  
标签:img self label 学习 pytorch path root dir

三种编译方式的优缺点

 Pytroch中的加载数据

主要涉及了两个类,一个叫Dataset,一个叫Dataloader.

举一个不恰当的例子,我们要在诸多的垃圾(数据)中找到我们所需要的垃圾(数据),Dataset就是将其中的可回收垃圾提取出来,并且将它们进行编号,同时可以根据编号获取相对应的垃圾,同时获取相对应的label.总结就是提供一种方式去获取数据及其label.(包括1.如何获取每一个数据及其label,2.告诉我们总共有多少的数据)

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

下面是使用Dataset类的步骤及编码----(主要是重写两个方法)

def __getitem_(self, index):
    raise NotImplementedError

def _add_(self, other):
    return ConcatDataset([self, other])

Dataset类代码实战

from torch.utils.data import Dataset
//引入图片的相关函数
from PTL import Image
//os库提供了基本的系统文件交互的功能,类似于访问系统文件夹中的内容。
import os
class MyData(Dataset):
  //self相当于java中的this,可以理解为一个全局变量。
  //root_dir就是指某个根文件夹的路径,相对地址
  //label是数据的标签,同时也是存储数据的上一层路径
  def __init__(self,root_dir,label_dir):
    self.root_dir = root_dir
    self.label_dir = label_dir
    self.path = os.path.join(self.root_dir,self.label_dir)
    self.image_path = os.listdir(self.path)
  def __getitem__(self, 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"
ants_dataset = MyData(root_dir, ants_label_dir)

1.os操作示例,比如,获取某一个文件下的所有文件,

dir_path="dataset/train/ants"

img_path_list = os.listdir(dir_path)

img_path_list中就是所有文件名称数组。

2.介绍一个os库下的一个函数--->os.path.join函数-->路径的拼接

root_dir = "dataset/train"

label_dir = "ants"

path = os.path.join(root_dir,label_dir)

TensorBoard的使用一

1.TensorBoard使用

  我们可以看到训练过程中losses的变化,从而判断我们的训练是否是正常的状态

 

From torch.utils.tensorboard import SummaryWriter

 

SummaryWriter类的作用:

官方文档翻译:

将条目直接写入 log_dir 中的事件文件以供 TensorBoard 使用。

`SummaryWriter` 类提供了一个高级 API,用于在给定目录中创建事件文件,并向其中添加摘要和事件。 该类异步更新文件内容。 这允许训练程序调用方法以直接从训练循环将数据添加到文件中,而不会减慢训练速度
具体使用例如绘制一个y=2x图像:

From torch.utils.tensorboard import SummaryWriter

//创建实例
writer = SummaryWriter("log")

//writer.add_image()
//y=2x
for i in range(100):
  writer.add_scalar("y=2x", 2*i, i)
writer.close()

1.add_scalar()方法的使用

作用在于:給summary中添加scalar数据

参数有:tag(String):相当于图表标题,scalar_value(float or String/blobname):Value to save 相当于图表y轴,global_step(int):Global step value to record 相当于图表的横坐标

遇到的问题:爆出错误,版本低,需要安装tensorboard,

安装tensorboard:1.打开anaconda Prompt黑窗口,2.进入pytorch环境(conda activate pytorch,3.使用pip install tensorboard进行安装。4.安装成功

运行文件,会出现一个Logs文件夹下带有一个新文件。

如何打开这个文件==》步骤如下:在pycharm控制台输入tensorboard --logdir=logs --port=6007

注意:当你修改了绘图的x,y轴关系时候,重复的写入,会造成图像的混乱,解决办法:每当训练一个新的模型,就把以往的文件删除;或者官方給的解决办法,可以在此基础上创建一个新的文件夹。

2.add_image()方法的使用

作用在于:給summary中添加image数据

参数有:tag(String):相当于图表标题,img_tensor(torch.Tensor, numpy.array, or string/blobname):Image data,global_step(int):Global step value to record 相当于图表的横坐标\

 

标签:img,self,label,学习,pytorch,path,root,dir
From: https://www.cnblogs.com/cywriting/p/17511798.html

相关文章

  • PMP学习笔记(五)
    06.20星期二 项目进度网络图 员工激励:拖延症和帕金森定律。减少估算时间和磨洋工的机会 计算期望时间,默认是贝塔分布 搞清楚关键路径:总是差=0 总浮时:在不影响整体时间的前提下可以推迟的时间;自由浮时:在不影响后一个任务的启动日期的前提下可以推迟的时间 重要干系人发生变化,应首......
  • 菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式
    一、概述。在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架也是界面把信息传输到Contorller层的一种架构,通过这个架构可以让我们把页面和Contorller层解耦,使得开发人员的分工更加明确。二、代码演......
  • atx-agent学习(2)-安装minitouch的过程
    minitouch是帮助模拟手机触摸的工具,atx-agent不安装它也可以.首先,确定minitouch的下载地址,如下面地址所示:'https://github.com/openatx/stf-binaries/raw/0.3.0/node_modules/@devicefarmer/minitouch-prebuilt/prebuilt/arm64-v8a/bin/minitouch'不过这里面arm64-v8a......
  • 人大金仓学习之二_ksh和kddm的学习
    人大金仓学习之二_ksh和kddm的学习摘要承接上一篇文章主要是这里总结一下ksh相关的文档.这里学习了很多文档:https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys-kddmhttps://help.kingbase.com.cn/v8/perfor/sql-op......
  • 人大金仓学习之一_kwr的简单学习
    人大金仓学习之一_kwr的简单学习摘要周末在家想着学习一下数据库相关的内容.网上找了不少资料,想着直接在本地机器上面进行一下安装与验证理论上linux上面应该更加简单.windows上面可能不如linux方便主要是记录一下使用和注意事项.ISO下载直接在人大金仓的官网上面......
  • 「学习笔记」CDQ分治
    CDQ分治的思想最早由IOI2008金牌得主陈丹琦在高中时整理并总结,目前这个思想的拓展十分广泛。优点:可以将数据结构或者DP优化掉一维缺点:这是离线算法。引入让我们来看一个问题有$n$个元素,第$i$个元素有$a_i,b_i,c_i$三个属性,设$f(i)$表示满足$a_j\l......
  • Java第一周学习
    6.25周天事项:开始着手java的初步学习计划,跟随B站博主韩顺平0基础开始学习问题:Java作为一门新入手的语言不同于c/c++的学习方式,起初理解不容易6.26周一事项:开始进入正常java课程的学习,预计完成Java语言编程和操作环境在本机上的安装问题:安装环境相对c/c++较为复杂,hellow......
  • css学习(一)
    css引入内联样式<divstyle="color:red;font-size:30px;">我是div元素</div>2.内部样式<style>/*找到class为.div-one的元素*/.div-one{color:red;font-size:30px;background-color:orange;}</style&g......
  • vue 学习
    1.vue基础2.vue-cli3.vue-router4.element-ui5.vue3vue是什么?是一套用于构建用户界面的渐进式(vue可以自底向上的逐层的应用简答应用只需要一个轻量小巧的核心库复杂应用可以引入各式各样的vue插件)的javascript的框架。尤雨溪开发的。vue特点1.组件化模式,提高......
  • day1 latex学习
    【排版】用Overleaf速成LaTeX代码(从入门到开门)_overleaf页码_ayaishere_的博客-CSDN博客\section{}\subsection{}公式\begin{equation}\end{equation}表格\begin{table}\end{table}引用文献\bibliographystyle{格式}\bibliography{}数学公式https://latex.......