deep

xiaoxiao2021-03-01  14

深度学习在图形识别上的应用

深度学习与机器学习区别

特征提取方面:机器学习有很大一部分做特征工程,手动进行特征工程;深度学习抽取特征,处理特征,算法自己实现;深度学习适合用在难提取特征的图像、语音、自然语言领域

数据量:机器学习:数据量偏小;深度学习需要大量的训练数据集,训练深度神经网络需要大量的算力

算法

机器学习

朴素贝叶斯、决策树等

深度学习

神经网络

应用场景

图像、语音、文本

其它都可以去进行尝试

网易云课堂 cs231n

应用场景:图像、语音、文本;

深度学习框架对比:caffe torch theano tensorflow

主语言 从语言

TensorFlow 框架特点:

官网 高度灵活 语言多样 设备支持 tensorboard可视化

安装

CPU版本

GPU版本

英伟达官网介绍安装 ———>有资料

直接pip install

Tensorflow结构组成

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Operation)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)

一个构建图:图(程序)定义,作用是观察程序结构

张量:TensorFlow 中基本的数据对象

节点(OP):值的也是运算操作(也包括也一些不仅是提供)

一个执行图:会话去运行图程序

关闭程序警告

importos os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

什么是图结构

包含了一组tf.Operation代表计算单元的对象和tf.Tensor代表计算单元之间流动的数据。

打印图

print(tf.get_default_graph()) print(a.graph) print(b.graph) print(sess.graph)

创建一张图

g= tf.Graph() withg.as_default():  # 在g图中定义了一个operation  c= tf.constant(30.0)  assertc.graphisg

TensorBoard:可视化学习

为了更方便 TensorFlow 程序的理解、调试与优化,有了TensorBoard 的可视化工具

数据序列化-events文件

需要将数据生成一个序列化的 Summary protobuf 对象。

生成一个文件格式:events.out.tfevents.{timestamp}.{hostname}

一般在session中序列化

# 返回file_writer,写入事件文件到指定目录(最好用绝对路径),以提供给tensorboard使用 file_writer= tf.summary.FileWriter('/tmp/tensorflow/summary/test/', graph=sess.graph)

启动TensorBoard,在终端中

tensorboard--logdir="/tmp/tensorflow/summary/test/" # 后返回一个后台界面,在浏览器中访问

OP,哪些是OP

只要是tf下的API我们都可以称之为一个OP,也称之为指令

tf.Tensor 对象以输出张量的 tf.Operation 明确命名。张量名称的形式为 ":",其中:

"" 是生成该张量的指令的名称

"" 是一个整数,它表示该张量在指令的输出中的索引

打印出来的是张量值,可以理解成OP当中包含了这个值。并且每一个OP指令都对应一个唯一的名称,如上面的Const:0,这个在TensorBoard上面也可以显示

Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32) Tensor("add:0", shape=(), dtype=float32)

指令名称

tf.Graph对象为其包含的 tf.Operatio对象定义一个命名空间;每个创建新的 tf.Operation 或返回新的 tf.Tensor 的 API 函数可以接受可选的 name 参数。

例如,tf.constant(42.0, name="answer") 创建一个名为"answer"的新tf.Operation并返回一个名为"answer:0"的tf.Tensor。如果默认图已包含名为"answer"的指令,则TensorFlow会在名称上附加"1"、"2"等字符,以便让名称具有唯一性。

会话

运行程序

需要close关闭会话,释放资源

前端API,Python,R;会话开启程序、分配资源

如果以一张图开启会话;会话只能用用这张图中的资源

会话运行的是默认的这张图,所以要运行的OP必须是这张图中的

通过graph参数去修改运行的图,当然修改了图就要运行对应的图中的OP

运行会话,打印设备信息

# 运行会话并打印设备信息 sess= tf.Session(config=tf.ConfigProto(allow_soft_placement=True,   log_device_placement=True))

如何指定在GPU上面运行

with tf.device("GPU:0"): sum = tf.add(a, b)

会话的run()

sess.run(fetches,feed_dict=None, options=None, run_metadata=None)

fetches:运行多个使用列表,运行对象不能是一些非OP, Tensor对象;比如int, double

feed_dict:运行时候提供数据,一般不确定数据形状时,可以结合placeholder去使用,用在训练的时候实时提供要训练的批次数据

placehold当图当中,没有明确定义好数据的内容

plt= tf.placeholder(tf.float32, [None, 3]) ​ print(sess.run([sum_, sum_ma, a, b, plt], feed_dict= {plt: [[1, 2, 3], [4, 5, 6]]}))

张量

张量的阶、形状:0维:() 1维:(10, ) 2维:(3, 4) 3维:(3, 4, 5)

创建张量的指令

变化

类型:tf.cast

形状:

tf.reshape:会创建新的张量,不修改原来的张量形状,注意元素数量匹配

tf.set_shape:修改的是张量本身的形状、固定的形状不能修改,也不能跨阶数修改

TensorFlow 官网计算的API

变量OP:特殊的创建张量值的OP指令

创建变量 tf.Variabe

tensorboard --logdir='./tmp/summary'

显示初始化:sess.run(tf.global_variables_initializer())

可以通过assign修改原来的变量op当中的张量值,assign_add也可以修改原来的值,加上一个新的值

命名空间与共享变量 name全局唯一

tf.variable_scope去创建,会在OP的名字前面继续加上空间的名字

tf.get_variable: 如果一个命名空间中存在名字一样的,那么会报冲突错误,怎么解决?

with tf.variable_scope('my_scope1') as scope + scope.reuse_variables()

with tf.variable_scope("name", reuse=tf.AUTO_REUSE):

var2 = tf.get_variable(initializer=tf.random_normal([2, 3], mean=0.0, stddev=1.0), name="var2")

Tensorflow:维护一个所以OP名字的列表,不是以取的名字(自定义接受结果,python变量)去区分

复习线性回归

特征值 目标值

预测值 真实值 均方误差 梯度下降算法

准备数据 x y_true

根据数据建立线性模型:w: 随机初始化一个权重;b: 随机初始化一个偏置 y_predict = x * w + b

利用y_predict与y_true求出均方误差损失

利用梯度下降算法去减少模型损失,从而优化模型参数;学习率指定:0 ~ 1之间的值

学习率、步长、梯度爆炸

学习率不应设置过大、0~1之间的数,如果过大,导致梯度爆炸(损失、参数优化成nan)

学习率越大, 达到最终比较好的效果步长越小

学习率越小, 达到最终比较好的效果步长越大

大家都会选择比较小的学习率:0.01,0.001,0.0001,0.00001

梯度爆炸问题解决

重新设计网络

调整学习率

使用梯度截断(在训练过程中检查和限制梯度的大小)

使用激活函数

模型的要优化参数必须选择tf.Variable定义,并且可以指定trainable参数指定是否被训练

模型保存与加载

文件格式:checkpoint文件

保存:需要指定路径,指定要保存的会话,默认保存tf.Variable的OP,可以指定保存哪些tf.train.Saver(var_list=None,max_to_keep=5)

加载:本地文件的模型当中的一些变量名字与要进行加载训练的代码中的变量名字必须一致,代码训练以本地文件模型的参数值继续训练

转载请注明原文地址: https://www.6miu.com/read-4050184.html

最新回复(0)