文章目录

  • 深度学习
    • 深度学习介绍
      • 深度学习与机器学习的区别
      • 深度学习的应用场景:
      • 深度学习框架介绍
      • TensorFlow 的特点
      • TensorFlow 的安装
    • TensorFlow 框架介绍
      • TF 数据流图
      • 图与TensorBoard
      • 会话
      • 张量Tensor
      • 变量OP
      • 高级API
      • 案例:实现线性回归
    • 数据读取、神经网络基础
      • 文件读取流程
      • 图片数据
      • 二进制数据
      • TFRecords
      • 神经网络基础
      • 神经网络原理
      • 案例:Mnist手写数字识别
      • 线性神经网络局限性
    • 卷积神经网络
      • 卷积神经网络简介
      • 卷积神经网络原理
  • 思维导图图片形式

深度学习

深度学习介绍

深度学习与机器学习的区别

  • 特征提取方面

    • 机器学习:特征工程步骤是手动完成的,需要大量的专业领域知识
    • 深度学习:通常由多个层组成,他们通常将更简单的模型组合在一起,将数据从一层传递到另一层来构建更复杂的模型。通过大量数据自动得出模型,不需要人工特征提取环节
  • 数据量和计算i性能要求方面
    • 机器学习:随着数据量的增加,模型性能会有瓶颈
    • 深度学习:随着数据量的增加,模型的性能会越来越好,但是深度学需要大量的算力
  • 算法代表方面
    • 机器学习:朴素贝叶斯、决策树等
    • 深度学习:神经网络

深度学习的应用场景:

  • 图像识别
  • 自然语言处理
  • 语音技术

深度学习框架介绍

  • PyTorch和Torch 更适用于学术研究;TensorFlow、Caffe、Caffe2 更适用于工业界的生产环境部署
  • Caffe 适用于处理静态图像; Torch和PyTorch 更适用于动态图像;TensorFlow 在两种情况下都很实用
  • TensorFlow 和 Caffe 可在移动端使用

TensorFlow 的特点

  • 高度灵活
  • 语言多样
  • 设备支撑
  • TensorFlow 可视化

TensorFlow 的安装

  • CPU 版本
  • GPU 版本
  • 两个版本的比较
    • CPU:诸葛亮

      • 综合能力比较强
      • 核芯的数量更少
      • 更适用于处理连续性(sequential)任务。
    • GPU:臭皮匠
      • 专做某一个事情很好
      • 核芯的数量更多
      • 更适用于并行(parallel)任务

TensorFlow 框架介绍

TF 数据流图

  • TensorFlow结构分析

    • 构建图阶段

      • 流程图:定义数据(张量Tensor)和操作(节点Op)
    • 执行图阶段
      • 调用各方资源,将定义好的数据和操作运行起来
  • 数据流图介绍
    • Tensor - 张量 - 数据
    • Flow - 流动

图与TensorBoard

  • 什么是图结构

    • 数据(Tensor) + 操作(Operation)
  • 图相关操作
    • 默认图

      • 查看默认图的方法

        • 调用方法

          • 用tf.get_default_graph()
        • 查看属性
          • .graph
    • 创建图
      • new_g = tf.Graph()
        with new_g.as_default():
        定义数据和操作
  • TensorBoard:可视化学习
    • 数据序列化-events文件

      • tf.summary.FileWriter(path, graph=sess.graph)
    • 启动tensorboard
  • OP
    • 数据:Tensor对象
      操作:Operation对象 - Op
    • 常见OP
      • 操作函数 & 操作对象
        tf.constant(Tensor对象) 输入Tensor对象 -Const-输出 Tensor对象
        tf.add(Tensor对象1, Tensor对象2) 输入Tensor对象1, Tensor对象2 - Add对象 - 输出 Tensor对象3
    • 指令名称
      • 一张图 - 一个命名空间

会话

  • tf.Session:用于完整的程序当中
    tf.InteractiveSession:用于交互式上下文中的TensorFlow ,例如shell
  • 会话掌握资源,用完要回收 - 上下文管理器
  • 初始化会话对象时的参数
    • graph=None
      target:如果将此参数留空(默认设置),
      会话将仅使用本地计算机中的设备。
      可以指定 grpc:// 网址,以便指定 TensorFlow 服务器的地址,
      这使得会话可以访问该服务器控制的计算机上的所有设备。
      config:此参数允许您指定一个 tf.ConfigProto
      以便控制会话的行为。例如,ConfigProto协议用于打印设备使用信息
  • run(fetches,feed_dict=None)
  • feed操作
    • a = tf.placeholder(tf.float32, shape=)
      b = tf.placeholder(tf.float32, shape=)

