[英]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.