4 自定义层
4.1 不带参数的层
- 创建一个CenteredLayer,接受一个输入,输出内容是输入减去输入的均值
1 | import torch |
tensor([-2., -1., 0., 1., 2.])
- 将层作为组件合并到更复杂的模型中
1 | net = nn.Sequential(nn.Linear(8,128), CenteredLayer()) |
tensor(2.0955e-09, grad_fn=<MeanBackward0>)
4.2 带参数的层
- 使用内置函数来创建参数,这些函数可以:管理访问、初始化、共享、保存、加载参数
- 自定义全连接层
1 | class MyLinear(nn.Module): |
Parameter containing:
tensor([[-1.2740, -0.5589, -0.0577],
[ 0.2042, -2.4343, -1.4043],
[ 2.3896, 0.5617, -0.1255],
[-0.7957, -0.7547, -0.5688],
[-1.3496, 0.6484, 0.9639]], requires_grad=True)
tensor([[0., 0., 0.],
[0., 0., 0.]])
- 用自定义层构建模型
1 | net = nn.Sequential(MyLinear(64,8), MyLinear(8,1)) |
tensor([[ 5.7095],
[10.4373]])