张量Tensor

  • 张量(Tensor)

    • 张量 在计算机当中如何存储?

      • 标量 一个数字 0阶张量
        向量 一维数组 [2, 3, 4] 1阶张量
        矩阵 二维数组 [[2, 3, 4], 2阶张量
        [2, 3, 4]]
        ……
        张量 n维数组 n阶张量
    • 张量的类型(dtype)
      • 创建张量的时候,如果不指定类型
        默认 tf.float32
        整型 tf.int32
        浮点型 tf.float32
    • 张量的阶(shape)
  • 创建张量的指令
    • tf.zeros(shape=( * , * ))
    • tf.ones(shape = ( * , * ))
    • tf.canstant()
  • 张量的变换
    • 类型的修改

      • 1)ndarray.astype(type)
        tf.cast(tensor, dtype = *)
        不会改变原始的tensor
        返回新的改变类型后的tensor
        2)ndarray.tostring()
    • 形状的修改
      • 静态形状 - 初始创建张量时的形状

        • 什么情况下才可以改变/更新静态形状?
          只有在形状没有完全固定下来的情况下
          tensor.set_shape(shape)
      • 如何改变动态形状
        • tf.reshape(tensor, shape)
          不会改变原始的tensor
          返回新的改变形状后的tensor
          动态创建新张量时,张量的元素个数必须匹配
    • 张量的数学运算
      • 查API(https://www.tensorflow.org/api_docs/python/tf/math)

变量OP

  • 特点

    • 存储持久化
    • 可修改值
    • 可指定被训练
  • 作用:存储模型参数
  • 具体使用
    • 变量需要显式初始化,才能运行值
  • 使用tf.variable_scope()修改变量的命名空间
    • 使得结构更加清晰

高级API

  • 其他基础API
  • 高级API
  • 关于TensorFlow的API图示

案例:实现线性回归

  • 线性回归原理复习

    • 1)构建模型
      y = w1x1 + w2x2 + …… + wnxn + b
      2)构造损失函数
      均方误差
      3)优化损失
      梯度下降
  • 案例:实现线性回归的训练
    • 准备真实数据
      100样本
      x 特征值 形状 (100, 1)
      y_true 目标值 (100, 1)
      y_true = 0.8x + 0.7
    • 假定x 和 y 之间的关系 满足
      y = kx + b
      k ≈ 0.8 b ≈ 0.7
    • 流程分析:
      (100, 1) * (1, 1) = (100, 1)
      y_predict = x * weights(1, 1) + bias(1, 1)
      1)构建模型
      y_predict = tf.matmul(x, weights) + bias
      2)构造损失函数
      error = tf.reduce_mean(tf.square(y_predict - y_true))
      3)优化损失
      optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)
      5 学习率的设置、步数的设置与梯度爆炸
  • 增加其他功能
    • 增加变量显示

      • 1)创建事件文件
      • 2)收集变量
      • 3)合并变量
      • 4)每次迭代运行一次合并变量
      • 5)每次迭代将summary对象写入事件文件
    • 增加命名空间
      • 使代码结构更加清晰,TensorBoard 图结构更清楚
    • 模型的保存与加载
      • saver = tf.train.Saver(var_list=None,max_to_keep=5)
        1)实例化Saver
        2)保存
        saver.save(sess, path)
        3)加载
        saver.restore(sess, path)
    • 命令行参数的使用
      • 使用方式
      • 步骤
        • 1)tf.app.flags
          tf.app.flags.DEFINE_integer(“max_step”, 0, “训练模型的步数”)
          tf.app.flags.DEFINE_string(“model_dir”, " ", “模型保存的路径+模型名字”)
          2)FLAGS = tf.app.flags.FLAGS
          通过FLAGS.max_step调用命令行中传过来的参数
          3、通过tf.app.run()启动main(argv)函数

数据读取、神经网络基础

文件读取流程

  • 多线程 + 队列
  • 文件读取流程
    • 1)构造文件名队列

      • file_queue = tf.train.string_input_producer(string_tensor,shuffle=True)
    • 2)读取与解码
      • 文本:
        读取:tf.TextLineReader()
        解码:tf.decode_csv()
        图片:
        读取:tf.WholeFileReader()
        解码:
        tf.image.decode_jpeg(contents)
        tf.image.decode_png(contents)
        二进制:
        读取:tf.FixedLengthRecordReader(record_bytes)
        解码:tf.decode_raw()
        TFRecords
        读取:tf.TFRecordReader()
        key, value = 读取器.read(file_queue)
        key:文件名
        value:一个样本
    • 3)批处理队列
      • tf.train.batch(tensors, batch_size, num_threads = 1, capacity = 32, name=None)
    • 手动开启线程
      • tf.train.QueueRunner()
        开启会话:
        tf.train.start_queue_runners(sess=None, coord=None)

