pycharm实用快捷键:1、ALT + Enter快速引用库 2、ctrl + p看函数需要的参数 3 、按住crtl可以点击库查看源代码
python的学习方法:
关注输入和输出类型 不知道返回值时
多看官方文档 print
关注方法需要什么参数 print(type())
debug
代码来自b站up:我是土堆
python自带的打开图片函数:
form PIL import Image
img_path = "data"
img = Image.open(img_path)
一、pytorch加载数据的模式
二、tensorboard的使用方法
先导入库
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("log")#存储的文件
writer.add_image("tag",img_tensor,global_step,dataformats='CHW')
#img_tensor只接受tensor和numpy数据类型 global是步骤
#最后是格式,默认是(通道,高度,宽度)如果不匹配用.shape方法看numpy的格式然后修改
wirter.add_scalar("tag",scalar_values,global_step)#scalar是y轴,global是x轴画图用
writer.close()
用opencv读取图片的方法:
import cv2
cv_img = cv2.imread(img_path)#cv_img会变成numpy类型
查看tensorboard方法:
先运行然后再终端打开pytorch如果没有输入conda acitvate pytorch
然后在终端输入logdir=事件所在的文件夹名
很多人使用该端口的话可以用tensorboard -- logdir=logs --port=6007改变端口
三、transforms的用法
totensor类型
实现上面的代码
from torchvision impoert transform
from PIL import Image
img_path = "data"
img = Image.open(img_path)
tensor_trans = transform.ToTensor()#生成tool
tensor_img = tensor_trans(img)
归一化
form torchvision import transforms
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
img_norm = trans_norm(img_tensor)
归一化公式:
input[channel]=(input[channel]-mean[channel])/std[channel]
带入0.5得(input-0.5)/0.5 = 2*input-1
input[0,1]
result[-1,1]
Resize:调整图片大小
trans_resize = transform.Resize((512,512))
img_resize = trans_resize(img)#PIL类型
img_resize = trans_totensor(img_resize)#转换tensor类型
Compose:组合
trans_resize_2 = transform.Resize(512)
trans_compose = transforms.Compose([trans_resize_2,trans_totensor])#前后参数输入输出要匹配
image_resize_2 = trans_compose(img)
RandomCrop:随机裁剪
trans_random = transforms.RandomCrop(512)
trans_compose_2 = transforms.Compose([trans_random,trans_totensor])
四、torchvision中的数据集
import torchvision
dataset_transform = torchvision.Compose([
torchvision.transforms.ToTensor()
])
train_set = torchvivion.datasets.CIFAR10(root="data",train=True,transform=dataset_transform,download=True)
五、Dataloader的用法
import torchvision
from utils.data import DataLoader
test_loader = DataLoader(dataset=test_data, bath_size=4,
shuffle=True, num_workers=0, drop_last=False)
#第二个参数为抓取图片的数量,shuffle为true则打乱顺序,
#drop_last为true则去掉剩余的数据
DataLoader会打包好每一个数据需要用for循环读取
test_loader = DataLoader(dataset=test_data, bath_size=4,
shuffle=True, num_workers=0, drop_last=False)
step = 0
for data in test_loader:
imgs, targets = data
step += 1