day24 torch.nn 操作1 入门 一起学 PyTorch吧,PyTorch从入门开始 每天都更新 超详细 参数 常用方法 简单案列 共同学习,共同进步 坚持

torch . nn :神经网络相关模块。
class torch.nn.Parameter():Variable的一种,常被用与模块参数(module parameter)。
Parameters Variable 的子类。Paramenters 和 Modules 一起使用的时候会有一些特殊的属性,即:当 Paramenters 赋值给 Module 的属性的时候,它会自动的被加到 Module的 参数列表中 ( 即:会出现在 parameters() 迭代器中 )。将 Varibale 赋值给 Module 属性则不会有这样的影响。这样做的原因是:我们有时候会需要缓存一些临时的状态 (state),比如:模型中 RNN 的最后一个隐状态。如果没有 Parameter 这个类的话,那么这些临时变量 也会注册成为模型变量。
        Variable Parameter 的另一个不同之处在于, Parameter 不能被 volatile(即:无法设置 volatile=True)而且默认 requires_grad=True Variable 默认 requires_grad=False
参数:
        -- data (Tensor) parameter tensor
        --requires_grad (bool, optional) :默认为 True ,在 BP 的过程中会对其求微分。
class torch . nn . Module:所有网络的基类。你的模型也应该继承这个类。Modules也可以包含其它Modules,允许使用树结构嵌入他们。你可以将子模块赋值给模型属性。
import torch.nn as nn
import torch.nn.functional as F 34 
class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)# submodule: Conv2d
        self.conv2 = nn.Conv2d(20, 20, 5)
    def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))
通过上面方式赋值的 submodule 会被注册。当调用 .cuda() 的时候,submodule 的参数也会转换为 cuda Tensor。
参数:
        -- add_module(name, module) 将一个 child module 添加到当前 modle 。被添加的module可以通过name属性来获取。
例子:
import torch.nn as nn
class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.add_module("conv", nn.Conv2d(10, 20, 4))
        #self.conv = nn.Conv2d(10, 20, 4)
        #和上面这个增加module的方式等价 
model = Model()
print(model.conv)

输出:

Conv2d(10, 20, kernel_size=(4, 4), stride=(1, 1))
children() 返回当前模型 子模块的迭代器。
import torch.nn as nn
class Model(nn.Module):
    def __init__(self):
    super(Model, self).__init__()
    self.add_module("conv", nn.Conv2d(10, 20, 4))
    self.add_module("conv1", nn.Conv2d(20 ,10, 4))
model = Model()
for sub_module in model.children():
    print(sub_module)

输出:

Conv2d(10, 20, kernel_size=(4, 4), stride=(1, 1))
Conv2d(20, 10, kernel_size=(4, 4), stride=(1, 1))
cpu(device_id=None): 将所有的模型参数 (parameters) buffers 复制到 CPUNOTE :官方文档用的 move ,但我觉着 copy 更合理。
cuda(device_id=None): 将所有的模型参数 (parameters) buffers 赋值 GPU 参数说明 :device_id (int, optional):如果指定的话,所有的模型参数都会复制到指定的设备上。
double(): parameters buffers 的数据类型转换成 double
eval(): 将模型设置成 evaluation 模式。 仅仅当模型中有 Dropout 和 BatchNorm是才会有影响。
float(): parameters buffers 的数据类型转换成 float
forward(* input): 定义了每次执行的 计算步骤。在所有的子类中都需要重写这个函数。
half(): parameters buffers 的数据类型转换成 half
load_state_dict(state_dict): state_dict 中的 parameters buffers 复制到module和它的后代中。state_dict 中的 key 必须和 model.state_dict() 返回的 key一致。NOTE:用来加载模型参数。
参数说明:state_dict (dict) –保存 parameters persistent buffers 的字典。
modules(): 返回一个包含 当前模型 所有模块的迭代器。

你可能感兴趣的:(PyTorch,pytorch,深度学习,python,人工智能)