当前位置:迷你下载站软件实用工具Tensorflow实战gg深度学习框架PDF文档免费

Tensorflow实战gg深度学习框架PDF文档免费

免费整理了Tensorflow实战Google深度学习框架pdf扫描版给用户们下载,这本书为大家详细的介绍了TensorFlow深度学习框架,希望对大家有帮助,为使用TensorFlow深度学习框架的入门参考书,旨在帮助读者以更快、更有效的方式上手TensorFlow和深度学习。

Tensorflow实战gg深度学习框架PDF文档免费
  • 类型:实用工具
  • 大小:96.65MB
  • 版本:
  • 小编:
  • 更新:2017-12-19 13:00:00
立即下载

软件截图

软件介绍

免费整理了Tensorflow实战 深度学习框架pdf扫描版给用户们下载,这本书为大家详细的介绍了TensorFlow深度学习框架,希望对大家有帮助,为使用TensorFlow深度学习框架的入门参考书,旨在帮助读者以更快、更有效的方式上手TensorFlow和深度学习。书中省略了深度学习繁琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow样例程序介绍如何使用深度学习解决这些问题。《TensorFlow:实战 深度学习框架》包含了深度学习的入门知识和大量实践经验,是走进这个更新、更火的人工智能领域的推荐参考书。

Tensorflow实战gg深度学习框架PDF文档免费图片1

本书说明

只买了 tensorflow 实战 深度学习框架这本,另一本没买, 个人感觉虽然是国内作者写的,但是相比国内caffe书都是水文, 这本不仅是良心,讲的内容也不是随便抄抄改改的,是作者自己的心得和理解加上易懂的语言,有些知识点(比如 softmax的原理公式 )我花了好几个小时在网上看懂的知识,在书中介绍十分易懂,可惜是没早点出来这本书,我就可以少走很多路. 所以我从初学者和刚入门深度学习有过caffe经验的人来看这本书,觉得这是一本内容偏向研发者和初学者的一本书。

有关于另一本,我不好评论, 发行时间是2月份,估计我这本看完,另一本也会买回来看看,也不贵.如果题主在想哪一本先买,我建议先买 <<学习框架>>这本,但是最好是两本都买只要经济允许.可以知识互补,不能互补也能垫个桌角,这年头买几本书,说不定就是为中国的深度学习事业多贡献一份力量.

补充一句,我接触caffe之前,没有接触过任何深度学习的资料, CST 出生,但是没有ML的学历背景,从0开始,不免处处碰壁,一开始不看书直接上手框架就有很多黑人问号,比如为啥要l2范式等等,所以建议多买几本书,是出于我自己的水平,每本书都会介绍一些知识综合起来,填补知识空白点.从而找到自己的学习路径,因为不管哪本DL书写得再好,都只是在入门,后面的学习路径怎么走,我目前的办法,就是把不同的书的知识互相充实,毕竟走得深,用得好,而不是仅仅会用几个简单的模型,从工作出发我们还是需要训练我们自己的模型,并且提供很多优化方案。

Tensorflow实战 深度学习框架内容

1. MNIST数据处理

为了方便使用,Tensorflow提供了一个类来处理MNIST数据,这个类会自动下载并转化MNIST数据的格式,将数据从原始的数据包中解析成训练和测试神经网络时使用的格式。

2. 神经网络模型训练及不同模型结果对比

为了评测神经网络模型在不同参数下的效果,一般会从训练数据中抽取一部分作为验证数据。使用验证数据就可以评判不同参数取值下模型的表现。除了使用验证数据集,还可以采用交叉验证(cross validation)的方式来验证模型效果,但因为神经网络训练实践本身就比较长,采用cross validation会花费大量时间。所以在海量数据的情况下,一般会更多地采用验证数据集的形式来评测模型的效果。

为了说明验证数据在一定程度上可以作为模型效果的评判标准,我们将对比在不同迭代轮数的情况下,模型在验证数据和测试数据上的正确率。为了同时得到同一个模型在验证数据和测试数据上的正确率,可以在每1000轮的输出中加入在测试数据集上的正确率。

在神经网络结构的设计上,需要使用激活函数和多层隐藏层。在神经网络优化时,可以使用指数衰减的学习率,加入正则化的损失函数以及滑动平均模型。

3. 变量管理

Tensorflow提供了通过变量名称来创建或者获取一个变量的机制,通过这个机制,在不同的函数中可以直接通过变量的名字来使用变量,而不需要将变量通过参数的形式到处传递。Tensorflow中通过变量名称获取变量的机制主要时通过tf.get_variable和tf.variable_scope函数实现的。

除了tf.Variable函数,Tensorflow还提供了tf.get_variable函数来创建或者获取变量。当tf.get_variable用于创建变量时,它和tf.Variable的功能是基本等价的。

如:#下面这两个定义是等价的。

v = tf.get_variable("v",shape=[1],initializer=tf.constant_initilizer(1.0))

v = tf.Variable(tf.constant(1.0,shape=[1]),name="v")

Tensorflow提供了7种不同的初始化函数,如下:

