在这一期的 Cloud AI Adventures 里,我们将会学习怎样用深度神经网络替换线性模型,从而适应日益复杂的数据集训练任务。 随着线性模型中特征列数量的增加,进而特征列之间的关系变得越来越复杂,在训练中提高精确度也越来越困难。这是一个众人皆知的问题,而数据科学家们解决它的一个有效办法就是转为使用深度神经网络。 为什么叫深度?深度神经网络可以应对更复杂的数据集,并充分利用其多层结构来更好地概括出未知的数据,故而称其为「深度」。多层次的结构使其相比线性模型能够容纳更多的数据。不过代价就是要花费更长的训练时间,并且模型体积也更庞大,可解释性也更差。那么人们为什么还这么中意它呢?因为它往往能够提升到更高的精度。
关于深度学习,有那么一件颇具技巧的事,那就是把所有参数都调校得「恰到好处」。超大的数据集规模决定了调优过程差不多是无穷无尽的。不过,TensorFlow 内置的 DeepClassifier 和 Regresser 类提供了一些你能随时使用的默认值,他们能让你的训练准备工作又快又轻松。 从线性训练到深度学习下面举个例子来展示如何将早前我们的线性鸢尾花辨识模型转为深度神经网络(也就是人们常说的 DNN)。 当然, 我们不是要展示 DNN 能处理的 2000 列特征值模型,而是仅仅使用本系列贯穿始终的 4 列特征值。(要么火力全开,要么几乎用不到,哈哈哈)其实它们背后的原理都是一样的。 最主要的变化就是把 LinearClassifier 类换成 DNNClassifier 类。 这一更改会为我们创建一个深度神经网络。
其他变化其实其他部分几乎没有变动!只是 DNN 多了个之前我们没有用到的参数。由于 DNN 的多层结构,而每一层可能有各不相同的结点数目,所以还需要在实例化时加上
这个
更多选项对于任何预知的体系,自定义性和便利性往往不可兼得, DNNClassifier 尝试给开发者提供额外的参数以绕过这个局限。如果留空了,就会由一些合理的默认值来填补空缺。比如优化器、激活函数、淘汰率等等都是可以自定义的。
再没有什么其他变化了还有其他要改变的吗?没了!这就是使用 Estimators 框架的优势:用通用的方法来组织数据、训练、评价、导出模型,同时还能让你用不同的模型和参数来训练。 了解 Estimators 框架: https://tensorflow.google.cn/api_docs/python/tf/estimator 轻松切入深度学习又是,深度神经网络比线性模型要更加高效。在这些情况下,TensorFlow 用「只替换一处函数调用」这种少量编码即可切换模型种类的方式,让一切更加简单。此后,你会有更多的时间精力来处理数据、模型和参数,而不是费时管理训练的循环迭代。用 TensorFlow Estimators 来获得更轻松的 DNN 训练体验吧! |
|
来自: alayavijnana > 《科技未来》