簡體   English   中英

來自特定神經元的權重和偏差的 pytorch 訪問

[英]pytorch acess of weights and biases from a spcecific neuron

例如:

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))

我想訪問特定層中 N-TH 神經元的所有權重和偏差。 我知道model.layer[1].weight訪問層中的所有權重,但我也想知道這個權重是什么神經元。

假設層中有 n 個神經元,權重應該是從神經元 [0] 到神經元 [n] 的順序。 例如訪問全連接層的權重

Parameter containing:
tensor([[-7.3584e-03, -2.3753e-02, -2.2565e-02,  ...,  2.1965e-02,
      1.0699e-02, -2.8968e-02], #1st neuron weights
    [ 2.2930e-02, -2.4317e-02,  2.9939e-02,  ...,  1.1536e-02,
      1.9830e-02, -1.4294e-02], #2nd neuron weights
    [ 3.0891e-02,  2.5781e-02, -2.5248e-02,  ..., -1.5813e-02,
      6.1708e-03, -1.8673e-02], #3rd neuron weights
    ...,
    [-1.2596e-03, -1.2320e-05,  1.9106e-02,  ...,  2.1987e-02,
     -3.3817e-02, -9.4880e-03], #nth neuron weights
    [ 1.4234e-02,  2.1246e-02, -1.0369e-02,  ..., -1.2366e-02,
     -4.7024e-04, -2.5259e-02], #(n+1)th neuron weights
    [ 7.5356e-03,  3.4400e-02, -1.0673e-02,  ...,  2.8880e-02,
     -1.0365e-02, -1.2916e-02] #(n+2)th neuron weights], requires_grad=True)

例如

[-7.3584e-03, -2.3753e-02, -2.2565e-02, ..., 2.1965e-02, 1.0699e-02, -2.8968e-02]將是第一個神經元的所有權重

-7.3584e-03 是下一層第一個神經元的權重

-2.3753e-02 是下一層第二個神經元的權重

-2.2565e-02 是下一層第三個神經元的權重

[ 2.2930e-02, -2.4317e-02, 2.9939e-02, ..., 1.1536e-02, 1.9830e-02, -1.4294e-02]將是第二個神經元的所有權重

2.2930e-02 是下一層第一個神經元的權重

-2.4317e-02 是下一層第二個神經元的權重

-2.2565e-02 是下一層第三個神經元的權重

權重 w_ij^L 連接兩個神經元,第 i 個神經元(在 L+1 層中)和第 j 個神經元(在 L 層中):

model[2*L].weight[i, j]  # w_ij^L

其中 L = 0, 1, 2。 注意:我使用 2*L 是因為模型的線性層被索引為 0、2 和 4。

暫無
暫無

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

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