pytorch 层、块、网络、参数、GPU

一、层和块

  • 层:nn.Linear()nn.ReLU()都是一个层
  • 块: 由许多层组成,可由nn.Squential()将层按照顺序串联起来。块可以包含代码。

二、网络中(块和层)的参数访问

  • 从已有的模型访问参数,因为有的模型是通过 nn.Sequential() 按照顺序组成,像一个列表,所以可以通过访问类似于列表的方式进行访问
import torch
from torch import nn
net = nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 1), nn.ReLU())
net.state_dict()

# output
OrderedDict([('0.weight',
              tensor([[-0.0496, -0.0753,  0.2943, -0.4262],
                      [ 0.2756, -0.0456, -0.2515, -0.0638],
                      [-0.3028, -0.4963, -0.0655,  0.4014],
                      [-0.0471, -0.3199,  0.1669,  0.4105],
                      [-0.3673,  0.0115,  0.3379, -0.3550],
                      [-0.3813,  0.4021, -0.4041, -0.3988],
                      [ 0.3006,  0.0657,  0.1426,  0.3859],
                      [-0.4356, -0.2792,  0.1333,  0.2652]])),
             ('0.bias',
              tensor([-0.4544,  0.1838, -0.0748,  0.4512,  0.1050,  0.2546,  0.0034,  0.1392])),
             ('2.weight',
              tensor([[ 0.2673, -0.1137,  0.1411,  0.2245,  0.0517,  0.2765, -0.0941,  0.2959]])),
             ('2.bias', tensor([-0.0631]))])

这里的没有指定要访问那一层,所以以字典的形式全部打印出来。这里的0.weight0.bias代表的是第0层的weightbias参数,因为nn.ReLU()没有参数。所以无法打印出来,但是不能忽略其为一层,所以下一个全连接层按照其顺序的第二个顺序定义。

net[2].state_dict()

# output
OrderedDict([('weight', tensor([[-0.0578, 0.2847, 0.0501, -0.1246, 0.2490, -0.0303, ,0.1356, 0.2373]])), ('bias', tensor([0.1629]))])

其输出包括有哪几种参数,比如全连接层(nn.Linear())有权重(weight)和偏置(bias)两类参数

net[2].bias:属于Parameter类
其不仅包括bias的数值,还有其他一些信息,如是否要进行梯度计算的标识符require_grad和梯度grad
其数值可以通过 net[2].bias.data访问
其梯度可以通过net[2].bias.grad访问
  • net.add_module(‘block name’, block())
  • 参数初始化,定义完初始化的函数后,可以用net.apply(init_method)方法进行初始化

三、读写文件

  • 加载和保存张量
torch.save(x, 'file_path')
x = torch.load('file_path')
  • 加载和保存模型参数
    一般只保存模型的参数,不保存整个模型的框架
    只保存参数
# 只保存参数
torch.save(net.state_dict(), 'net.params')
# 加载
net_instance = net()
net_instance.load_state_dict(torch.load('net.params'))
net_instance.eval() 

四、GPU

你可能感兴趣的:(4.,Pytorch,pytorch,python,深度学习)