1.深度学习
深度学习,如深度神经网络、卷积神经网络和递归神经网络已被应用计算机视觉、语音识别、图像识别(卷积神经网络)、自然语言处理(循环神经网络)、音频识别与生物信息学等领域并获取了极好的效果。
1.1 深度学习之运行速度
因为深度学习涉及到的数据量非常的大,特征非常多,再加上算法设计的本身比较复杂,所以计算需要等很长时间去优化。
cpu: 运⾏操作系统,吹处理业务 计算能⼒不是特别突出。gpu:专⻔为计算设计的
所以,tensorflow的版本分别为cpu和gpu两个版本。
2. tensorflow图的结构
2.1 tensorflow实现加法运算
import tensorflow
as tf
import os
os
.environ
['TF_CPP_MIN_LOG_LEVEL']='2'
a
= tf
.constant
(5.0)
b
= tf
.constant
(6.0)
sum1
= tf
.add
(a
, b
)
print(sum1
)
with tf
.Session
() as sess
:
print(sess
.run
(sum1
))
输出的结果为:
2.2 数据流图
框架
计算密集型:tensorflow(cpu计算)IO密集型:django,scrapy(磁盘操作,HTTP请求等)
2.3 tensorflow进阶
2.3.1 图
图默认已经注册,一组表示 tf.Operation 计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象。获取调用:
tf.get_default_graph()op、sess或者tensor 的graph属性。
import tensorflow
as tf
import os
os
.environ
['TF_CPP_MIN_LOG_LEVEL']='2'
a
= tf
.constant
(5.0)
b
= tf
.constant
(6.0)
sum1
= tf
.add
(a
, b
)
graph
= tf
.get_default_graph
()
print(graph
))
with tf
.Session
() as sess
:
print(sess
.run
(sum1
))
print(a
.graph
)
print(sum1
.graph
)
print(sess
.graph
)
输出的结果为:
2.3.2 图的创建
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
)
2.3.3 Session会话
会话把tensorflow框架分成了前端系统和后端系统:
前端系统:定义图的结构后端系统:运算图结构
tf.Session() 运行TensorFlow操作图的类,使用默认注册的图(可以指定运行图)
会话资源
会话可能拥有很多资源,如 tf.Variable,tf.QueueBase和tf.ReaderBase,会话结束后需要进行资源释放。
sess = tf.Session() sess.run(…) sess.close()使用上下文管理器 with tf.Session() as sess: sess.run(…)
config=tf.ConfigProto(log_device_placement=True)
交互式:tf.InteractiveSession()
2.3.4 会话的run()方法
import tensorflow
as tf
import os
os
.environ
['TF_CPP_MIN_LOG_LEVEL']='2'
a
= tf
.constant
(5.0)
b
= tf
.constant
(6.0)
sum1
= tf
.add
(a
, b
)
print(sum1
)
with tf
.Session
() as sess
:
print(sess
.run
([a
,b
,sum1
]))
输出的结果为: 注意: sess.run([a,b,sum1])不要写成sess.run(a,b,sum1)他会被误认为传递的3个参数。
2.3.4.1 有关重载的运算符运行案例
var1
= 2.0
var2
= 3
sum2
= var1
+ var2
with tf
.Session
() as sess
:
print(sess
.run
([sum2
]))
上述代码不能运行
var1
= 2.0
a
= tf
.constant
(5.0)
sum2
= var1
+ a
with tf
.Session
() as sess
:
print(sess
.run
([sum2
]))
输出的结果为:正确
2.3.4.2 placeholder作为占位符的使用[Tensorflow Feed操作]
语法:placeholder提供占位符,run时候通过feed_dict指定参数
plt
= tf
.placeholder
(tf
.float32
, [None, 3])
with tf
.Session
(config
=tf
.ConfigProto
(log_device_placement
=True)) as sess
:
print(sess
.run
(plt
, feed_dict
={plt
: [[1, 2, 3], [4, 5, 36], [2, 3, 4]]}))
输出的结果为:
2.3.5 张量的定义
import tensorflow
as tf
import os
os
.environ
['TF_CPP_MIN_LOG_LEVEL']='2'
a
= tf
.constant
(5.0)
plt
= tf
.placeholder
(tf
.float32
, [2, 3, 4])
print(plt
)
with tf
.Session
(config
=tf
.ConfigProto
(log_device_placement
=True)) as sess
:
print(a
.graph
)
print("---------")
print(a
.shape
)
print(plt
.shape
)
print("-------")
print(a
.name
)
print("-------")
print(a
.op
)
输出的结果为:
2.3.6 张量的动态形状与静态形状
动态性状和静态形状:在于有没有⽣成⼀个新的张量数据.
TensorFlow中,张量具有静态形状和动态形状
静态形状: 创建一个张量或者由操作推导出一个张量时,初始状态的形状 tf.Tensor.get_shape:获取静态形状 tf.Tensor.set_shape():更新Tensor对象的静态形状,通常用于在不能直接推 断的情况下
动态形状: 一种描述原始张量在执行过程中的一种形状(动态变化) tf.reshape:创建一个具有不同动态形状的新张量
plt
= tf
.placeholder
(tf
.float32
, [None, 2])
print(plt
)
plt
.set_shape
([3, 2])
print(plt
)
plt_reshape
= tf
.reshape
(plt
, [2, 3])
print(plt_reshape
)
with tf
.Session
() as sess
:
pass
输出的结果为:
要点
2.3.7 张量的运算
创建随机张量