Anaconda Pytorch 深度学习入门记录
环境
我这里用的是Anaconda最新的版本24.9.2,创建的pyton版本是3.9,虚拟环境名叫pytorch,下载的pytorch版本是12.1
初步配置
创建虚拟环境
首先进入Anaconda的终端,然后运行conda create -n xxx python=3.9
创建一个虚拟环境,这里xxx是虚拟环境的名字,后面跟着的是python的版本
然后用conda activate xxx
激活环境,退出环境用conda deactivate xxx
如果需要删除环境,用conda rm -n xxx --all
删除
下载pytorch
然后进入pytorch的官网,下滑找到自己需要的pytroch版本,然后复制出现的命令在conda对应的虚拟环境中进行下载 (漫长的等待...这里由于网络问题会下载失败,重试几次即可,注意有显卡的不要到网上去换镜像源,新版本的pytorch用镜像源下载不成功,是CPU版本的)
下载完成后进入python环境,然后import torch
导入torch库,再用torch.cuda.isavailiable()
查看是否正确安装好pytorch,如果安装成功,有显卡的出现true,没有的出现false
配置pycharm
这里我下载的是最新的pycharm,进入pycharm之后需要自己配置环境,新建一个项目需要获取Anaconda的环境,如下所示:
如果没有自动弹出,选择自定义环境后选择现有,类型选择conda,然后路径到conda的目录中的Liabrary的bin的conda.bat,就可以自动配置环境了,要注意的是最下面的环境要选择对应的虚拟环境!!!比如前面创建的是pytorch就选择pytorch,不能默认!!!!,之后创建项目就可以了
同样的,进入项目后在终端中import torch
导入torch库,再用torch.cuda.isavailiable()
查看是否正确安装好pytorch,如果安装成功,有显卡的出现true,没有的出现false
安装Jupyter Notebook
在新版的pytorch和python中,直接用conda install nb_conda
是不行的,要用conda install nb_conda_kernels
下载,完成之后输入jupyter notebook
就可以进入界面,然后创建一个新的jupyter book项目即可
同样的,我们在book中import torch
导入torch库,再shift + enter
后,用torch.cuda.isavailiable()
,然后按下shift + enter
查看是否正确安装好pytorch,如果安装成功,有显卡的出现true,没有的出现false
这里shift+enter
的作用是切换到下一个代码块并且运行上一个代码块,如果没报错说明成功
pytorch两大法宝函数
其中dir()
的作用类似于输出索引,告诉你package中有什么东西,help()
的作用就是告诉你如何使用这个包,比如函数的用法
指明索引中的包含关系的时候用.
来递进
加载数据集
在pycharm中使用from torch.utils.data import Dataset
,或者在jupyter notebook中Dataset??
可以看到对于数据集的解释和用,主要就是所有的数据集都要去继承Dataset这个类,然后重写__getitem__
和__len__
这两个函数。
__getitem__
函数主要作用就是获取数据集的对应数据及其label,__len__
函数主要作用就是获取数据集的大小/长度
设置数据集
以图片数据集为例,设置图片数据集首先需要图片的路径,这里用导入os
库可以将获取一整个文件夹的资源路径,并且作为一个字典列表来使用
具体代码如下
点击查看代码
from torch.utils.data import Dataset
import os
from PIL import Image
class Mydata(Dataset): #创建一个数据集类,继承Dataset类
def __init__(self,root_dir,label_dir):
self.root_dir=root_dir # 设置数据集的根目录--'dataset/hymenoptera_data/train'
self.label_dir=label_dir # 设置数据集的标签目录--'ants'
self.path =os.path.join(self.root_dir,self.label_dir) # 将目录拼起来,作为一个完整的路径--'dataset/hymenoptera_data/train\\ants'
self.image_path=os.listdir(self.path) #数据集路径:读取资源路径中的图片资源,并且变成一个字典列表,每个索引对应一个图片资源
def __getitem__(self, idx): # 创建一个方法获取每个图片资源的label
image_name=self.image_path[idx] # 通过字典列表的索引值获取图片名字
image_item_path=os.path.join(self.root_dir,self.label_dir,image_name) # 拼合路径,获取每一个图片资源的路径--'dataset/hymenoptera_data/train\\ants\\0013035.jpg'
image=Image.open(image_item_path) # 通过图片路径读取图片
label=self.label_dir # 返回图片对应的标签
return image,label
def __len__(self): # 返回数据集的长度
return len(self.image_path)
root_dir ="dataset/hymenoptera_data/train"
ants_label_dir="ants"
bees_label_dir="bees"
ants_data_set=Mydata(root_dir,ants_label_dir) # 获取蚂蚁数据集
bees_data_set=Mydata(root_dir,bees_label_dir) # 获取蜜蜂数据集
train_dataset=ants_data_set+bees_data_set # 直接整合成数据集作为训练数据,也是一个字典列表
配置Tensorboard
Tensorboard的作用是进行数据可视化。这里需要先使用pip install tensorboard
下载tensorboard包,然后from torch.utils.tensorboard import SummaryWriter
导入。具体的代码如下:
点击查看代码
from torch.utils.tensorboard import SummaryWriter # 导入tensorboard包
writer=SummaryWriter("logs") # 将输出的文件存放在logs文件夹中
x = range(100)
for i in x:
writer.add_scalar('y=2x', i * 2, i) # 参数分别为 图像的描述 Y轴 X轴
writer.close()
运行tensorboard的时候就在终端中输入 tensorboard --logdir=xxx
即可,端口号也可以用--port=xxx
进行配置,然后注意logdir需要用 绝对路径
Tensorboard中显示图像
通过查看writer.add_image的使用方法可以发现图像的读取要求图像为array数组格式的,所以使用numpy将图像转为array格式(opencv也可以),通过print(type(image))查看图像的格式。然后通过image中的type可以查看是否为CHW,即通道数、高度、宽度,不是的话在后面声明格式即可
globalstep的作用可以说是在哪个阶段显示出什么图片
点击查看代码
image_path ="dataset/hymenoptera_data/train/ants_image/28847243_e79fe052cd.jpg" # 图像路径
image = Image.open(image_path) # 打开图像
image_array= np.array(image) # 将图像转为数组形式
writer.add_image("test",image_array,1,dataformats="HWC")