Muh*_*mel 8 python neural-network torch pytorch
我正在构建一个神经网络,但我不知道如何访问每一层的模型权重。
我试过了
model.input_size.weight
Run Code Online (Sandbox Code Playgroud)
代码:
input_size = 784
hidden_sizes = [128, 64]
output_size = 10
# Build a feed-forward network
model = nn.Sequential(nn.Linear(input_size, hidden_sizes[0]),
nn.ReLU(),
nn.Linear(hidden_sizes[0], hidden_sizes[1]),
nn.ReLU(),
nn.Linear(hidden_sizes[1], output_size),
nn.Softmax(dim=1))
Run Code Online (Sandbox Code Playgroud)
我希望得到重量,但我得到了
“顺序”对象没有属性“input_size”
如果您使用 打印出模型print(model),您会得到
Sequential(
(0): Linear(in_features=784, out_features=128, bias=True)
(1): ReLU()
(2): Linear(in_features=128, out_features=64, bias=True)
(3): ReLU()
(4): Linear(in_features=64, out_features=10, bias=True)
(5): Softmax(dim=1) )
Run Code Online (Sandbox Code Playgroud)
现在您可以访问层的所有索引,因此您可以通过model[4].weight.
根据此处的官方 pytorch 讨论论坛,您可以在nn.Sequential()使用中访问特定模块的权重
model.layer[0].weight # for accessing weights of first layer wrapped in nn.Sequential()
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法,似乎唯一的方法是通过传递来命名每一层OrderedDict
from collections import OrderedDict
model = nn.Sequential(OrderedDict([
('fc1', nn.Linear(input_size, hidden_sizes[0])),
('relu1', nn.ReLU()),
('fc2', nn.Linear(hidden_sizes[0], hidden_sizes[1])),
('relu2', nn.ReLU()),
('output', nn.Linear(hidden_sizes[1], output_size)),
('softmax', nn.Softmax(dim=1))]))
Run Code Online (Sandbox Code Playgroud)
因此,要访问每个层的权重,我们需要通过其自己唯一的层名称来调用它。
例如访问第 1 层的权重 model.fc1.weight
Parameter containing:
tensor([[-7.3584e-03, -2.3753e-02, -2.2565e-02, ..., 2.1965e-02,
1.0699e-02, -2.8968e-02],
[ 2.2930e-02, -2.4317e-02, 2.9939e-02, ..., 1.1536e-02,
1.9830e-02, -1.4294e-02],
[ 3.0891e-02, 2.5781e-02, -2.5248e-02, ..., -1.5813e-02,
6.1708e-03, -1.8673e-02],
...,
[-1.2596e-03, -1.2320e-05, 1.9106e-02, ..., 2.1987e-02,
-3.3817e-02, -9.4880e-03],
[ 1.4234e-02, 2.1246e-02, -1.0369e-02, ..., -1.2366e-02,
-4.7024e-04, -2.5259e-02],
[ 7.5356e-03, 3.4400e-02, -1.0673e-02, ..., 2.8880e-02,
-1.0365e-02, -1.2916e-02]], requires_grad=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9314 次 |
| 最近记录: |