一、深度学习与机器学习区别
(一)特征提取方面
1、机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识 深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,通过将数
据从一层传递到另一层来构建更复杂的模型。通过大量数据的训练自动得到模型,不需
要人工设计特征提取环节。
2、深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特的部
分。因此,减少了为每个问题开发新特征提取器的任务。适合用在难提取特征的图像、
语音、自然语言领域。
(二)数据方面
1、机器学习需要的执行时间远少于深度学习
2、深度学习参数往往很庞大,需要通过大量数据的多次优化来训练参数。
(三)算法方面
1、 机器学习
代表:K-Means、决策树、线性回归等
2、 深度学习
代表:神经网络
(四)深度学习应用场景
1、 图像识别
物体识别
车型识别
人脸检测跟踪
人脸身份认证
2、 自然语言处理技术
机器翻译
聊天对话
3、 语音技术
语音识别
(五)常用的深度学习框架
1、 Caffe
2、Torch
3、 Theano
4、TensorFlow
5、 MXNet
6、 PaddlePaddle--百度飞浆
二、TensorFlow 框架 简介
1、高度灵活(Deep Flexibility)
它不仅是可以用来做神经网络算法研究,也可以用来做普通的机器学习算
法,甚至是只要你能够把计算表示成数据流图,都可以用 TensorFlow。
2、语言多样(Language Options)
TensorFlow 使用 C++实现的,然后用 Python 封装。
3、设备支持
TensorFlow 可以运行在各种硬件上,同时根据计算的需要,合理将运算分配
到相应的设备,比如卷积就分配到 GPU 上,也允许在 CPU 和 GPU 上的计算分
布,甚至支持使用 gRPC 进行水平扩展。
4、Tensorboard 可视化
TensorBoard 是 TensorFlow 的一组 Web 应用,用来监控 TensorFlow 运行过
程,或可视化 Computation Graph。
三、tensorflow数据流图基础知识点
1、什么是tensorflow数据流图(Data Flow Graph):
官方的解释为:数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。
2、tensorflow数据流图如下所示
3、直接打印tensor相加之和,没有得到相加的结果定义一个op之后得到一个tensor,tensor包含的是op
import tensorflow as tf
import os
con_a = tf.constant(3)
con_b = tf.constant(4)
con_c = tf.add(con_a,con_b)
print(con_c) #Tensor("Add:0", shape=(), dtype=int32)
返回的结果为Tensor("Add:0", shape=(), dtype=int32),而不是结果预期的数值
4、如果我们要得到运行结果,需要进行下面开启会话执行op的代码
import tensorflow as tf
import os
con_a = tf.constant(3)
con_b = tf.constant(4)
con_c = tf.add(con_a,con_b)
#开启会话,执行op
with tf.Session() as ss:
print(ss.run(con_c))
得到的结果为数值7。
5、会话是什么?
tensorflow底层是c++写的,而我们写的代码是python代码,所谓会话便是连接python和c++的地方。
6、关于op与tensor
op其实是操作,tensor张量的本质是n维数组。
7、tensor和session都有grap图属性,通过graph来获取图属性,如果不特殊指定,都在默认的图中执行
import tensorflow as tf
con_a = tf.constant(3)
con_b = tf.constant(4)
con_c = tf.add(con_a,con_b)
print(con_a.graph)
print(con_b.graph)
print(con_c.graph)
g = tf.Graph()
with tf.Session() as ss:
print(ss.graph)
'''
'''
8、使用get_default_graph()获取默认图的地址
import tensorflow as tf
con_a = tf.constant(3)
con_b = tf.constant(4)
con_c = tf.add(con_a,con_b)
print(con_c.graph)
print(tf.get_default_graph())
g = tf.Graph()
with tf.Session() as ss:
print(ss.graph)
'''
'''
9、使用tf.Graph()创建自定义图来运行数据
在这里我们要先创建图,创建完成后在图中定义tensor和op,之后使用with tf.Session(graph=g) as ss来开启graph指定要运行的图。
import tensorflow as tf
# 创建图
g = tf.Graph()
with g.as_default():
#在创建的图中定义tensor和op
g_a = tf.constant(5.0)
print(g_a)
#Tensor("Const:0", shape=(), dtype=float32)
#开启graph指定要运行的图,如果我们想要得到运行的结果,必须进行下面这段代码
with tf.Session(graph=g) as ss:
print(ss.run(g_a)) #5.0
10、在上述代码大体分成两个阶段
1.构建图阶段
2.执行图阶段
11、关于结果标红问题
代码运行可能出现下面的结果:I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
这时候加入下面两句话即可解决这个问题:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'