例如:
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个神经元的所有权重和偏差。我知道model.layer[1].weight给了一个层中所有权重的权限,但我也想知道这个权重是什么神经元。
发布于 2020-01-02 20:12:11
假设层中有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.89E-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是下一层第三神经元的重量。
发布于 2020-01-02 20:25:24
一个重量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。
https://stackoverflow.com/questions/59569330
复制相似问题