《TensorFlow:实战Google深度学习框架(第2版)》是一本为深度学习爱好者量身定制的宝典,详细解读了TensorFlow框架的核心概念和高级技巧,这本书通过丰富的实例和清晰的解释,帮助读者深刻理解如何在各种场景下有效运用TensorFlow进行深度学习项目的开发,更新至第二版,它不仅覆盖了最新的TensorFlow 2.x版本的特性,包括改进的API和易用性增强,还增加了对动态图的支持等内容,使得实时数据处理和模型调试更为便捷,此书深度结合了理论与实践,无论是初学者还是有经验的开发者,都能从中获得宝贵的知识和灵感,进一步探索深度学习的潜力。
TensorFlow:实战Google深度学习框架 电子书封面
读者评价
挺不错的,不过技术发展太快,TensorFlow现在都1.4版本了,少量代码有变动
书的实用性很强,正好需要学TensorFlow,看看
tensorflow开源到现在这么短的时间居然就有书了,虽然内容不多又有点小贵,但是总算不用纠结找学习资料的事了,只是讲了基础的一些应用,其他更高级的应用还需要自己去探索。还有我很好奇这本书和另一本tensorflow实战有什么区别?
书的内容比较紧凑对于快速上手和了解tensorflow框架适合,但内容还不够专业官方文档是更好的资料
内容介绍
TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。《TensorFlow:实战Google深度学习框架(第2版)》为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手TensorFlow和深度学习。书中省略了烦琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow示例介绍如何使用深度学习解决实际问题。书中包含深度学习的入门知识和大量实践经验,是走进这个前沿、热门的人工智能领域的优选参考书。
第2版将书中所有示例代码从TensorFlow 0.9.0升级到了TensorFlow 1.4.0。在升级API的同时,第2版也补充了更多只有TensorFlow 1.4.0才支持的功能。另外,第2版还新增两章分别介绍TensorFlow高层封装和深度学习在自然语言领域应用的内容。
《TensorFlow:实战Google深度学习框架(第2版)》适用于想要使用深度学习或TensorFlow的数据科学家、工程师,希望了解深度学习的大数据平台工程师,对人工智能、深度学习感兴趣的计算机相关从业人员及在校学生等。
目录
- 第1章 深度学习简介
- 第2章 TensorFlow环境搭建
- 第3章 TensorFlow入门
- 第4章 深层神经网络
- 第5章 MNIST数字识别问题
- 第6章 图像识别与卷积神经网络
- 第7章 图像数据处理
- 第8章 循环神经网络
- 第9章 自然语言处理
- 第10章 TensorFlow高层封装
- 第11章 TensorBoard可视化
- 第12章 TensorFlow计算加速小结
首先运行train.py程序后,运行网络框架,网络部分较好理解,输入是[batch_size,448,448,3],输出是[7*7*30]维向量,具体为什么7*7*30=7*7*20+7*7*2+7*7*2*4得来的,比较难理解的是求loss,在这里困住了蛮久: loss的求解分成3部分,在输出的向量中,前面7*7*20是物体分类,这个好理解,7*7*2是判断是否有物体的confidence值,这个有点难理解,后面根据自己的理解是,因为每个格子有两个bbox,每个bbox都有它的confidence值,这这个向量的作用是判断最后在输出时,是输出哪个bbox,最后的7*7*2*4是每个bbox的坐标,x_center,y_center,w,h,这个相对来说也好理解。 因为得到的标签是7*7*25,具体顺序是7*7*1+7*7*4+7*7*20, 注意的是,在标签上,7*7*1是表示,在7*7格子中,有物体的格子为1,没有物体的格子为0 因为输出时是用到两个bbox,所以在坐标标签时,需要拓展一次,用tf.tile函数就行,另外注意的是,XML文件的坐标是左上以及右下,在制作标签时需要进行中心原点归一化以及相应的更改成坐标为x_center,y_center,w,h 在求loss时,里面有一个很重要的向量为offset,开始弄了很久没弄明白干什么用,后面弄明白,因为开始原点坐标已经归一化了,加上offset是为了把坐标归一化成整个网络,比如:假如坐标归一化成(0.5,0.6),不好表示在哪一个格子中, 如果在这基础上分别加上0→6,再除以7,就能很直观的表达中心点所在的格子坐标,如果这个中心坐标在【4,5】格子内,则最后输出的中心坐标为【4.5,5.6】,后面的对宽和高进行平方,具体原因有相关论文解释 第二个求的是计算iou,主要思想是分别求每个bbox中,预测的矩阵与实际标签的矩阵之间的关系,iou值等于预测矩阵与标签矩阵相交的面积/预测矩阵面积+标签矩阵面积,取这个值较大的bbox为输出的对象,这是计算有物体的所在的格子 class_loss=标签的7*7*1*(标签的7*7*20-预测的7*7*20),最终得到的是7*7*20的三维矩阵,然后求所有值的平方和并取平均。因为有两个bbox,所以再乘以2 object_loss=较大iou的bbox*标签的7*7*1*(预测的7*7*2-iou值),同样的求平方和的平均数,并乘以1 noobject_loss=没有物体的的检测损失,算法跟有物体的类似 coord_loss=在object上增加一个维度7*7*2*1*(预测的坐标7*7*2*4-标签坐标7*7*2*4),求平方和平均数,并乘以5 这几个loss所乘的偏置不一样,是因为重要性决定的 然后把这几个损失值相加成最终损失值,案列中用到的函数是tf.losses.add_loss以及tf.loss.get_total_loss 随后是提取图片数据以及标签数据,这里没什么难度,比较简单,最终返回的是7*7*25的标签 最后是正式训练 整个过程,有点难理解的是loss的计算。 在测试过程中,有点难理解的也是判断物体并且显示,但类似于loss的求解
Ⅰ.老内容 这里直接翻译的官方文档的介绍,TensorFlow 使用***图***来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op获得 0 个或多个 Tensor , 执行计算, 产生 0 个或多个 Tensor . 每个 Tensor 是一个类型化的多维数组.tensor也是tensorflow中的核心数据类型。 一个 TensorFlow 图(graph)描述了计算的过程. 为了进行计算, 图必须在会话(session)里被启动. 会话将图的op分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的 tensor 返回. TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. Ⅱ.新内容 上面的都是之前的老内容,需要了解,但是不是以后编写tensorflow代码的核心了,现在tensorflow默认是类似于pytorch的所见所得的方式。 四.基本例子 前面说了那么多是很抽象的,这里给出一个基本例子,这个例子现在都可以不用懂其中的含义。现在你只要知道,这个例子能够跑出结果,和这创建两个例子最基本的流程就行了。后面的文章会详细分析。