1. 法宝函数、编译器的初级使用和使用Dataset
本篇博客,主要记录学习pytorch 中常用的"法宝函数"、Pycharm、cmd、jupyter notebook 的使用比较,以及 pytorch 中 Dataset的基本使用。
下面我主要从这三点进行介绍
学习 python 的"法宝函数"
python常常被戏称为胶水语言,以数量庞大、功能齐全的第三方库而出名;这也说明了python难以完全掌握,需要灵活使用帮助文档,这也是我介绍这一节的原因!
这里,我主要介绍两个python自带的函数,dir() 函数,和 help()函数。
下面,我们打开jupyter noteboook 运行一下子,查看效果:
dir() 函数
倘若你经常使用 windows 的cmd,那么你一定了解 dir 命令。说白了 dir就是用来显示当前目录下的文件信息(包括文件、函数、类等信息),python中的dir()函数也是如此,用于显示模块中的文件,或者是类内的函数。
help() 函数
help()函数主要是查看帮助文档,可以使函数的帮助文档,也可以是 类的帮助文档,甚至是模块的;当然了,使用help()往往是用于帮助我们理解类的继承,函数的功能以及调用方法。
如下所示:
同时 jupyter notebook 还支持使用 Dataset ?? 的形式来查看帮助文档
Pycharm、cmd、jupyter notebook的使用比较
pycharm
使用pycharm书写文件往往是使用大的项目
jupyter notebook
使用块来进行运行,更加简洁明了,但是配置起来较为麻烦
pycharm 上的 python console
常常用于代码的调试,因为可以看到变量的类型和方法。因为之前的 pycharm 和 jupyter notebook 都比较常用,这里主要介绍一下 pycharm 下的 python console
Dataset 读取数据集
数据集的组织形式:
- 文件名就是label
- 直接 xml、json或者是xml
没用过Dataset不用怕,首先查看他的帮助文档:
根据帮助文档,知道继承这个抽象类需要做着几件事情
from torch.utils.data import Dataset
import os
from PIL import Image
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_path = os.path.join(self.path, img_name)
img = Image.open(img_path)
label = self.label_dir
return img, label
def __len__(self):
return len(self.img_path)
train_path = r"F:\projects\pycharm\pytorch_dl\test\hymenoptera_data\train"
label_ants = 'ants'
label_bees = 'bees'
data_ants = MyData(train_path, label_ants)
data_bees = MyData(train_path, label_bees)
print(len(data_bees))
print(len(data_ants))
data_all = data_ants + data_bees
print(len(data_all))
img_ant, label_ant = data_all[0]
img_bee, label_bee = data_all[121]
主要是使用了 os 库
import os
os.path.join() #用于路径连接,主要是解决 Linux 和windows下路径符号的问题
os.listdir() #显示路径下的文件,结果是一个列表
PIL中的Image类别
Image.open()进行打开图片