月度归档:2017年09月

1.TensorFlow简介
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即Tensor(张量),而Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow不只局限于神经网络,其数据流式图支持非常自由的算法表达,当然也可以轻松实现深度学习以外的机器学习算法。事实上,只要可以将计算表示成计算图的形式,就可以使用TensorFlow。TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,TensorFlow一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从手机、单个CPU / GPU到成百上千GPU卡组成的分布式系统。

2、TensorFlow安装
安装TensorFlow,因本环境的python3.6采用anaconda来安装,故这里采用conda管理工具来安装TensorFlow,目前conda缺省安装版本为TensorFlow1.2。

conda install tensorflow

验证安装是否成功,可以通过导入tensorflow来检验。
启动ipython(或python)

import tensorflow as tf

测试测试TensorFlow,Jupyter Notebook及matplotlib

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

##通知笔记本将matplotlib图表直接显示在浏览器上
%matplotlib inline

a=tf.random_normal([2,40]) ###随机生成一个2x40矩阵
sess=tf.Session() ####启动session,并赋给一个sess对象
out=sess.run(a) ###执行对象a,并将输出数组赋给out
x,y=out ###将out这个2x40矩阵划分为两个1x40的向量x,y
plt.scatter(x,y) ###利用scatter绘制散点图
plt.show()

3、TensorFlow的发展
2015年11月9日谷歌开源了人工智能系统TensorFlow,同时成为2015年最受关注的开源项目之一。TensorFlow的开源大大降低了深度学习在各个行业中的应用难度。TensorFlow的近期里程碑事件主要有:
2016年04月:发布了分布式TensorFlow的0.8版本,把DeepMind模型迁移到TensorFlow;
2016年06月:TensorFlow v0.9发布,改进了移动设备的支持;
2016年11月:TensorFlow开源一周年;
2017年2月:TensorFlow v1.0发布,增加了Java、Go的API,以及专用的编译器和调试工具,同时TensorFlow 1.0引入了一个高级API,包含f.layers,tf.metrics和tf.losses模块。还宣布增了一个新的tf.keras模块,它与另一个流行的高级神经网络库Keras完全兼容。
2017年4月:TensorFlow v1.1发布,为Windows 添加 Java API 支,添加tf.spectral 模块,Keras 2 API等;
2017年6月:TensorFlow v1.2发布,包括 API 的重要变化、contrib API的变化和Bug 修复及其它改变等。

4、TensorFlow的特点
高度的灵活性
TensorFlow 采用数据流图,用于数值计算的开源软件库。只要计算能表示为一个数据流图,你就可以使用Tensorflow。
真正的可移植性
Tensorflow 在CPU和GPU上运行,可以运行在台式机、服务器、云服务器、手机移动设备、Docker容器里等等。
将科研和产品联系在一起
过去如果要将科研中的机器学习想法用到产品中,需要大量的代码重写工作。Tensorflow将改变这一点。使用Tensorflow可以让应用型研究者将想法迅速运用到产品中,也可以 让学术性研究者更直接地彼此分享代码,产品团队则用Tensorflow来训练和使用计算模 型,并直接提供给在线用户,从而提高科研产出率。
自动求微分
基于梯度的机器学习算法会受益于Tensorflow自动求微分的能力。使用Tensorflow,只 需要定义预测模型的结构,将这个结构和目标函数(objective function)结合在一起,并添加数据,Tensorflow将自动为你计算相关的微分导数。
多语言支持
Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs。你可以直接写python/c++程序,也可以用交互式的Ipython界面来用Tensorflow尝试这些想法,也可以使用Go,Java,Lua,Javascript,或者是R等语言。
性能最优化
如果你有一个32个CPU内核、4个GPU显卡的工作站,想要将你工作站的计算潜能全发挥出来,由于Tensorflow 给予了线程、队列、异步操作等以最佳的支持,Tensorflow 让你可以将你手边硬件的计算潜能全部发挥出来。你可以自由地将Tensorflow图中的计 算元素分配到不同设备上,充分利用这些资源。下表为TensorFlow的一些主要技术特征:

5、TensorFlow的编程模式
TensorFlow是一个采用数据流图(Data Flow Graphs),节点(Nodes)在图中表示数学操作,图中的边(edges)则表示在节点间相互联系的任何维度的数据数组,即张量(tensor)。数据流图用结点(nodes)和边(edges)的有向无环图(DAG)来描述数学计算。节点一般用来表示施加的数学操作(tf.Operation),但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。边表示节点之间的输入/输出关系。这些数据“边”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。

