深度学习-多层感知机的从零开始实现

如何增添代码,在一个隐藏层的基础上加入一个新的隐藏层,变为两个隐藏层

单层感知机:

#一个隐藏层
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
发布了25 篇原创文章 · 获赞 11 · 访问量 1404

猜你喜欢

转载自blog.csdn.net/z_mawkish/article/details/105314287