初始化函数        功能        主要参数

tf.constant_initializer--->将变量初始化为给定常量----> 常量的取值

tf.random_normal_initializer--->将变量初始化为满足正太分布的随机值--->正太分布的均值和标准差

tf.truncated_normal_initializer--->将变量初始化为满足正太分布的随机值,但若随机出来的值偏离平均值超过两个标准差,那么这个数将会被重新随机---->正太分布的均值和标准差

tf.random_uniform_initializer--->将变量初始化为满足平均分布的随机值---->最大,最小值

tf.uniform_unit_scaling_initializer--->将变量初始化为满足平均分布但不影响输出数量级的随机值---->factor(产生随机值时乘以的系数)

tf.zeros_initializer--->将变量设置为全为0--->变量维度

tf.ones_initializer--->将变量设置为全为1--->变量维度

在上面的样例定义程序中,tf.get_variable首先会试图去创建一个名字为v的参数,如果创建失败(比如已经有同名的参数),那么这个程序就会报错。这是为了避免无意识的变量复用造成的错误。比如在定义神经网络参数时,第一层网络的权重已经叫weights了,那么在创建第二层神经网络时,如果参数名仍然叫weights,就会触发变量重用的错误。否则两层神经网络共用一个权重会出现一些比较难以发现的错误。如果需要通过tf.get_variable获取一个已经创建的变量,需要通过tf.variable_scope函数来生成一个上下文管理器,并明确指定在这个上下文管理器中,tf.get_variable将直接获取已经生成的变量。下面给出一段代码说明如何通过tf.variable_scope函数来控制tf.get_variable函数获取已经创建过的变量。

#在名字为foo的命名空间内创建名字为v的变量

with tf.variable_scope("foo"):

v = tf.get_variable("v",[1],initializer=tf.constant_initializer(1.0))

#因为在命名空间foo已经存在名字为v的变量,所有下面的代码将会报错:

with tf.variable_scope("foo"):

v = tf.get_variable("v",[1])

#在生成上下文管理器时,将参数reuse设置为True。这样tf.get_variable函数将直接获取已经生成的变量

with tf.variable_scope("foo",reuse=True):

v1 = tf.get_variable("v",[1])

print v == v1    #输出为True,代表v,v1是相同的Tensorflow中的变量

#将参数reuse设置为True时,tf.variable_scope将只能获取已经创建的变量,因为在命名空间bar中还没有创建变量v,所以下面的代码将会报错:

with tf.variable_scope("bar",reuse=True):

v = tf.get_variable("v",[1])

同样,如果tf.variable_scope函数使用参数reuse=None或者reuse=False创建上下文管理器,tf.get_variable操作将创建新的变量,如果同名的变量已经存在,则tf.get_variable函数将报错。另外,Tensorflow中tf.variable_scope函数是可以嵌套的。

使用变量管理后,就不再需要将所有变量都作为参数传递到不同的函数中了,当神经网络结构更加复杂,参数更多时,使用这种变量管理的方式将大大提高程序的可读性。

4. Tensorflow模型持久化

为了让训练结果可以复用,需要将训练得到的神经网络模型持久化(保存下来方便下次使用)。

Tensorflow提供了一个非常简单的API来保存和还原一个神经网络模型,这个API就是tf.train.Saver类。

saver = tf.train.Saver()

saver.save(sess,"/path/to/model/model.ckpt")

Tensorflow模型一般会存在后缀为.ckpt文件中,虽然上面的程序只指定了一个文件路径,但是在这个文件目录下会出现三个文件,这是因为Tensorflow会将计算图的结构和涂上的参数取值分来保存。第一个文件为model.ckpt.meta,它保存了Tensorflow计算图的结构,第二个文件为model.ckpt,这个文件保存了Tensorflow程序中每一个变量的取值,最后一个文件为checkpoint文件,这个文件保存了一个目录下所有的模型文件列表。

加载模型的代码:

saver = tf.train.Saver()

saver.restore(sess,"/path/to/model/model.ckpt")

上面给出的程序中,默认保存和加载了Tensorflow计算图上定义的全部变量。但有时候可能只需要保存或者加载部分变量,比如,可能有一个之前训练好的五层神经网络模型,但现在想尝试一个六层的神经网络,那么可以将前面五层神经网络中的参数直接加载到新的模型,而仅仅将最后一层神经网络重新训练。为了保存或者加载部分变量,在声明tf.train.Saver类时可以提供一个列表来指定需要保存或者加载的变量。比如在加载模型的代码中使用saver=tf.train.Saver([v1])命令来构建tf.train.Saver类,那么只有变量v1会被加载进来,如果运行修改后之家在v1的代码会得到变量未初始化的错误:

tensorflow.python.framework.errors.FailedPreconditionError:Attempting to use uninitialized value v2

因为v2没有被加载,所以v2在运行初始化之前

展开

下载地址

相关文章

最新资讯

猜你喜欢

网友评论

加载更多

网名(您的评论需要经过审核才能显示) 回复 [ ] 楼取消回复

火爆手游

本类排行