torchvision
为了方便加载以上五种数据库的数据,pytorch团队帮我们写了一个torchvision包。使用torchvision就可以轻松实现数据的加载和预处理。
我们以使用CIFAR10为例:
导入torchvision的库
import torchvision
import torchvision.transforms as transforms # transforms用于数据预处理
def imshow(img):
img = img / 2 + 0.5 #unnormalize
npimg = img.numpy()
plt.imshow(np.transpose(npimg, (1, 2, 0)))
imshow(torchvision.utils.make_grid(images))
torch.utils.data
dataset (Dataset) – 加载数据的数据集。
batch_size (int, optional) – 每个batch加载多少个样本(默认: 1)。
shuffle (bool, optional) – 设置为True时会在每个epoch重新打乱数据(默认: False).
sampler (Sampler, optional) – 定义从数据集中提取样本的策略。如果指定,则忽略shuffle参数。
num_workers (int, optional) – 用多少个子进程加载数据。0表示数据将在主进程中加载(默认: 0)
drop_last (bool, optional) – 如果数据集大小不能被batch size整除,则设置为True后可删除最后一个不完整的batch。如果设为False并且数据集的大小不能被batch size整除,则最后一个batch将更小。(默认: False)
数据加载器,选择
torch.nn 与 torch.nn.functional的区别
Torch
torch会将torch产生的tensor放在GPU中加速运算,就像numpy会把array放在cpu中加速运算一样。另外torch做的和numpy能很好兼容,这样就可以自由的转换numpy array和torch tensor了。
可将torch视作numpy去思考:
np.mean(data)
torch.mean(tensor)
torch张量
torch.is_tensor()
a = torch.randn(1,2,3,4,5)
torch.numel(a)
>>>120
将numpy.narray转成Tensor()
a = np.array([1,2,3])
t = torch.from_numpy(a)
技巧:视torch为np,具体有哪些方法,随用随查。