图片数据

  • 图像基本知识

    • 文本 特征词 -> 二维数组
      字典 one-hot -> 二维数组
      图片 像素值
    • 图片三要素
      • 长度、宽度、通道数

        • 黑白图、灰度图
          一个通道
        • 彩色图
          三个通道
    • TensorFlow中表示图片
      • Tensor对象
        指令名称、形状、类型
        shape = [height, width, channel]
    • 图片特征值处理
      • [samples, features]
        为什么要缩放图片到统一大小?
        1)每一个样本特征数量要一样多
        2)缩小图片的大小
        tf.image.resize_images(images, size)
    • 数据格式
      • 存储:uint8
        训练:float32
  • 案例:狗图片读取
    • 1)构造文件名队列
      file_queue = tf.train.string_input_producer(string_tensor,shuffle=True)
      2)读取与解码
      读取:
      reader = tf.WholeFileReader()
      key, value = reader.read(file_queue)
      解码:
      image_decoded = tf.image.decode_jpeg(value)
      3)批处理队列
      image_decoded = tf.train.batch([image_decoded], 100, num_threads = 2, capacity=100)
      手动开启线程

二进制数据

  • tensor对象
    shape:[height, width, channel] -> [32, 32, 3] [0, 1, 2] -> []
    [[32 * 32的二维数组],
    [32 * 32的二维数组],
    [32 * 32的二维数组]]
    –> [3, 32, 32] [channel, height, width] 三维数组的转置 [0, 1, 2] -> [1, 2, 0]
    [3, 2] -转置-> [2, 3]
    1)NHWC与NCHW
    T = transpose 转置

    3.3.2 CIFAR10 二进制数据读取
    流程分析:
    1)构造文件名队列
    2)读取与解码
    3)批处理队列
    开启会话
    手动开启线程

TFRecords

  • TFRecords 文件

    • 定义

      • TFRecords 其实是一种二进制文件,虽然它不如其他格式好理解,但是它能更好的利用内存,更方便复制和移动,并且不需要单独的标签文件
    • 使用步骤
  • Example 结构解析
    • 使用步骤
  • 读取TFRecords 文件API
    • 1)构造文件名队列
      2)读取和解码
      读取
      解析example
      feature = tf.parse_single_example(value, features={
      “image”:tf.FixedLenFeature([], tf.string),
      “label”:tf.FixedLenFeature([], tf.int64)
      })
      image = feature[“image”]
      label = feature[“label”]
      解码
      tf.decode_raw()
      3)构造批处理队列

神经网络基础

  • 神经网络

    • 输入层
    • 隐藏层
    • 输出层
  • 感知机
    • 可以解决 “ 与 ” 、 “ 或 ” 问题 , 不能解决 “ 异或问题 ”

神经网络原理

  • 逻辑回归
    y = w1x1 + w2x2 + …… + wnxn + b
    sigmoid -> [0, 1] -> 二分类问题
    损失函数:对数似然损失
    用神经网络进行分类
    假设函数
    y_predict =
    softmax - 多分类问题
    构造损失函数
    loss = 交叉熵损失
    优化损失
    梯度下降
    3.6.1 softmax回归 - 多分类问题
    假设要进行三分类
    2.3, 4.1, 5.6
    3.6.2 交叉熵损失

案例:Mnist手写数字识别

  • Mnist 数据获取API

线性神经网络局限性

卷积神经网络

卷积神经网络简介

  • 与传统多层神经网络对比
  • 发展历史
  • 卷积网络在ImageNet比赛错误率

卷积神经网络原理

  • 结构(隐藏层)

    • 卷积层
      通过在原始图像上平移来提取特征
      激活层
      增加非线性分割能力
      池化层(pooling layer)/下采样(subsample)
      减少学习的参数,降低网络的复杂度(最大池化和平均池化)
      全连接层
  • 卷积层
    • 每层卷积层都是由若干卷积单元(卷积核)组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的
    • 卷积运算的目的是特征提取,第一层卷积层可能只能提取一些低级的特征,如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征
    • 卷积核(filter/过滤器/模型参数/卷积单元)
      • 四大要素

        • 卷积核个数
        • 卷积核大小
          • 通常设置为:11、33、5*5
        • 卷积核步长
        • 卷积核零填充大小
    • 总结 - 输出大小计算公式
    • 卷积网络API
  • 激活函数
    • ReLU = max(0,x)

      • 函数图像
      • 效果图
    • 采用新的激活函数的原因
    • 激活函数API
  • 池化层
    • 主要作用

      • 特征提取,减少参数数量
    • 主要方法
      • max_pooling : 取池化窗口的最大值
      • avg_pooling:取池化窗口的平均值
    • 利用了图像上像素点之间的联系
    • 池化层API
  • 全连接层
    • 主要作用

      • “ 分类器 ”

思维导图图片形式

