多层感知机的从零实现

128个参数的隐藏层应该算是比较好的了,尝试性增加了层数反而test acc非常的不稳定,最后降低了学习率增加了次数。这个应该算是我调到目前比较好的

增加了一个256的hidden layer,epoch设为20,训练过程感觉train和loss都挺好,test_acc有波动,有友友帮忙解释下吗

1.在学习率不变和训练次数不变的情况下,增加隐藏单元的数量,train loss 会明显降低 test acc 曲线也会更加平滑
实验如下:
num_hiddens尝试了4,8,16,32,64,128,512 学习率0.1,num_eporch=20不变
num_hiddens = 4 train loss > 0.5 直接报错了


num_hiddens = 8
num_hidden_8
num_hiddens = 16
num_hidden_16
num_hiddens = 32
num_hidden_32
num_hiddens = 64
num_hidden_64
num_hiddens = 128
num_hidden_128
num_hiddens = 512
num_hidden_512

2.尝试添加更多的隐藏层,并查看它对结果有何影响。
结论:增加隐藏层,发现效果反而更差了
2层 num_hiddens = 64 epoch =20 lr = 0.1
num_hidden_64
3层 num_hiddens = 64 epoch =20 lr = 0.1


4层 num_hiddens = 64 epoch =20 lr = 0.1
lQDPJxa2TIV6oiHNATfNAb-wEh3dUm4c9rgDK76txUBAAA_447_311

3.改变学习速率会如何影响结果?保持模型架构和其他超参数(包括轮数)不变,学习率设置为多少会带来最好的结果?
结论:学习率太大,无法训练,学习率适当增大,能够使模型尽快收敛,学习率太小,收敛太慢
epoch=20 2层网络 num_hiddens = 256
lr = 1
lr1
lr = 0.2
lr0.2
lr = 0.1
lr0.1
lr = 0.01
lr0.01

reduction=‘none’
实在不行的话,进入d2l找到trainch3epoch那个函数,看第一个l.sum是不是在那,改成l.mean。