什么是深度学习框架
深度学习框架是一种用于构建、训练和部署深度神经网络模型的工具集合。它提供了丰富的函数和工具,使开发者能够方便地创建、调整和优化神经网络模型。
深度学习有哪些框架?
目前常用的深度学习框架有PyTorch、Theano、TensorFlow、Keras、Caffe、MXNet、CNTK、PaddlePaddle。
PyTorch
PyTorch 既可以看作为加入了GPU 支持的numpy。
PyTorch 的设计思路是线性、直观且易于使用的,当用户执行一行代码时,它会忠实地执行,所以当用户的代码出现Bug 的时候,可以通过这些信息轻松快捷地找到出错的代码,不会让用户在Debug 的时候因为错误的指向或者异步和不透明的引擎浪费太多的时间。
PyTorch 的代码相对于TensorFlow 而言,更加简洁直观,同时对于TensorFlow高度工业化的底层代码,PyTorch 的源代码就要友好得多,更容易看懂。
模型评估与模型参数选择
数据集:训练集、验证集、测试集
3种数据集之间的关系:
训练集相当于上课学知识
验证集相当于课后的的练习题,用来纠正和强化学到的知识
测试集相当于期末考试,用来最终评估学习效果
划分数据集
对于小规模样本集(几万量级),常用的划分比例:
训练集:验证集:测试集=6:2:2
训练集:测试集==8:2、7:3
对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可。
例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。
1000w 的数据,同样留 1w 验证集和 1w 测试集。
超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。
过拟合:将训练样本自身的一些特点当作所有样本潜在的泛化特点。
表现:在训练集上表现很好,在测试集上表现不好。
过拟合的原因:
训练数据太少(比如只有几百组)
模型的复杂度太高(比如隐藏层层数设置的过多,神经元的数量设置的过大)
欠拟合:还没训练好。
- 欠拟合的原因:
- 数据未做归一化处理
- 神经网络拟合能力不足
- 数据的特征项不够
- 解决方法:
- 寻找最优的权重初始化方案
- 增加网络层数、epoch
- 使用适当的激活函数、优化器和学习率
- 减少正则化参数
- 增加特征
无监督学习
监督学习
小结
本章介绍了三种常用的机器学习框架,其中TensorFlow和PyTorch是目前最流行的两种开源框架。
在以往版本的实现中,TensorFlow主要提供静态图构建的功能,因此具有较高的运算性能,但是模型的调试分析成本较高。
PyTorch主要提供动态图计算的功能,API涉及接近Python原生语法,因此易用性较好,但是在图优化方面不如TensorFlow。这样的特点导致TensorFlow大量用于AI企业的模型部署,而学术界大量使用PyTorch进行研究。不过目前工业界也在向Pytorch转型。