1.合理利用Pycharm中 python console
python console 叫做python控制台, 很方便的边写代码边调试,可以直接输入代码如下图,可以看清楚每一步各个变量的变化,
2.import os
利用其中的API
python环境下对文件,文件夹执行操作的一个模块。
3.Pytorch数据读入之Dataset
Dataset提供一种方式,获取数据和label
from torch.utils.data import Dataset
from PIL import Image ## 读取图片的库,可以对图片进行可视化
import os ## 关于系统操作的库,主要用来对文件路径操作
# dir_path='dataset/hymenoptera_data/train/ants' # 获取数据相对路径/也可以是绝对路径
# import os ## 对数据所在文件路径进行字符串操作
# img_path_list=os.listdir(dir_path) ## 将地址传给os.listdir会吧所有数据地址汇成一个列表,我的数据地址是dir_path='dataset/hymenoptera_data/train/ants'
# img_path_list[0] # 这个列表存的就是每个数据的文件名,我们取出第一个看一下
# 输出:'0013035.jpg' # 和列表操作一样可以逐个读取
创建读取数据的class类
class MyData(Dataset):
'''
读数据的类需要继承Dataset这个类
'''
def __init__(self, root_dir, label_dir): # 初始化主要是为这个所建的类提供全局变量
'''
:param root_dir: 数据集根目录
:param label_dir: 数据集标签的目录,这个只填标签目录即可,我们有函数可以合并这两个目录
####################################
root_dir='dataset/hymenoptera_data/train'
label_dir='ants'
path=os.path.join(root_dir,label_dir) os.path.join()这个函数可以拼接两个文件路径形成一个文件路径
输出:'dataset/hymenoptera_data/train\\ants' 我的数据就是放在dataset/hymenoptera_data/train\\ants里面\\环境里需要用\\
'''
self.root_dir = root_dir ## self 的作用就是把定义的变量设置成全局变量
self.label_dir = label_dir
self.path = os.path.join(self.root_dir, self.label_dir) ## 获取数据地址,只不过这个数据文件名称是标签
self.img_path = os.listdir(self.path)
def __getitem__(self, idx): # item原本是item,在这里我们使用idx
# 取图片中的某一个
'''
img_name = img_path[idx]
print(img_name)
0013035.jpg
'''
img_name = self.img_path[idx] ## 根据idx索引来提取索引所☞的图片的编号
img_item_path = os.path.join(self.root_dir, self.label_dir,
img_name) # 每一个图片的位置'dataset/hymenoptera_data/train\\ants\\0013035.jpg'
## 读取图片
img = Image.open(img_item_path)
## 标签
label = self.label_dir
return img, label
def __len__(self):
'''
返回数据集长度,数据集的长度就是列表文件的长度
:return:
'''
return len(self.img_path)