[最佳0.11353! @a1041134926,奖励详见2楼,分数持续更新中] 实战Kaggle比赛:房价预测 讨论区


#208

抱歉三天后才回复你,以下为回复:
我在使用SGD作为优化算法时的调参思路是,先随便设一个lr(我一般选择是0.1或0.01),看模型的收敛情况,如果模型不收敛变化浮动较大,那么就把lr缩小10的倍数直到模型收敛;然后看模型差不多收敛后能达到的最终效果,也就是模型本身的能力,如果看模型的最终效果不好,就去调整模型,如果感觉模型效果还不错,就可以继续再调整优化算法里面的参数。比如,看模型过拟合的情况,如果过拟合,就可以适当地加大WD,减小Epoch的数量;如果感觉算法收敛的效果不够好,可以小幅度地调低lr,直到模型能够最好地逼近全局最优解。
以上是我这两个星期初学深度学习以来,手动调参的思路,如有差错纰漏之处,望请各位不吝指教!


#209

请问unit数是越大越好吗~~


#210

“以前讲MLP的时候,理论上当层数增多或者神经元增多时,模型的表达能力会更强,可是自己在调参的时候发现,好像两层隐层的神经网络怎么调都不如单层的神经网络。而且单层的神经网络也不是越多越好。”
是的是的,我也有这个疑问,请问解决了吗?


#211


这大概是一门玄学吧……象征性打个卡


#212

感觉调参是艺术,不是科学。


#213

好的,谢谢,感觉你说的非常有道理:grinning:


#214

当我把优化函数换回sgd的时候,显示不收敛,请问大家是怎么解决的


#216

刚才放完截图发现排名很尴尬…所以又重新调了一下…

没有修剪数据。总体的感觉是调大wd和调小lr比较有用,我这里中间层加一个和加两个差别并不大…

另外一个小trick是提交的时候在learn函数里多跑几步…loss收敛以后再停止分会高一些…

感觉和CFD调参很像[捂脸]


#217

我想请问一下,比如我想用model_zoo 中的模型,然后我想让后两个卷积层参数更新最后的dense也更新,保持前面的conv不动,在使用gluon.Trainer(net.clloect_params()),应该怎么collect参数?
p.s.感觉这个collect到的ParamterDict不太灵活,这个Dist既然是有序的,建议以后可以设计成能net.clloect_params()[0:5]这样访问的形式,不知道可不可以?


#218

调小学习率试一下?


#219

调到了0.11504, 分享一下:
设置layer:
net.add(gluon.nn.Dense(1000,activation=‘relu’))
net.add(gluon.nn.Dropout(0.6))
net.add(gluon.nn.Dense(1))

设置learning rate decay:

for epoch in range(epochs):
if epoch>19 and epoch%10 ==0:
learning_rate *=0.7
trainer = gluon.Trainer(net.collect_params(), ‘adam’,
{‘learning_rate’: learning_rate,
‘wd’: weight_decay})

k = 5
epochs = 150
verbose_epoch = 145
learning_rate = 0.4
weight_decay = 175


#220

自己回复:眼瞎了没看见clloect_params()里面有参数可以用正则表达式。


#221

weight_decay就是正则化系数呀,可以减少过拟合


#222

一刷:增加128个单元的隐含层,relu激活函数,learning_rate调到0.03,weight_decay调到5,成绩为0.12385.


#223

Dense(1, linear) 的linear可以这样写进去?没有报错?


#224

解答了我的一个问题,取对数后,误差很小,不知怎么回事。


#225

可以贴下参数吗?还有你的思路?


#226

先记录下,好像用楼上同学说的参数和网络,跑出来的结果还是不一样。需要学习。


#227

寫得太好


#228

为什么k_fold_cross_valid里面每次迭代一次都需要重新get_net呢?这样岂不是每次迭代都会重新建立神经网络丢弃掉之前训练好掉参数吗