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



