机器学习周报(8.19-8.25

2024-08-26 03:44
文章标签 学习 机器 周报 8.25 8.19

本文主要是介绍机器学习周报(8.19-8.25,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 摘要
    • Abstract
    • 1.PyTorch环境的配置及安装
      • 使用PyCharm配置环境
      • 安装配置jupyter
    • 2.两个Python常用函数
    • 3.DataSet
    • 4.TensorBoard的使用
      • 绘制一幅坐标图
      • 使用tendorboard对一幅图片进行操作
    • 5.torchvison中的transforms
    • 总结

摘要

在之前学习了一些机器学习相关理论之后,本周进行了一些简单的代码实操学习,学习了PyTorch环境的配置及安装,学习了DataSet类对图像数据的处理,简单学习了TensorBoard的安装与使用,实操了一些常见的Transforms对图像的变换操作

Abstract

After learning some theories related to machine learning, I have done some simple code operation learning this week, including the configuration and installation of PyTorch environment, the processing of image data by DataSet class, and the installation and use of TensorBoard. Some common Transforms to images are implemented

1.PyTorch环境的配置及安装

安装Anaconda,网址:https://www.anaconda.com/

安装成功之后,打开Anaconda的命令窗口,左侧有base代表安装成功

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

在做不同的项目时,可能遇到不同版本的环境,比如这个项目用到pytorch 0.4,另一个项目用到pytorch 1.0,若你卸载了0.4,安装1.0版本,再碰到0.4版本,就要又卸载1.0版本,安装0.4版本。

Anaconda集成的conda包,创造出两个“房子”,一个是0.4版本,一个是1.0版本,需要哪个版本就使用哪个。

使用conda指令,创建一个“屋子”,-n后面是屋子的名字(可以自己起),python=3.8是python3.8版本。

conda create -n pytorch python=3.8

在这里插入图片描述

conda activate pytorch 激活这个环境
pip list 查看这个环境中的工具包

在这里插入图片描述

接下来安装pytorch,网址:https://pytorch.org/

在这里插入图片描述

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

检验安装是否成功

使用torch.cuda.is_available()来验证计算机的GPU是否可以被pytorch使用

在这里插入图片描述

使用PyCharm配置环境

  • 创建一个pytorch项目

在这里插入图片描述

在Python Console中进行一下输入

在这里插入图片描述
跟在命令行里一样,判断GPU是否可以被pytorch使用

在这里插入图片描述

安装配置jupyter

打开Anaconda命令行,执行

conda activate pytorch
conda install nb_conda (安装一个包
jupyter notebook (启动jupyter

在这里插入图片描述

2.两个Python常用函数

dir():打开,看见(让我们知道工具箱以及工具箱中的分隔区有什么东西)

help():说明书

在这里插入图片描述

例如:dir(torch)可以查看torch下面的一些工具
在这里插入图片描述

对于help()函数,可以让我们知道每个工具是如何使用的,工具的使用方法。(查看的是官方使用文档

在这里插入图片描述

3.DataSet

  • DataSet

DataSet:提供一种方式去获取数据及其label

  1. 如何获取每一个数据及其label
  2. 告诉我们总共有多少个数据

同时对于数据集的组织形式,有两种方式:

  1. 文件夹的名字,就是数据的label
  2. 文件名和label,分别处在两个文件夹中,label可以用txt的格式进行存储

在这里插入图片描述

比如:以下图片的label就是ants
在这里插入图片描述

from torch.utils.data import Dataset
from PIL import Image
import os'''
定义一个class类,继承 Dataset (from torch.utils.data import Dataset)
在类中,定义三个函数:
分别是:初始化 init、获得每一个数据 getitem、数据长度 len。
其中:
1.init:图片所在根路径,标签名,合并路径,将文件夹中的所有图片名字做成一个列表
2.getitem:从列表中逐一取出图片名字,命名为name,再次合并路径,并且把文件名连接在路径之后
用PIL中的Image.open函数,读取(加载)上述路径的文件(命名为img)(这里肯定是图像了),返回 图像img和标签 label(这是getitem的工作)
3.最后用len()返回列表的长度。
'''class MyData(Dataset):def __init__(self,root_dir,label_dir):self.root_dir = root_dirself.label_dir = label_dirself.path = os.path.join(self.root_dir,self.label_dir)self.img_path = os.listdir(self.path)def __getitem__(self, idx):img_name = self.img_path[idx] #获取每一张图片的名字img_item_path = os.path.join(self.path,img_name) #获取某一张图片的相对路径img=Image.open(img_item_path)label=self.label_dirreturn  img,labeldef __len__(self):return len(self.img_path)
'''
定义好MyData类之后,进行实例化这个类,定义参数(一个路径,加一个标签名)
引用之前定义的类,把上述参数,传递进去
'''#蚂蚁的数据集
root_dir = "dataset/train"
ants_label_dir = "ants"ants_dataset = MyData(root_dir,ants_label_dir)#蜜蜂的数据集
bees_label_dir = "bees"
bees_dataset = MyData(root_dir,bees_label_dir)#将两个数据集进行拼接
train_dataset = ants_dataset + bees_dataset

4.TensorBoard的使用

绘制一幅坐标图

安装TensorBoard的package

pip install tensorboard

from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs")
# y=xfor i in range(100):writer.add_scalar("y=x" ,i, i)writer.close()

执行完上述代码会在项目中生成一个logs为名字的事件文件。
接下来执行该事件文件在终端中执行:

tensorboard --logdir=logs --port-6007
注意:logdir=事件文件所在的文件夹名(注意路径问题),可通过port来进行设置端口号

在这里插入图片描述

使用tendorboard对一幅图片进行操作

注意SummaryWriter的函数add_image 传入参数及其格式问题
在这里插入图片描述
在这里插入图片描述

使用numpy.array(),对PIL图片进行转换

在这里插入图片描述

from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np'''
定义一个变量=一张图片的相对路径
用PIL中的Image.open函数,读取(加载)上述路径的文件(命名为img_PIL,格式为PIL.JpegImagePlugin.JpegImageFile)
使用numpy.array()将PIL格式转换为array格式
查看writer.add_image()官方文档 查看例子使用
注意:从PIL到numpy,需要在add_image()中指定shape中每一个数字/维表示的含义(dataformats='HWC',图片的高度,宽度,维度)
'''writer = SummaryWriter("log_1")img_path = "data/train/ants_image/0013035.jpg"
img_PIL = Image.open(img_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)writer.add_image("test", img_array, 1, dataformats='HWC')
writer.close()

在这里插入图片描述

改变title,step,这样可以在训练的时,很方便的看到给modle哪些数据,可以看到每个阶段的输出结果,还可以观察不同step的显示结果

在这里插入图片描述

5.torchvison中的transforms

transforms是一个transforms.py文件,里面有很多类和函数,可以查看官方文档查看使用

在这里插入图片描述

对于tensor数据类型,是我们在训练model时,使用十分方便的类型,里面包含了许多训练model要用的变量
在这里插入图片描述

  • ToTensor的使用

以transforms.ToTensor为例,以为为python中transforms使用,transforms.ToTensor()是一个类,返回一个对象,通过类中的函数实现具体功能

在这里插入图片描述

from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
from PIL import Imageimg_path = "data/train/bees_image/90179376_abc234e5f4.jpg"
img_PIL = Image.open(img_path)#transforms该如何使用(python)
img_tentor = transforms.ToTensor()
img = img_tentor(img_PIL)writer = SummaryWriter("log_2")
writer.add_image("tentor_demo",img)
writer.close()

在这里插入图片描述

  • Normalize的使用

Normalize a tensor image with mean and standard deviation.

# Normalize
trans_norm = transforms.Normalize([1, 0.5, 2], [2, 0.1, 0.2])
img_norm = trans_norm(img)
# print(img_norm)writer.add_image("norm_demo", img_norm, 2)

在这里插入图片描述

  • Resize的使用
# Resize
print(img_PIL.size)
trans_resize = transforms.Resize((256, 256))
# img PIL -> resize -> img_resize PIL
img_resize = trans_resize(img_PIL)
# img_resize PIL -> totensor -> img_resize tensor
img_resize = trans_totensor(img_resize)
writer.add_image("resize", img_resize, 0)
print(img_resize)

在这里插入图片描述

  • Compose使用,对图片组合几种转换一起操作
# Compose-resize
trans_resize2 = transforms.Resize(512)
# PIL -> PIL resize -> tensor resize 其实是一个两步变换,要主要输入的图片的格式
trans_compose=transforms.Compose([trans_resize2,trans_totensor])
img_compose = trans_compose(img_PIL)
writer.add_image("resize", img_compose, 1)

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

  • RandomCrop使用,随机裁剪图片
# RandomCrop
trans_RandomCrop = transforms.RandomCrop(256)
trans_compose_2 = transforms.Compose([trans_RandomCrop, trans_totensor])
for i in range(10):img_crop = trans_compose_2(img_PIL)writer.add_image("RandomCrop", img_crop, i)

总结

本周进行了PyTorch的相关学习,但是对于TensorBoard部分的实际应用,

这篇关于机器学习周报(8.19-8.25的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107452

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件