深度学习思维导图(基于TensorFlow框架)相关推荐

  1. 吴恩达深度学习思维导图--来自刚入门的学生的自制版

    吴恩达深度学习思维导图 学习吴恩达老师的课一学期了,在课程老师的要求下每周视频课都需要做思维导图,最后做了一份汇总版本的思维导图,与各位共享交流一下. 思维导图内的图片和部分内容是结合吴恩达老师的视频 ...

  2. 【人工智能】深度学习思维导图、人工智能思维导图、深度学习综述

    如果显示不清晰,文末有百度云下载链接 本思维导图高清图片版本 请在公众号[计算机视觉联盟]后台回复[20191026]即可获得百度云pdf下载链接

  3. vs2017 开始自己的第一个深度学习例子——MNIST分类(基于TensorFlow框架)

    这是针对于博客vs2017安装和使用教程(详细)的深度学习例子--MNIST分类项目新建示例 目录 一.新建项目 二.运行代码 三.生成结果 一.新建项目 1.项目创建参照博主文章:vs2017 开始 ...

  4. 人工智能——机器学习与深度学习思维导图

    目录 0 综述 1 基本模型 1.1 回归 1.2 决策树与随机森林 1.3 SVM​ 1.4 最大熵与EM算法 2 特征工程 2.1 特征工程 2.2 多算法组合与模型最优 3 工业实践 3.1 S ...

  5. 深度学习思维导图(2021版)开放下载了!

    随着世界技术的迭代与发展,人工智能和机器学习正在超自动化领域,扮演着越来越重要的角色.2020年的冠状病毒疫情突发,整个世界都在防疫的道路上披荆斩棘.人工智能发挥了重大作用,智能测温.智能消毒.智能建 ...

  6. 深度学习入门之神经网络的学习思维导图

    第4章 神经网络的学习思维导图

  7. 《深度学习案例精粹:基于TensorFlow与Keras》深度学习常用训练案例合集

    #好书推荐##好书奇遇季#<深度学习案例精粹:基于TensorFlow与Keras>,京东当当天猫都有发售.本书配套示例源码.PPT课件.思维导图.数据集.开发环境与答疑服务. <深 ...

  8. 教你如何学习思维导图

    我们学习思维导图,是否成效,有进步其实决定因素很多,而我们能做的就是在大家起步都一样的时候,比他人多掌握一份思维导图技巧,我们在思维导图的路上也就能够走得更远一些. 第一 态度.这是学习和掌握思维导图 ...

  9. 2023最新软件测试学习思维导图(从小白到大师进阶之路)

    如下是我工作之余熬夜整理的软件测试学习思维导图,通过回顾多年的从业经验,总结提炼出来的一些东西,希望能对大家有些帮助,特别是刚入门软件测试行业或将要加入软件测试行业的同学,可以认真看一下,可以作为参考 ...

最新文章

  1. Mysql依赖库Boost的源码安装,linux下boost库的安装
  2. ESXi6.5环境搭建(五:常见问题及解决方案实验总结)
  3. 初学者的困惑:OOP与一般编程的区别
  4. 为什么我恨Scrum?
  5. Angularjs Controller 间通信机制
  6. C++之运算符重载(上)
  7. Sketch 76 for mac(矢量绘图设计软件)
  8. 广州网站建设哪些公司好
  9. [译] Dweb: Beaker--去中心化的浏览器 (中英)
  10. “朝抵抗力最大的路径上走”
  11. 挂起和阻塞区别?sleep()和wait()的区别?
  12. Java根据IP返回 省市,
  13. 接口测试实战项目02:根据接口文档测试
  14. intellij idea 合并分支到主分支,主分支代码同步到某一分支
  15. 这个“读心术”的算法可以解读你大脑中的图像
  16. Python+Potato API实现关键字聊天机器人
  17. 【UTAU插件】辅音速度重载
  18. DDD 实战 (5):战略设计之上下文映射和系统分层架构
  19. ECOPASSPORT认证辅导,什么是Eco-Passport认证,Eco-Passport认证的意义
  20. Logback新版本报no applicable action for [Encoding]问题

热门文章

  1. 呼叫中心中继网关参数选型
  2. 购物车模块redis和mysql_redis解决购物车的问题
  3. 浙江大学计算机科学排名,2017浙江大学专业排名结果
  4. 3d视觉效果html,jQuery炫酷网页3D背景视觉差特效
  5. 领导的沉默,背后到底隐藏着什么?
  6. 参会指南 · 2018中国软件生态大会西安站
  7. 新发的日常小实验——Unity UGUI Image图片镜像对称效果(轴对称)
  8. win10下git命令窗口快速命令
  9. C语言输出汉字版乘法口诀表,C语言实现打印乘法口诀表
  10. 33岁想从头学做网页设计_您想如何学习网页设计?