栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

深度学习笔记(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深度学习笔记(一)

深度学习笔记(一)
    • 说明
    • 环境配置
      • 安装Anaconda
      • 下载资源包
    • 常用指令
    • pycharm 环境配置
    • 两大法宝函数
    • Pytorch加载数据
    • 数据读取相关
      • 1.读取图片数据
      • 2.路径存储
      • 3.Dataset类实例演示
    • 初识Tensorboard
      • 1.简单示例
      • 2.写入图像

说明

本文章部分学习内容来源-b站课程
PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】

环境配置 安装Anaconda

首先去官网下载Anaconda
官网
历史版本

接下来就是漫长的安装过程

安装完成后需要检查是否安装成功,在安装好的程序中点击Anaconda Prompt

有base证明安装成功

下载资源包

在conda相应环境下(例如自己定义某环境)安装相应资源包有以下两种方法(推荐pip)

1.conda命令安装

#在线安装opencv包
conda install opencv-python
#离线安装指定包,需定位到相应文件夹下
conda install --offline ./cudatoolkit-11.3.1-h59b6b97_2.tar.bz2

2.pip命令安装

#在线安装opencv包
pip install opencv-python
#在线安装opencv包(加设防超时限制)
pip --default-timeout=100 install opencv-python
#在线安装opencv包(加设防超时限制并指定镜像源下载,此处是豆瓣,国内还有清华源等)
pip --default-timeout=100 install opencv-python -i https://pypi.douban.com/simple
常用指令
conda activate pytorch #启动conda中定义的pytorch环境
import pytorch #检查pytorch能否被正常调用
jupyter notebook #在当前环境下启动jupyter notebook
torch.cuda.is_available() #检查当前gpu调用是否正常
tensorboard --logdir=logs --port=6007 #打开tensorboard页并指定相应端口
pycharm 环境配置

conda环境配置(pytorch环境下的python.exe,anaconda文件下的conda.exe)

两大法宝函数

dir()函数,能让我们知道工具箱以及工具箱中的分隔区有什么东西(打开、看见)
help()函数,能让我们知道每个工具是如何使用的,工具的使用方法(说明书)

Pytorch加载数据

数据:为一大堆杂乱无序待处理的文件

Dataset:提供一种方式去获取数据及其label(类似于从杂乱数据中获取每项数据的信息,为其编号并得到其标签信息)

from torch.utils.data import Dataset #导入Dataset包

Dataset包中主要重写getitem、add两个类,可选择性重写len类

Dataloader:为后面的网络提供不同的数据形式(类似于数据的打包)

数据读取相关 1.读取图片数据

此处图片读取用到的是PIL中Image类的方法

from PIL import Image
img_path = "" #此处为待读取的图片路径,绝对路径或相对路径均可

# 绝对路径示例 E:\PycharmProjects\learn_pytorch\images\pytorch.png
# 相对路径示例 images/pytorch.png

img = Image.open(img_path) #PIL.Image类型的类实体
img.show() #显示图片
img.size #显示图片尺寸(长宽多少像素)
2.路径存储

此处用到join方法将路径拼接在一起,拼接后的path应为‘dataset/trainants’

import os
root_dir = "hymenoptera_data/train" #此处采用相对路径
label_dir = "ants"
path = os.path.join(root_dir, label_dir) #拼接路径

定义list类型的变量img_path,该变量存储相对应路径下所有文件名

img_path = os.listdir(path)

以下显示了变量的类型和存储信息

可以看到img_path以列表的形式存储了相对应路径下所有文件名

3.Dataset类实例演示
from torch.utils.data import Dataset
from PIL import Image
import os

class MyData(Dataset):

    def __init__(self, root_dir, label_dir):#初始化类
        self.root_dir = root_dir
        self.label_dir = label_dir
        self.path = os.path.join(root_dir, 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.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 = "hymenoptera_data/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
初识Tensorboard

Tensorboard一般用于训练模型中图像的展示,通过图像的展示能得知训练过程是否像预想中那样变化,同时其还可以展示相应训练步数所对应的结果

1.简单示例
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs") 

for i in range(100):
    writer.addd_scalar("y=2x", 2*i, i)

writer.close()
  • writer = SummaryWriter(“logs”)会在项目根目录下创建一个新的文件夹logs,里面会存放相应tensorboard事件文件
  • writer.close()为关闭操作,必不可少

打开事件文件需要在aconda相应环境的控制台下输入以下指令,其中logdir为事件文件所在文件夹名,如果不指定端口默认为6006

tensorboard --logdir=logs 
tensorboard --logdir=logs --port=6007 #指定端口

tensorboard页面会展示相应图表

需要说明的是,每次向writer内写入新的事件时,其实也进入了上次事件中(即原事件依然会存放在事件文件夹中),一般来说有两种解决方案

  • 重新写一个子文件,也就是说创建新的SummaryWriter(“新文件夹”)
  • 删除原有事件文件
2.写入图像

写入图像需要用到一个非常关键的函数,即add_image,该函数定义如下

def add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
  • tag 对应图像的一个title
  • img_tensor 规定图像传入的数据类型,通常为torch.tensor、numpy.array、string
  • global_step 为训练的一个步骤
  • dataformats 为数据格式,如果不是默认的CHW形式需要额外说明

下面为一个传入numpy类型图像的示例

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter("logs")
image_path = "dataset/train/bees_image/16838648_415acd9e3f.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)

writer.add_image("test", img_array, 1, dataformats='HWC')
# y = 2x
for i in range(100):
    writer.add_scalar("y=2x", 2*i, i)

writer.close()

tensorboard页面会展示相应图片

如果想写入新的图像可以把global_step改为2,以此类推

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号