是一个深度学习库,由 Google 开源,可以对定义在 Tensor(张量)上的函数自动求导。
Tensor(张量)意味着 N 维数组,Flow(流)意味着基于数据流图的计算,TensorFlow即为张量从图的一端流动到另一端。
它的一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从电话、单个CPU / GPU到成百上千GPU卡组成的分布式系统。
支持CNN、RNN和LSTM算法,是目前在 Image,NLP 最流行的深度神经网络模型。
一周之前我连tensorflow、scikit-learn是什么都不清楚,也不知道数据挖掘分为传统机器学习(scikit-learn)跟深度学习(tensorflow),但是不重要嘛,伟大的毛主席教导我们“战略上藐视敌人,战术上重视敌人”,不就是工具么,不会造轮子了,本姑娘还不会用轮子么?
不知道会不会有人质疑,人家问tensorflow,你说什么scikit-learn,我回答就是找感觉,毕竟机器学习比深度学习看起来更接地气一些。我先在我的电脑上安装了,numpy、scipy、matplotlib这几个基础的python库,然后numpy的基础用法自己敲了一遍。为啥,因为我首先要知道矩阵也就是所谓的特征,是个什么样子,最基础的东西吧。顺便复习一下高等数据矩阵部分。了解一下scipy里面的前三个问题‘最小二乘拟合、函数最小值、非线形方程组求解’,这个部分会涉及到求导、函数微分的知识。其实我觉得倒数第二部分‘滤波器设计’应该也看一下,因为是神经网络很重要的一部分。matplotlib就是图形化显示,我觉得会用就行。
我是有条主线,然后不会的就在网上查,博客啊什么的,有的一个知识点不同人有很多不同的解释,看不懂那个解释,就再找另一个解释,有时候突然就能想通。我之前看过一篇解释傅立叶变换的文章,其实说到已经很清楚了,但当时就是转不过视角来,后来有一天看神经网络的文章,就是解释关于过滤不重要信息的一个问题,突然两个解释一结合,两个问题都想通了。
我大概学了‘协同过滤、主成分分析、k-means、svm、决策树、线性回归、逻辑回归’这几种算法。
真正项目应该是几种算法的协同作战,比如先用主成分分析找出重要的特征,在进行下一步的线性拟合等。
我对这几种算法的的程度就是能写出数学公式,以及为什么要用这个数学公式,比如协同过滤求相似系数有很多中方法,欧几里得、皮尔逊相似,欧几里得不说了,两点间的距离。皮尔逊相似跟欧几里得比的好处是什么,以及皮尔逊相似是协方差跟标准差的比,这里又要复习一下期望、方差、标准差、均值等数学知识。其他类似。
每学到一个算法都去网上找相应的小例子实现,辅助理解,加深记忆,更重要的是增强自信。而且这样调用框架的时候就不觉得跟变魔术似的了。打个比方,自己实现决策树的信息增益比(c4.5)比较麻烦,但是实现一个协同过滤的欧几里得很简单吧,但是这样心里就会有数,不管看起来多复杂的算法,就是这样由一些简单的数学公式堆砌的。
然后我就安装了scikit-learn,有个推荐电影的例子,数据集、代码都是现成的、每个函数都要理解、不会就查,运行出结果我觉得这就算入门啦。
tensorflow好像主要是做用来做神经网路的吧,我就是用cnn实现了一个验证码识别,网上有实例。对cnn的理解,网上文章特别多,多看看总能找到一个自己能理解的角度。还有几种常见的损失函数。为什么选sigmoid函数,而不选softmax函数,我看过一篇非常好的文章,找不到链接了。
当然还有些细节没提到,但是,我觉得这就算“入门”啦! 至于什么清洗、特征选取、调优……来日方长嘛~!
以下是用tensorflow建立线性回归模型,会python语言都看得懂,很简单!