一、认识深度学习
深度学习使用场景:
● 图像理解
● 语音识别
● 自然语言处理
● 机器自主(无人驾驶)
深度学习,如深度神经网络、卷积神经网络和递归神经网络已被应用计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并取得了很好的效果。
深度学习在人工智能领域的地位:
深度学习框架:
二、认识Tensorflow
● Google Brain计划产物
● 应用于Alpha GO,Gmail,Google Maps等1000多个产品
● 于2015年11月开源,2017年2月发布1.0版本。2019年10月发布2.0版本
● 架构师Jeff Deam
● 领导实现MapReduce、BigTable、Spanner
三、TensorFlow特点
1、真正的可移植性
引入各种计算设备的支持,包括:CPU/GPU/TPU,以及能够很好地运行在移动端,如安卓设备、io、树莓派等等。
2、多语言支持
Tensorflow有一个合理的C++使用界面,也有一个易用的python使用界面来构建和执行你的graphs,你可以直接写python/c++程序。
3、高度的灵活性和效率
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库能够灵活进行组装图,执行图。随着开发的进展,TensorFlow的效率在不断的提高。
4、支持
TensorFlow由谷歌提供支持,谷歌投入了大量精力开发TensorFlow,它希望TensorFlow成为机器学习研究人员和开发人员的通用语言。
谷歌数千种产品使用了TensorFlow:
无数公司也用了TensorFlow:
四、TensorFlow基础
通过案例来了解分析TensorFlow的整个结构
常规加法运算:
# coding:utf-8
def add(a, b):
return a + b
a = 1
b = 2
c = add(1, 2)
print(c)
TensorFlow加法运算:
# coding:utf-8
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
# 实现一个加法算法
a = tf.constant(5.0)
b = tf.constant(6.0)
sum1 = tf.add(a, b)
sess = tf.compat.v1.Session()
print(sess.run(sum1))
TensorFlow数据流图:
图
● 图默认已经注册,一组表示tf.Operation计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象
● 获取调用
1.tf.get_default_graph
2.op、sess或者tensor的graph属性
图的创建
● tf.Graph()
● 使用新创建的图
g = tf.Graph()
with g.as_default():
a = tf.constant(1.0)
assert c.graph is g
代码:
# coding:utf-8
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 创建一张图,上下文环境
g = tf.Graph()
print(g)
with g.as_default():
c = tf.constant(11.0)
print(c.graph)
# 实现一个加法运算
tf.compat.v1.disable_eager_execution()
# 实现一个加法算法
a = tf.constant(5.0)
b = tf.constant(6.0)
sum1 = tf.add(a, b)
sess = tf.compat.v1.Session()
print(sess.run(sum1))
print(a.graph)
print(sum1.graph)
print(sess.graph)
输出:
<tensorflow.python.framework.ops.Graph object at 0x000002AA4ADEC908>
<tensorflow.python.framework.ops.Graph object at 0x000002AA4ADEC908>
11.0
<tensorflow.python.framework.ops.Graph object at 0x000002AA52A1EA48>
<tensorflow.python.framework.ops.Graph object at 0x000002AA52A1EA48>
<tensorflow.python.framework.ops.Graph object at 0x000002AA52A1EA48>
哪些是op
会话
● tf.Session()
运行TensorFlow操作图的类,使用默认注册的图(可以指定运行图)
● 会话资源
会话可能拥有很多资源,如tf.Variable,tf.QueueBase和tf.ReaderBase,会话结束后需要进行资源释放
1.sess = tf.Session() sess.run(...) tf.QueueBase
2.使用上下文管理器
with tf.Session() as sess:
sess.run(...)
● config = tf.ConfigProto(log_device_placement=True)
● 交互式:tf.InteractiveSession()
会话的run()方法
● run(fetches,feed_dict=None,graph=None)
运行ops和计算tensor
● 嵌套列表,元祖,
namedtuple,dict或OrderedDict(重载的运算符也能运行)
● feed_dict允许调用者覆盖图中指定张量的值,提供给placeholder使用
● 返回值异常
RuntimeError:如果它Session处于无效状态(例如已关闭)。
TypeErrror:如果feches或feed_dict键是不合适的类型。
ValueError:如果feches或feed_dict键无效或引起Tensor不存在。
代码:
# coding:utf-8
import tensorflow.compat.v1 as tf
tf.disable_eager_execution()
# 训练模型
# 实时地提供数据去训练
# placeholder是一个占位符,feed_dict一个字典
plt = tf.placeholder(dtype=tf.float32, shape=[None, 3])
sess = tf.Session()
print(sess.run(plt, feed_dict={plt: [[1, 2, 3], [4, 5, 36]]}))