当前位置:首页 > 人工智能 > 深度学习pdf电子书下载
《21个项目玩转深度学习:基于TensorFlow的实践详解》电子书封面

21个项目玩转深度学习:基于TensorFlow的实践详解

  • 发布时间:2021年04月05日 23:00:07
  • 作者:何之源
  • 大小:32.35MB
  • 类别:深度学习电子书
  • 格式:PDF
  • 版本:超清版
  • 评分:7.5

    21个项目玩转深度学习:基于TensorFlow的实践详解 PDF 超清版

      给大家带来的一篇关于深度学习相关的电子书资源,介绍了关于深度学习、TensorFlow方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小32.35MB,何之源编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.1分

      Tags:深度学习 TensorFlow 

      内容介绍

      21个项目玩转深度学习:基于TensorFlow的实践详解

      出版时间:2018

      《21个项目玩转深度学习——基于TensorFlow的实践详解》以实践为导向,深入介绍了深度学习技术和TensorFlow框架编程内容。 通过本书,读者可以训练自己的图像识别模型、进行目标检测和人脸识别、完成一个风格迁移应用,还可以使用神经网络生成图像和文本,进行时间序列预测、搭建机器翻译引擎,训练机器玩游戏。全书共包含21个项目,分为深度卷积网络、RNN网络、深度强化学习三部分。读者可以在自己动手实践的过程中找到学习的乐趣,了解算法和编程框架的细节,让学习深度学习算法和TensorFlow的过程变得轻松和高效。本书代码基于TensorFlow 1.4及以上版本,并介绍了TensorFlow中的一些新特性。本书适合有一定机器学习基础的学生、研究者或从业者阅读,尤其是希望深入研究TensorFlow和深度学习算法的数据工程师,也适合对人工智能、深度学习感兴趣的在校学生,以及希望进入大数据应用的研究者。

      目录

      • 第1章MNIST机器学习入门1
      • 1.1MNIST数据集2
      • 1.1.1简介2
      • 1.1.2实验:将MNIST数据集保存为图片5
      • 1.1.3图像标签的独热(one-hot)表示6
      • 1.2利用TensorFlow识别MNIST8
      • 1.2.1Softmax回归8
      • 1.2.2两层卷积网络分类14
      • 1.3总结18
      • 第2章CIFAR-10与ImageNet图像识别19
      • 2.1CIFAR-10数据集20
      • 2.1.1CIFAR-10简介20
      • 2.1.2下载CIFAR-10数据21
      • 2.1.3TensorFlow的数据读取机制23
      • 2.1.4实验:将CIFAR-10数据集保存为图片形式30
      • 2.2利用TensorFlow训练CIFAR-10识别模型34
      • 2.2.1数据增强(DataAugmentation)34
      • 2.2.2CIFAR-10识别模型36
      • 2.2.3训练模型39
      • 2.2.4在TensorFlow中查看训练进度39
      • 2.2.5测试模型效果42
      • 2.3ImageNet图像识别模型44
      • 2.3.1ImageNet数据集简介44
      • 2.3.2历代ImageNet图像识别模型45
      • 2.4总结49
      • 第3章打造自己的图像识别模型50
      • 3.1微调(Fine-tune)的原理51
      • 3.2数据准备52
      • 3.3使用TensorFlowSlim微调模型56
      • 3.3.1下载TensorFlowSlim的源代码56
      • 3.3.2定义新的datasets文件57
      • 3.3.3准备训练文件夹59
      • 3.3.4开始训练60
      • 3.3.5训练程序行为62
      • 3.3.6验证模型正确率63
      • 3.3.7TensorBoard可视化与超参数选择64
      • 3.3.8导出模型并对单张图片进行识别65
      • 3.4总结69
      • 第4章DeepDream模型70
      • 4.1DeepDream的技术原理71
      • 4.2TensorFlow中的DeepDream模型实践73
      • 4.2.1导入Inception模型73
      • 4.2.2生成原始的DeepDream图像76
      • 4.2.3生成更大尺寸的DeepDream图像78
      • 4.2.4生成更高质量的DeepDream图像82
      • 4.2.5最终的DeepDream模型87
      • 4.3总结90
         

      读书笔记

      TensorFlow实现Softmax回归模型

      一、概述及完整代码

      对MNIST(MixedNational Institute of Standard and Technology database)这个非常简单的机器视觉数据集,Tensorflow为我们进行了方便的封装,可以直接加载MNIST数据成我们期望的格式.本程序使用Softmax Regression训练手写数字识别的分类模型.

      先看完整代码:

      import tensorflow as tf 
      from tensorflow.examples.tutorials.mnist import input_data 
       
      mnist = input_data.read_data_sets("MNIST_data", one_hot=True) 
      print(mnist.train.images.shape, mnist.train.labels.shape) 
      print(mnist.test.images.shape, mnist.test.labels.shape) 
      print(mnist.validation.images.shape, mnist.validation.labels.shape) 
       
      #构建计算图 
      x = tf.placeholder(tf.float32, [None, 784]) 
      W = tf.Variable(tf.zeros([784, 10])) 
      b = tf.Variable(tf.zeros([10])) 
      y = tf.nn.softmax(tf.matmul(x, W) + b) 
      y_ = tf.placeholder(tf.float32, [None, 10]) 
      cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) 
      train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) 
       
      #在会话sess中启动图 
      sess = tf.InteractiveSession() #创建InteractiveSession对象 
      tf.global_variables_initializer().run() #全局参数初始化器 
      for i in range(1000): 
       batch_xs, batch_ys = mnist.train.next_batch(100) 
       train_step.run({x: batch_xs, y_: batch_ys}) 
       
      #测试验证阶段 
      #沿着第1条轴方向取y和y_的最大值的索引并判断是否相等 
      correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) 
      #转换bool型tensor为float32型tensor并求平均即得到正确率 
      accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 
      print(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels})) 
      
      

      二、详细解读

      首先看一下使用TensorFlow进行算法设计训练的核心步骤

      1.定义算法公式,也就是神经网络forward时的计算;

      2.定义loss,选定优化器,并制定优化器优化loss;

      3.在训练集上迭代训练算法模型;

      4.在测试集或验证集上对训练得到的模型进行准确率评测.

      首先创建一个Placeholder,即输入张量数据的地方,第一个参数是数据类型dtype,第二个参数是tensor的形状shape.接下来创建SoftmaxRegression模型中的weights(W)和biases(b)的Variable对象,不同于存储数据的tensor一旦使用掉就会消失,Variable在模型训练迭代中是持久存在的,并且在每轮迭代中被更新Variable初始化可以是常量或随机值.接下来实现模型算法y = softmax(Wx + b),TensorFlow语言只需要一行代码,tf.nn包含了大量神经网络的组件,头tf.matmul是矩阵乘法函数.TensorFlow将模型中的forward和backward的内容都自动实现,只要定义好loss,训练的时候会自动求导并进行梯度下降,完成对模型参数的自动学习.定义损失函数lossfunction来描述分类精度,对于多分类问题通常使用cross-entropy交叉熵.先定义一个placeholder输入真实的label,tf.reduce_sum和tf.reduce_mean的功能分别是求和和求平均.构造完损失函数cross-entropy后,再定义一个优化算法即可开始训练.我们采用随机梯度下降SGD,定义好后TensorFlow会自动添加许多运算操作来实现反向传播和梯度下降,而给我们提供的是一个封装好的优化器,只需要每轮迭代时feed数据给它就好.设置好学习率.

      构造阶段完成后, 才能启动图. 启动图的第一步是创建一个 Session 对象或InteractiveSession对象, 如果无任何创建参数, 会话构造器将启动默认图.创建InteractiveSession对象会这个Session注册为默认的Session,之后的运算也默认跑在这个Session里面,不同Session之间的数据和运算应该是相互独立的.下一步使用TensorFlow的全局参数初始化器tf.global_variables_initializer病直接执行它的run方法(这个全局参数初始化器应该是1.0.0版本中的新特性,在之前0.10.0版本测试不通过).

      至此,以上定义的所有公式其实只是Computation Graph,代码执行到这时,计算还没有实际发生,只有等调用run方法并feed数据时计算才真正执行.

      随后一步,就可以开始迭代地执行训练操作train_step.这里每次都从训练集中随机抽取100条样本构成一个mini-batch,并feed给placeholder.

      完成迭代训练后,就可以对模型的准确率进行验证.比较y和y_在各个测试样本中最大值所在的索引,然后转换为float32型tensor后求平均即可得到正确率.多次测试后得到在测试集上的正确率为92%左右.还是比较理想的结果.

      三、其他补充

      1.Sesssion类和InteractiveSession类

      对于product =tf.matmul(matrix1, matrix2),调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数.上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回矩阵乘法 op 的输出.整个执行过程是自动化的, 会话负责传递op 所需的全部输入. op 通常是并发执行的.函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op)的执行.返回值 'result' 是一个 numpy的`ndarray`对象.

      Session 对象在使用完后需要关闭以释放资源sess.close(). 除了显式调用 close 外, 也可以使用"with" 代码块 来自动完成关闭动作.

      with tf.Session() as sess: 
       result = sess.run([product]) 
       print result 
      

      为了便于使用诸如 IPython 之类的 Python 交互环境, 可以使用InteractiveSession代替 Session 类, 使用 Tensor.eval()和 Operation.run()方法代替 Session.run(). 这样可以避免使用一个变量来持有会话.

      # 进入一个交互式 TensorFlow 会话. 
      import tensorflow as tf 
      sess = tf.InteractiveSession() 
      x = tf.Variable([1.0, 2.0]) 
      a = tf.constant([3.0, 3.0]) 
      # 使用初始化器 initializer op 的 run() 方法初始化 'x' 
      x.initializer.run() 
      # 增加一个减法 sub op, 从 'x' 减去 'a'. 运行减法 op, 输出结果 
      sub = tf.sub(x, a) 
      print sub.eval() 
      # ==> [-2. -1.] 
      

      2.tf.reduce_sum

      首先,tf.reduce_X一系列运算操作(operation)是实现对一个tensor各种减少维度的数学计算.

      tf.reduce_sum(input_tensor, reduction_indices=None,keep_dims=False, name=None)

      运算功能:沿着给定维度reduction_indices的方向降低input_tensor的维度,除非keep_dims=True,tensor的秩在reduction_indices上减1,被降低的维度的长度为1.如果reduction_indices没有传入参数,所有维度都降低,返回只含有1个元素的tensor.运算最终返回降维后的tensor.

      演示代码:

      # 'x' is [[1, 1, 1] 
      #   [1, 1, 1]] 
      tf.reduce_sum(x) ==> 6 
      tf.reduce_sum(x, 0) ==> [2, 2, 2] 
      tf.reduce_sum(x, 1) ==> [3, 3] 
      tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]] 
      tf.reduce_sum(x, [0, 1]) ==> 6 
      

      3.tf.reduce_mean

      tf.reduce_mean(input_tensor, reduction_indices=None,keep_dims=False, name=None)

      运算功能:将input_tensor沿着给定维度reduction_indices减少维度,除非keep_dims=True,tensor的秩在reduction_indices上减1,被降低的维度的长度为1.如果reduction_indices没有传入参数,所有维度都降低,返回只含有1个元素的tensor.运算最终返回降维后的tensor.

      演示代码:

      # 'x' is [[1., 1. ] 
      #   [2., 2.]] 
      tf.reduce_mean(x) ==> 1.5 
      tf.reduce_mean(x, 0) ==> [1.5, 1.5] 
      tf.reduce_mean(x, 1) ==> [1., 2.] 

      4.tf.argmax

      tf.argmax(input, dimension, name=None)

      运算功能:返回input在指定维度下的最大值的索引.返回类型为int64.

      以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

      以上就是本次介绍的深度学习电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:实战Angular从零到一

      下一篇:Windows Server 2016 Active Directory配置指南

      查看更多
      读者心得
      78小时14分钟前回答

      使用TensorFlow实现二分类的方法示例

      使用TensorFlow构建一个神经网络来实现二分类,主要包括输入数据格式、隐藏层数的定义、损失函数的选择、优化函数的选择、输出层。下面通过numpy来随机生成一组数据,通过定义一种正负样本的区别,通过TensorFlow来构造一个神经网络来实现二分类。 一、神经网络结构 输入数据:定义输入一个二维数组(x1,x2),数据通过numpy来随机产生,将输出定义为0或1,如果x1+x21,则y为1,否则y为0。 隐藏层:定义两层隐藏层,隐藏层的参数为(2,3),两行三列的矩阵,输入数据通过隐藏层之后,输出的数据为(1,3),t通过矩阵之间的乘法运算可以获得输出数据。 损失函数:使用交叉熵作为神经网络的损失函数,常用的……

      84小时6分钟前回答

      python怎么安装tensorflow

      TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。 在命令提示符窗口中输入 (推荐学习:Python视频教程) pip3 install --upgrade tensorflow pip3命令是python特有的安装和管理第三方模块的命令。tensorflow只是python的一个功能模块。 下载过程可能很慢,十几分钟或更多,如果进度卡住了可以按几下回车试试看。 也可以下载tensorflow-1.6.0-cp36-cp36m-win_amd64.whl,下载后从命令提示符窗口进入到下载文件存放的文件夹,执行 pip3 install tensorflow-1.6.0-cp36-cp36m-win_amd64.whl 然后自动会下载安装tensorflow必须的其……

      144小时15分钟前回答

      tensorflow TFRecords文件的生成和读取的方法

      这篇文章主要介绍了关于tensorflow TFRecords文件的生成和读取的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 TensorFlow提供了TFRecords的格式来统一存储数据,理论上,TFRecords可以存储任何形式的数据。 TFRecords文件中的数据都是通过tf.train.Example Protocol Buffer的格式存储的。以下的代码给出了tf.train.Example的定义。 message Example { Features features = 1; }; message Features { mapstring, Feature feature = 1; }; message Feature { oneof kind { BytesList bytes_list = 1; FloatList float_list = 2; Int64List int64_list = 3; } }; 下面将介绍如何生成和读取tfrecords文件: 首先介绍tfrecords文件的生成,直接上代码: from random import shuffle impor……

      码农之家

      阙乐意 提供上传

      资源
      27
      粉丝
      6
      喜欢
      172
      评论
      13

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com