手动深度学习

多层感知机作业-mlp-scratch

  1. 目录

    1.在所有其他参数保持不变的情况下,更改超参数`num_hiddens`的值,并查看此超参数的变化对结果有何影响。确定此超参数的最佳值。

    2.  尝试添加更多的隐藏层,并查看它对结果有何影响。

    3. 改变学习速率会如何影响结果?保持模型架构和其他超参数(包括轮数)不变,学习率设置为多少会带来最好的结果?

    4.  通过对所有超参数(学习率、轮数、隐藏层数、每层的隐藏单元数)进行联合优化,可以得到的最佳结果是什么?

    5. 描述为什么涉及多个超参数更具挑战性。

    6. 如果要构建多个超参数的搜索方法,你能想到的最聪明的策略是什么?


 1.更改超参数‘num_hiddens’

在学习率不变和训练次数不变的情况下,增加隐藏单元的数量,train loss 会明显降低 test acc 曲线也会更加平滑
 

                                                                num_hiddens=64

                                                                 num_hiddens=128

                                                                 num_hiddens=256

                                                                 num_hiddens=512

                                                                 num_hiddens=1024

2. 添加隐藏层数 

  • 注意点:添加隐藏层后(代码中为2个隐藏层)需要注意配置W 和b的大小

W1=[num_input,num_hiddens] b1=[num_hiddens]

W2=[num_hiddens,num_hiddens2] b1=[num_hiddens2]

W3 = [num_hiddens2,num_input] b1=[num_input]

增加隐藏层数 模型变差 Loss变大

  1. #初始化模型参数
    num_inputs, num_outputs, num_hiddens, num_hiddens2 = 784, 10, 256 ,64 #输入784 输出10 一个隐藏层包含256个隐藏单元
    
    W1 = nn.Parameter(torch.randn(  #输入层权重
            num_inputs, num_hiddens, requires_grad=True) * 0.01)  #输入 隐藏层 梯度下降  考虑为什么要随机? 试试全为0或1
    b1 = nn.Parameter(torch.zeros(num_hiddens, requires_grad=True))  #偏差 设成0 偏差和输出宽度保持一致
    W2 = nn.Parameter(   #第二层
        torch.randn(num_hiddens, num_hiddens2, requires_grad=True) * 0.01)
    b2 = nn.Parameter(torch.zeros(num_hiddens2, requires_grad=True))  #偏差是输出 
    W3 = nn.Parameter(   #输出层
        torch.randn(num_hiddens2, num_outputs, requires_grad=True) * 0.01)
    b3 = nn.Parameter(torch.zeros(num_outputs, requires_grad=True))  #偏差是输出 
    
    params = [W1, b1, W2, b2, W3, b3] #W1 b1 第一层 W2 b2第二层
    #模型
    def net(X):
        X = X.reshape((-1, num_inputs)) #先把X拉成二维矩阵 = 28*28 拉成784矩阵
        
        H1 = relu(X@W1 + b1)  # 这里“@”代表矩阵乘法
        H2 = relu(H1@W2+ b2)  #添加隐藏层
        return (H2@W3 + b3)

                          两个隐藏层 256、 64

    两个隐藏层 256、128 

3.学习率

有限大小内 学习率越大  train loss越小  train acc越大 

                                            学习率0.1  隐藏层1层 256

                                           学习率0.2  隐藏层1层 256

                                            学习率0.3  隐藏层1层 256

                                             学习率0.4  隐藏层1层 256

                                                    学习率1  隐藏层1层 256

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值