openmmlab打卡笔记1

今天听了子豪兄的课,收获如下:
由于不是计算机系科班出身,有一些听了就在想为什么会是这样呢,所以记得比较凌乱

1、拟合问题

用他的话来比喻:

过拟合:平时考得好,高考没考好
拟合:平时考得好,高考考得好
欠拟合:平时没考好,高考也没考好
解决方法:
过拟合:扩充训练样本,提早结束训练(引入早停策略)
欠拟合:延长训练,更换模型
这两个问题我都经历过
我曾想训练一个鞋类图片生成模型,于是在网上抄了一个dcgan的代码下来,训练的过程倒是没太大问题,并且训练完成后生成的图片还跟训练用的图片一模一样。
但就是因为跟训练的图片一模一样,导致这个模型无论输入什么,都生成不了其他的鞋的图片。
幸好有人指点,我才知道这是过拟合了
后来从网上抄了一个全是全连接层得cgan代码下来,用5个分类,每个分类300多张图,图片的size是224 x 224,然后batch size 设 64 ,epoch 设 20000。
结果训练完成后,测试生成的图片全是非常模糊,训练过程中,G和D loss都很正常, 这种情况就是欠拟合。
模型无法拟合图片的特征,再继续训练下去也是白浪费时间。
于是我后来将神经网络更换为卷积神经网络,再训练就得时候输出得图片就正常多了(虽然后来又发生梯度爆炸的问题)

2、机器学习训练的是权重和参数

拿卷积神经网络来举例神经网络的训练过程,
1、先通过随机赋值给卷积核一个初始权重,然后让训练样本通过前向传播输出结果
2、将输出结果和真实值比较,求出损失值(通常是采用交叉熵求出)
3、随后进行反向传播,把输入作为已知,将损失值对权重求导,求出最优解,
并更新当前神经元的权值(通常的更新的方法是当前权值w-(最有解权值乘以学习率))。
由于神经元是链式传播,因此在反向传播中对于下个神经元,
则需要求输出对输入,输入对权重的偏导数
虽然反向传播这一步看似复杂,但在pytorch里面只是三行代码
求出loss 
反向传播 loss.backward
用亚当优化器更新权重 optim.Adam.step

暂时先记着这些,有不正确的地方望指教

你可能感兴趣的:(python,计算机视觉,深度学习,神经网络)