2021-04-21 今日炼丹tips 差分(diff&cumsum)

炼丹tips

  1. 网络层数,参数量什么的都不是大问题,在性能不丢的情况下,减到最小
  2. 欠拟合:增加网络层数,增加节点数,减少dropout值,减少L2正则
    过拟合:提高模型泛化能力的方向,调节参数
  3. 先参考相关论文, 以论文中给出的参数作为初始参数 。 至少论文中的参数,是个不差的结果。
  4. 对训练数据进行采样。例如原来100W条数据,先采样成1W,进行实验看看。
  5. dropout对小数据防止过拟合有很好的效果,值一般设为0.3,0.5,0.8, 然后依据这三个的结果进行微调
  6. 自动调参:
    Gird Search.这个是最常见的。具体说,就是每种参数确定好几个要尝试的值,然后像一个网格一样,把所有参数值的组合遍历一下。优点是实现简单暴力,如果能全部遍历的话,结果比较可靠。缺点是太费时间了,特别像神经网络,一般尝试不了太多的参数组合。
    Bayesian Optimization.贝叶斯优化,考虑到了不同参数对应的实验结果值,因此更节省时间。和网络搜索相比简直就是老牛和跑车的区别。具体原理可以参考这个论文:Practical Bayesian Optimization of Machine Learning Algorithms ,这里同时推荐两个实现了贝叶斯调参的Python库,可以上手即用
  7. 尽量对数据做shuffle
  8. 当你的模型有 Batch Normalization,初始化通常不需要操心,激活函数默认 Relu 即可(某引用数万的大佬说的)。一般顺序是 Conv - BN - Relu。如果没有 BN(很多任务上,BN降低训练难度,但是可能影响最终性能 ),试着要做一些数据归一化。([作者:hzwer](https://www.zhihu.com/question/41631631/answer/859040970
  9. tensorboard很好用
  10. 网络层数,参数量什么的都不是大问题,在性能不丢的情况下,减到最小
  11. pandas.describe()函数可以描述一维数据集或二维表结构的初步特征,目的在于观察这一系列数据的范围、大小、波动趋势等等。
  12. 同一套超参,没事多跑几遍,要是区别很大,就肯定有问题
  13. 实在没招了,调一调随机数种子,没准有奇效

参考:

  1. 深度学习网络调参技巧
  2. 你有哪些deep learning(rnn、cnn)调参的经验?

时序tips

突然想起自己做的时序预测,那是不是可以找找相关炼丹tips

  1. 尝试一下序列做过一阶差分进行预测,尝试一下,看看效果怎么样
# DataFrame.diff(periods=1, axis=0)
import numpy as np
import pandas as pd
# 转化np.array数据为DataFrame数据类型
df = pd.DataFrame(df)
# 一阶差分
df.diff()
# 一阶差分 消除nan
df.diff().dropna()
# 二阶差分
df.diff(periods = 2)
# 纵向一阶差分, 当前行减去上一行,第一行变成Nan(x,y)->(x-1,y)
df.diff(axis=0).dropna()
# 横向一阶差分,当前列减去左边的列最左侧的列变为Nan(x,y)->(x,y-1)
df.diff(axis=1).dropna()
# 转化回np.array
df=df.values

因为我这是np数列,刚刚发现np也有diff函数呀,不过好像没有pd的用的人多,相关帖子并不算多

# np.diff()
np.diff(a, n=1,axis=-1)
# a:输入矩阵
# n:可选,代表要执行几次差值
# axis:默认是最后一个,估计和pd的差不多
np.diff(a, n=1, axis = 0) # 纵向一阶差分

差分完,预测出结果之后还要还原回去啊!别忘了还原回去啊!
先给数据加上差分前的第一行,np.append

np.append(a[0:1,...], diffed_a, axis = 0) # 向下拼接

凑成完整的后,还原,np.cumsum

np.cumsum()# numpy.cumsum(a,  axis=None, dtype=None, out=None)
# axis = 0 纵向; 1 横向
#dtype = 输出类型,平台默认为整形,可改为float
np.cumsum(a) # 拉成一维,依次累加
np.cumsum(a, dtype=float) # 输出浮点型数据
np.cumsum(a, axis = 0) #纵向还原
np.cumsum(a, axis = 1) # 横向还原

效果出来了。。。啥也不是!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容