如何增添代码,在一个隐藏层的基础上加入一个新的隐藏层,变为两个隐藏层
单层感知机:
#一个隐藏层
num_inputs,num_outputs,num_hiddens=784,10,256
#隐藏层的权重参数和偏置参数
W1=torch.tensor(np.random.normal(0,0.01,(num_inputs,num_hiddens)),dtype=torch.float)
b1=torch.zeros(num_hiddens,dtype=torch.float)
#输出层的权重参数和偏置参数
W2=torch.tensor(np.random.normal(0,0.01,(num_hiddens,num_outputs)),dtype=torch.float)
b2=torch.zeros(num_outputs,dtype=torch.float)
params=[W1,b1,W2,b2]
for param in params:
param.requires_grad_(requires_grad=True)
#定义模型
def net(X):
#将原始图片转成一维向量
X=X.view((-1,num_inputs))
#隐藏层变量H的计算
H=relu(torch.matmul(X,W1)+b1)
#输入层的计算
return torch.matmul(H,W2)+b2
多层感知机:
#输入个输为784,输出个输为10,超参数隐藏单元个数为256
num_inputs,num_outputs,num_hiddens1,num_hiddens2=784,10,256,256
#隐藏层的权重参数和偏置参数
W1=torch.tensor(np.random.normal(0,0.01,(num_inputs,num_hiddens1)),dtype=torch.float)
b1=torch.zeros(num_hiddens1,dtype=torch.float)
W2=torch.tensor(np.random.normal(0,0.01,(num_hiddens1,num_hiddens2)),dtype=torch.float)
b2=torch.zeros(num_hiddens2,dtype=torch.float)
#输出层的权重参数和偏置参数
W3=torch.tensor(np.random.normal(0,0.01,(num_hiddens2,num_outputs)),dtype=torch.float)
b3=torch.zeros(num_outputs,dtype=torch.float)
params=[W1,b1,W2,b2,W3,b3]
for param in params:
param.requires_grad_(requires_grad=True)
#定义模型
def net(X):
#将原始图片转成一维向量
X=X.view((-1,num_inputs))
#隐藏层变量H的计算
H1=relu(torch.matmul(X,W1)+b1)
H2=relu(torch.matmul(H1,W2)+b2)
#输入层的计算
return torch.matmul(H2,W3)+b3