动手学深度学习(pytorch版)小知识的总结

文章目录

    • 一、 tensor.data 是用于更改w,b的值,而不影响计算图的反向传播而存在的。
    • 二、 使用torch.utils.data读取数据
    • 三、 搭建网络
    • 四、多继承
    • 五、torchvision
    • 六、H x W x C → C x H x W
    • 七、pytorch中的维度概念(dim=0,1)
    • 八、为什么可以用交叉熵作为损失函数
    • 九、ImportError: DLL load failed: 页面文件太小,无法完成操作。

一、 tensor.data 是用于更改w,b的值,而不影响计算图的反向传播而存在的。

二、 使用torch.utils.data读取数据

import torch.utils.data as Data

batch_size = 10
# 将训练数据的特征和标签组合
dataset = Data.TensorDataset(features, labels)
# 随机读取小批量
data_iter = Data.DataLoader(dataset, batch_size, shuffle=True)
for X, y in data_iter:
    print(X, y)
    break

三、 搭建网络

class LinearNet(nn.Module):
    def __init__(self, n_feature):
        super(LinearNet, self).__init__()
        self.linear = nn.Linear(n_feature, 1)
    # forward 定义前向传播
    def forward(self, x):
        y = self.linear(x)
        return y
    
net = LinearNet(num_inputs)
  • 或用nn.Sequential来更加方便地搭建网络,Sequential是一个有序的容器,网络层将按照在传入Sequential的顺序依次被添加到计算图中。
# 写法一
net = nn.Sequential(
    nn.Linear(num_inputs, 1)
    # 此处还可以传入其他层
    )

# 写法二
net = nn.Sequential()
net.add_module('linear', nn.Linear(num_inputs, 1))
# net.add_module ......

# 写法三
from collections import OrderedDict
net = nn.Sequential(OrderedDict([
          ('linear', nn.Linear(num_inputs, 1))
          # ......
        ]))
  • 通过net.parameters()来查看模型所有的可学习参数,此函数将返回一个生成器。
for param in net.parameters():
    print(param)
  • 注意:torch.nn仅支持输入一个batch的样本不支持单个样本输入,如果只有单个样本,可使用input.unsqueeze(0)来添加一维。

四、多继承

  • 由于要继承nn.Module包来搭建网络,这里补充一下多继承的知识。
  • python 多继承详解
  • python中super的用法实例解析

五、torchvision

torchvision包是服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision主要由以下几部分构成:

  1. torchvision.datasets: 一些加载数据的函数及常用的数据集接口;
  2. torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;
  3. torchvision.transforms: 常用的图片变换,例如裁剪、旋转等;
  4. torchvision.utils: 其他的一些有用的方法。

六、H x W x C → C x H x W

  • transform = transforms.ToTensor()使所有数据转换为Tensor,如果不进行转换则返回的是PIL图片。transforms.ToTensor()将尺寸为 (H x W x C) 且数据位于[0, 255]的PIL图片或者数据类型为np.uint8的NumPy数组转换为尺寸为(C x H x W)且数据类型为torch.float32且位于[0.0, 1.0]的Tensor。

七、pytorch中的维度概念(dim=0,1)

理解PyTorch中维度的概念
Understanding dimensions in PyTorch

八、为什么可以用交叉熵作为损失函数

为什么交叉熵能作为损失函数及其弥补了平方差损失什么缺陷

九、ImportError: DLL load failed: 页面文件太小,无法完成操作。

  • 进程开的太多了,因为pycharm里面如果没有那行exit with 0 就不算结束,把之前的都关了就行,如果没有多开,那就检查后台的进程。。。关掉就行

你可能感兴趣的:(pytorch)