1.输出结果与标签类型不一样,也不能算正确。
2.numpy-array数组进行比较 https://blog.csdn.net/ztf312/article/details/50708302
3.
作者:Miracle
链接:https://www.zhihu.com/question/29641737/answer/243982984
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
4.随机梯度下降是建立在batch基础上的,合适的batch size对你模型的优化是比较重要的,这个参数倒不需要微调,在一个大致数量即可,常取2的n次方,太大的batch size会受GPU显存的限制,所以不能无限增大。在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
5.初始学习率很重要,学习率的变化策略也很重要,你真正跑过数据就会发现其中的奥秘,适当时候可微调,一般在0.1到0.00001范围,根据具体情况定。
6.np.where使用:根据条件生成新的数组
np.where(cond,xarr,yarr)
np.where 函数是三元表达式
这里x,y是可选参数,condition是条件,这三个输入参数都是array_like的形式;而且三者的维度相同
当符合条件时是x,不符合是y,常用于根据一个数组产生另一个新的数组。
当conditon的某个位置的为true时,输出x,否则y。
np.max 与 np.maximum
比较二者的参数部分:
- np.max:(a, axis=None, out=None, keepdims=False)
- 求序列的最值
- 最少接收一个参数
- axis:默认为列向(也即 axis=0),axis = 1 时为行方向的最值;
- np.maximum:(X, Y, out=None)
- X 与 Y 逐位比较取其大者;
- 最少接收两个参数
7.欠拟合、过拟合及其解决方法
https://blog.csdn.net/willduan1/article/details/53070777
bias和variance的概念。模型的Error = Bias + Variance,Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
训练的过程和阶段可以分为3个阶段:
欠拟合:模型没有很好地捕捉到数据特征(训练集和验证集的loss都大于0.3)。
刚刚好:模型已经完成了我们的任务,满足要求(训练集和验证集上的loss都小于0.01)。
过拟合:模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了(训练集上loss小于0.01,验证集上loss大于0.3)。
通用技巧:
1 Relu:一个很万能的激活函数,可以很好的防止梯度弥散问题,当然最后一层的激活函数千万慎用relu。
2 明确任务目的:如果是连续的用identify(还是叫identity,记不清了),分类的用softmax,拟合回归的话我最后一层也经常不用激活函数,直接wx +b就行。
3 Batchnorm:可以大大加快训练速度和模型性能
4 Dropout:(让神经元以一定的概率不工作)防止过拟合,如果不知道怎么设比例的话,就直接设置为0.5。