簡體   English   中英

如何在 PyTorch 中提取線性層的權重和偏差?

[英]How can I extract the weight and bias of Linear layers in PyTorch?

model.state_dict() model.parameters()model.named_parameters()的重量和的偏差nn.Linear()模塊分開容納,當量fc1.weightfc1.bias 有沒有一種簡單的pythonic方法來獲得它們?

預期示例與此類似:

layer = model['fc1']
print(layer.weight)
print(layer.bias)

從完整模型來看,沒有。 沒有。 但是您可以獲得該特定Modulestate_dict() ,然后您將擁有一個帶有weightbias dict

import torch

m = torch.nn.Linear(3, 5)  # arbitrary values
l = m.state_dict()

print(l['weight'])
print(l['bias'])

您的代碼中的等效項是:

layer = model.fc1.state_dict()
print(layer['weight'])
print(layer['bias'])

從圖層中提取值。

layer = model['fc1']
print(layer.weight.data[0])
print(layer.bias.data[0])

您可以使用要提取的神經元值而不是 0 索引。

>> nn.Linear(2,3).weight.data
tensor([[-0.4304,  0.4926],
        [ 0.0541,  0.2832],
        [-0.4530, -0.3752]])

您可以為模型中的每個線性層恢復命名參數,如下所示:

from torch import nn

for layer in model.children():
    if isinstance(layer, nn.Linear):
        print(layer.state_dict()['weight'])
        print(layer.state_dict()['bias'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM