深度学习的一个魅力在于神经网络中各式各样的层,例如 全连接层、卷积层、池化层与循环层。虽然PyTorch提供了大量常用的层,但有时候我们依然希望自定义层。
这篇文章介绍如何使用Module来自定义层,从而可以被重复调用。
不含模型参数的自定义层
我们先介绍如何定义一个不含参数的自定义层。事实上,创建自定义层 与 使用 Module类 构造模型类似。
下面的 CenteredLayer 类通过继承 Module类 自定义了一个将输入减掉均值后输出的层,并将层的计算定义在了forward函数里。(这个层里不含模型参数)
import torch
from torch import nn
class CenteredLayer(nn.Module):
def __init__(self):
super(CenteredLayer, self).__init__()
def forward(self, x):
x -= torch.mean(x, dim=0)
return x - x.mean()
net = nn.Sequential(nn.Linear(8, 128), CenteredLayer())
y = net(

本文介绍了如何在PyTorch中创建自定义层,包括不含模型参数的层如CenteredLayer,以及含模型参数的层,如通过ParameterList和ParameterDict管理的参数。示例展示了如何定义和使用这些自定义层。
最低0.47元/天 解锁文章
3367

被折叠的 条评论
为什么被折叠?



