Anaconda
conda activate pytorch
Dataset和Dataloader
Dataset:提供一种方式去获取数据及其label(如何获取每一个数据及其label+告诉我们一共有多少数据)
Dataloader:为后面的网络提供不同的数据形式
Tensorboard的使用
读数字
from torch.utils.tensorboard import SummaryWriter
# 将对应的事件文件存储到logs文件夹下
writer = SummaryWriter("logs")
# scalar 标量
# tag(str): Data identifier 类似title
# scalar_value(float or string / blobname): Value to save y轴
# global_step(int): Global step value to record 要记录的全局步长值 x轴
# y = x
for i in range(100):
writer.add_scalar("y=2x", 2*i, i)
writer.close()
--logdir = 事件文件所在的文件夹名
--port = 指定端口,防止冲突
tensorboard --logdir=logs
若是同一tag(y=2x),add_scalar了两次,log里事件会累加,可以按需要删除logs下所有的文件,然后重新开始
for i in range(100):
writer.add_scalar("y=2x", 2*i, i)
for i in range(100):
writer.add_scalar("y=2x", 3*i, i)
读图片
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
# 将对应的事件文件存储到logs文件夹下
writer = SummaryWriter("logs")
image_path = "data/train/bees_image/17209602_fe5a5a746f.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
#(512, 768, 3)高度,宽度,通道
print(img_array.shape)
# tag (str): Data identifier
# img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data
# global_step (int): Global step value to record
writer.add_image("test", img_array, 3, dataformats='HWS')
writer.close()
transform的使用(图像变换)
transforms.py工具箱:totensor、 resize ---->可以处理特定格式的图片
torchvision和dataset的结合使用
root:数据集在什么位置
train:为True则是训练集,False则是测试集
transform:对数据集内图片做怎么样的变换
target_transform:对target进行transform
download:为True时,自动从网络下载数据集到root的位置,若已经下载,则不会再次下载
reshape(-1,1)
reshape(行,列)可以根据指定的数值将数据转换为特定的行数和列数,这个好理解,就是转换成矩阵。
reshape(-1,1)这里的-1被理解为unspecified value,意思是未指定为给定的。如果我只需要特定的列数,行数多少我无所谓,我只需要指定列数,那么行数直接用-1代替就行了,计算机帮我们算赢有多少行,反之亦然。所以-1在这里应该可以理解为一个正整数通配符,它代替任何整数。