1、python学习中的两大法宝函数
- dir():打开,看见
- help():说明书
dir(torch)
dir(torch.cuda)
dir(torch.cuda.is_available)
help(torch.cuda.is_available)
2、pycharm使用
项目及文件创建、python console控制台的使用
3、pytorch加载数据初认识
- Dataset提供一种方式去获取数据及其label,如何获取每一个数据及其label,告诉我们总共有多少数据
- Dataloader未后面的网络提供不同的数据形式
4、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(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.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 = "dataset/train"
ants_label_dir = "ants"
bees_label_dir = "ants"
ants_dataset = MyData(root_dir,ants_label_dir)
bees_dataset = MyData(root_dir,bees_label_dir)
train_dataset = ants_dataset + bees_dataset
5、Tensorboard的使用
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
#writer.add_image()
for i in range(100):
writer.add_scalar("y=x",i,i)
writer.close()
指定端口,避免端口冲突
- add_image()函数的相关参数要求
- 利用Opencv读取图片,获得numpy型图片数据
cv_img = cv2.imread(image_path)
- 利用numpy.array(),对PIL图片进行转换
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer = SummaryWriter("logs")
image_path = "dataset/train/ants/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
writer.add_image("test",img_array,1,dataformats='HWC')
for i in range(100):
writer.add_scalar("y=2*x",2*i,i)
writer.close()
6、Transforms的使用
from torchvision import transforms
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
#python的用法 =》tensor数据类型
#通过transforms.ToTensor去看两个问题
img_path = "dataset/train/ants/0013035.jpg"
img = Image.open(img_path)
writer = SummaryWriter("logs")
#1、transforms该如何使用(python)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
#print(tensor_img)
writer.add_image("Tensor_img",tensor_img)
writer.close()
#2、为什么我们需要Tensor数据类型
- python中__call__的作用
- ToTensor的使用
- Normalize的使用
7、torchvision中数据集的使用
- 将数据集中的每张图片转换为tensor数据类型,transform使用在dataset当中
8、Dataloader的使用
9、神经网络的搭建-nn.Module的使用
10、卷积操作
- padding
11、最大池化的作用
保留一定的数据特征,同时大大减小数据量。
12、非线性激活ceng
增加非线性特征,增强模型的泛化能力。
13、线性层及其他层介绍
正则化加快神经网络训练速度。
- 特定网络结构:
- Transfomer层
- 线性层
- Dropout层
防止过拟合
14、搭建小实战和Squential的使用
15、损失函数与反向传播
- 交叉熵损失函数
16、现有网络模型使用及修改
- 在vgg16(1000分类)的基础上加上一个线性层用于CIFAR10数据集的十分类问题!
- 修改当前vgg16中的某一层:
17、网络模型的保存与读取
- 模型的保存
- 模型的读取
18、完整模型训练
19、利用GPU训练
tudui = tudui.cuda()
loss_fn = loss_fn.cuda()
imgs = imgs.cuda()
targets = targets.cuda()
谷歌上免费GPU
20、完整的模型验证