Tensorflow中的计算可以表示为一个有向图(directed graph),或称计算图(computation graph),其中每一个运算操作将作为一个节点(node),节点与节点之间的连接成为边(edge),而在计算图的边中流动(flow)的数据被称为张量(tensor),所以形象的看整个操作就好像数据(tensor)在计算图(computation graphy)中沿着边(edge)流过(flow)一个个节点(node),这就是tensorflow名字的由来的。

saddle_point_evaluation_optimizers

计算图中的每个节点可以有任意多个输入和任意多个输出,每个节点描述了一种运算操作(operation, op),节点可以算作运算操作的实例化(instance)。计算图描述了数据的计算流程,它也负责维护和更新状态,用户可以对计算图的分支进行条件控制或循环操作。用户可以使用pyton、C++、Go、Java等语言设计计算图。tensorflow通过计算图将所有的运算操作全部运行在python外面,比如通过c++运行在cpu或通过cuda运行在gpu 上,所以实际上python只是一种接口,真正的核心计算过程还是在底层采用c++或cuda在cpu或gpu上运行。

一个 TensorFlow图描述了计算的过程. 为了进行计算, 图必须在会话(session)里被启动. 会话将图的op分发到诸如CPU或GPU之的备上, 同时提供执行op的方法. 这些方法执行后, 将产生的tensor返回. 在Python语言中, 返回的tensor是numpy ndarray对象; 在C和C++语言中, 返回的tensor是tensorflow::Tensor实例。

从上面的描述中我们可以看到,tensorflow的几个比较重要的概念:tensor, computation graphy, node, session。正如前面所说,整个操作就好像数据(tensor)在计算图(computation graphy)中沿着边(edge)流过(flow)一个个节点(node),然后通过会话(session)启动计算。所以简单来说,要完成这整个过程,我们需要的东西是要定义数据、计算图和计算图上的节点,以及启动计算的会话。所以在实际使用中我们要做的大部分工作应该就是定义这些内容了。

6、TensorFlow实例
TensorFlow如何工作?我们通过一个简单的实例进行说明,为计算x+y,你需要创建下图这张数据流图


以下构成上数据流图的详细步骤:
1)定义x= [1,3,5],y =[2,4,7],这个图和tf.Tensor一起工作来代表数据的单位,你需要创建恒定的张量:

import tensorflow as tf
x = tf.constant([1,3,5])
y = tf.constant([2,4,7])

2)定义操作

op = tf.add(x,y)

3)张量和操作都有了,接下来就是创建图

my_graph = tf.Graph()

这一步非必须,在创建回话时,系统将自动创建一个默认图。
4)为了运行这图你将需要创建一个回话(tf.Session),一个tf.Session对象封装了操作对象执行的环境,为了做到这一点,我们需要定义在会话中将要用到哪一张图:

with tf.Session(graph=my_graph) as sess:
x = tf.constant([1,3,5])
y = tf.constant([2,4,7])
op = tf.add(x,y)

5)想要执行这个操作,要用到tf.Session.run()这个方法:

import tensorflow as tf
my_graph = tf.Graph()
with tf.Session(graph=my_graph) as sess:
x = tf.constant([1,3,5])
y = tf.constant([2,4,7])
op = tf.add(x,y)
result = sess.run(fetches=op)
print(result)

6)运行结果:
[ 3 7 12]

7、几乎所有深度框架都是基于计算图,计算图可分为静态计算图和动态计算图。静态计算图,先定义再运行,一次定义多次运行;动态计算图在运行过程中被定义,在运行中构建,可以多次构建多次运行。Tensorflow属于静态图,先构造图形,然后创建sess,最后run。这里我们介绍深度学习另一种框架Pytorch,它属于动态图形,每步生成图的一部分,最后把图组合起来,形成一个完整图形,具体可参考下图。

saddle_point_evaluation_optimizers

以上动态图对应的代码为:

第一部分 Python基础
第1章、Numpy常用操作
第2章、Theano基础
第3章、Python知识图谱
第二部分 Python数据分析
第1章、Pandas基础
第2章、 操作数据库
第3章、数据处理
第4章、用Python分析股票数据
第5章、电信客户流失分析

第三部分 数据可视化

第四部分 爬虫
第1章、Scrapy基础
第2章、利用Python抓取并分析京东商品评论数据
第3章、Python 爬虫入门实例
第4章、 Scarpy 爬虫入门实例

第五部分 Web开发

第六部分 Python与机器学习

第1章、机器学习简介
第2章、机器学习一般流程
第3章、机器学习简单示例
第4章、Scikit-learn简介
第5章、数据探索和预处
第6章、模型评估与参数优化
第7章、集成学习
第8章、航空公司客户价值分析实例
第9章、自然语言处理----情感分析实例
第10章、聚类算法及实例
第11章、神奇的SVM及实例分析
第12章、化繁为简的高手----正则化方法
第13章、神经网络简介
第14章、由浅入深--轻松学会--用Python实现神经网络
第15章、K-means聚类
第16章、回归模型(分别用解方程、迭代、自动求导等方法求参数)
第17章、多种降维方法
第18章、Kaggle竞赛神器--集成学习
第19章、深度学习首先方法:Jupyter NoteBook
第20章、深度学习框架Pytorch快速入门
第21章、TensorFlow的又一利器TensorFlow.js(基于浏览器开发测试机器学习)
第22章、神经网络黑箱不黑
第23章、神经风格迁移
第24章、轻松掌握深度学习的核心--误差反向传播法
第25章、Pytorch如果高效使用GPU加速
第26章、用预训练模型清除图像中的雾霾

第七部分 Python与深度学习
###应用数学基础###
第1章 线性代数
第2章 概率与信息论
第3章 概率图模型
###深度学习理论与应用###
第4章 机器学习基础
4.1简介
4.2监督学习
4.3无监督学习
4.4神经网络
4.5随机梯度下降
4.6参数估计
4.7Sklearn简介

第5章 深度学习挑战及方案
5.1 梯度下降与最优化
第6章 安装TensorFlow
第7章 TensorFlow基础
第8章 TensorFlow图像处理
第9章 TensorFlow实现神经元函数
第10章 TensorFlow自编码
第11章 TensorFlow 实现word2vec
第12章 TensorFlow 卷积神经网络
第13章 TensorFlow 循环神经网络
第14章 TensorFlow 高级封装
###深度学习实战(使用TensorFlow实现)###
第15章 情感分析
第16章 自动生成文章摘要
第17章 聊天机器人
第18章 人脸识别
第19章 乳腺癌识别
第20章 信用卡欺诈检测
第21章 自然语言处理
第22章 强化学习
第23章 生成式对抗网络
第24章 语音识别基础
第25章 自动驾驶汽车--使汽车在两条白线之间行驶
第26章 自动驾驶汽车--交通标志识别

第八部分 爬虫+文件处理+科学计算+机器学习等

第1章 机器学习简介
1.1机器学习的定义
1.2大数据与机器学习
1.3 机器学习、人工智能及深度学习
1.4 机器学习的基本任务
1.5 如何选择合适算法
1.6 Spark在机器学习方面的优势
1.7 小结
第2章 构建Spark机器学习系统
2.1机器学习系统架构
2.2启动集群
2.3加载数据
2.4探索数据
2.4.1 数据统计信息
2.4.2 数据质量分析
2.4.3 数据特征分析
2.4.3.1 数据特征分析
2.4.3.2 特征分布及相关性分析
2.4.3.3 对比分析
2.4.4 数据的可视化
2.5数据预处理
2.5.1数据清理
2.5.2数据变换
2.5.3数据集成
2.5.4数据归约
2.6构建模型
2.7模型评估
2.8组装
2.9模型选择或调优
2.9.1 交叉验证(CrossValidator)
2.9.2训练-验证切分(TrainValidationSplit)
2.10保存模型
2.11小结
第3章 ML Pipelines
3.1 Pipeline简介
3.2DataFrame
3.3 Pipeline组件
3.4 Pipeline原理
3.5 Pipeline实例
3.5.1使用Estimator, Transformer, and Param实例
3.5.2 ML使用Pipeline实例
3.6 小结
第4章 特征提取、转换和选择
4.1 特征提取
4.1.1 词频-逆向文件频率(TF-IDF)
4.1.2 Word2Vec
4.1.3 计数向量器(Countvectorizer)
4.2 特征转换
4.2.1分词器(Tokenization)
4.2.2 移除停用词(StopWordsRemover)
4.2.3 n-gram
4.2.4 二值化
4.2.5 主成分分析(PCA)
4.2.6 多项式展开(PolynomialExpansion)
4.2.7 离散余弦变换(DCT)
4.2.8 字符串-索引变换(StringIndexer)
4.2.9 索引-字符串变换(IndexToString)
4.2.10 独热编码(OneHotEncoder)
4.2.11 向量-索引变换
4.2.12交互式(Interaction)
4.2.13 正则化(Normalizer)
4.2.14 规范化(StandardScaler)
4.2.15 最大值-最小值缩放(MinMaxScaler)
4.2.16 最大值-绝对值缩放(MaxAbsScaler)
4.2.17 离散化重组(Bucketizer)
4.2.18 元素乘积(ElementwiseProduct)
4.2.19 SQL转换器(SQLTransformer)
4.2.20 向量汇编(VectorAssembler)
4.2.21 分位数离散化(QuantileDiscretizer)
4.3 特征选择
4.3.1 向量机(VectorSlicer)
4.3.2 R公式(RFormula)
4.3.3 卡方特征选择(ChiSqSelector)
4.4 小结
第5章 模型选择和优化
5.1 模型选择
5.2交叉验证(cross-validation)
5.3训练验证拆分法(train validation split)
5.4自定义模型选择
5.5小结
第6章 Spark MLlib简介
6.1 Spark MLlib简介
6.2 Spark MLlib架构
6.3 数据类型
6.4 基础统计
6.4.1摘要统计(summary statistics)
6.4.2相关性(correlations)
6.4.3假设检验(hypothesis testing)
6.4.4随机数据生成(random data generation)
6.5 RDD、Dataframe和Dataset
6.5.1 RDD
6.5.2Dataset/DataFrame
6.5.3相互转换
6.6 小结
第7章 构建Spark ML推荐模型
7.1 推荐模型简介
7.2 数据加载
7.3 数据探索
7.4 训练模型
7.5 组装
7.6 评估模型
7.7 模型优化
7.8小结
第8章构建Spark ML 分类模型
8.1分类模型简介
8.1.1线性模型
8.1.2 决策树模型
8.1.3 朴素贝叶斯模型
8.2数据加载
8.3 数据探索
8.4数据预处理
8.5组装
8.6模型优化
8.7小结
第9章 构建Spark ML回归模型
9.1 回归模型简介
9.2 数据加载
9.3 探索特征分布
9.4 数据预处理
9.4.1 特征选择
9.4.2 特征转换
9.5 组装
9.6 模型优化
9.7 小结
第10章 构建Spark ML聚类模型
10.1 K-means模型简介
10.2 数据加载
10.3 探索特征的相关性
10.4 数据预处理
10.5 组装
10.6 模型优化
10.7 小结
第11章 PySpark 决策树模型
11.1 PySpark 简介
11.2 决策树简介
11.3数据加载
11.3.1 原数据集初探
11.3.2 PySpark 的启动
11.3.3 基本函数
11.4数据探索
11.5数据预处理
11.6创建决策树模型
11.7训练模型进行预测
11.8模型优化
11.8.1特征值的优化
11.8.2交叉验证和网格参数
11.9脚本方式运行
11.9.1 在脚本中添加配置信息
11.9.2运行脚本程序
11.10小结
第12章 Spark R 朴素贝叶斯模型
12.1. Spark R简介
12.2. 获取数据
12.2.1. SparkDataFrame数据结构说明
12.2.2. 创建Spark DataFrame
12.2.3. SparkDataFrame的常用操作
12.3. 朴素贝叶斯分类器
12.3.1数据探查
12.3.2对原始数据集进行转换
12.3.3查看不同船舱的生还率差异
12.3.4转换成Spark DataFrame格式的数据
12.3.4模型概要
12.3.5预测
12.3.6评估模型
12.4 小结
第13章 使用Spark Streaming构建在线学习模型
13.1 Spark Streaming简介
13.1.1Spark Streaming常用术语
13.1.2Spark Streaming处理流程
13.2 Dstream操作
13.2.1 Dstream输入
13.2.2 Dstream转换
13.2.3 Dstream修改
13.2 .4Dstream输出
13.3 Spark Streaming应用实例
13.4 Spark Streaming在线学习实例
13.5小结
第14章 TensorFlowOnSpark简介
14.1TensorFlow简介
14.1.1TensorFlow的安装
14.1.2TensorFlow的发展
14.1.3TensorFlow的特点
14.1.4TensorFlow编程模型
14.1.5TensorFlow常用函数
14.1.6TensorFlow的运行原理
14.1.7TensorFlow系统架构
14.2TensorFlow实现卷积神经网络
14.2.1卷积神经网络简介
14.2.2卷积神经网络的发展历程
14.2.3卷积神经网络的网络结构
14.2.4TensorFlow实现卷积神经网络
14.3TensorFlow实现循环神经网络
14.3.1循环神经网络简介
14.3.2 LSTM循环神经网络简介
14.3.3 LSTM循环神经网络分步说明
14.3.4TensorFlow实现循环神经网络
14.4分布式TensorFlow
14.4.1客户端、主节点和工作节点间的关系
14.4.2分布式模式
14.4.3在Pyspark集群环境运行TensorFlow
14.5TensorFlowOnSpark架构
14.6TensorFlowOnSpark安装
14.7TensorFlowOnSpark实例
14.7.1TensorFlowOnSpark单机模式实例
14.7.2TensorFlowOnSpark集群模式实例
14.8小结