头图

教程总体简介:要求 目标 1.1 深度学习与机器学习的区别 学习目标 1.1.1 区别 1.1.1.1 特征提取方面 1.1.2 算法代表 深度学习的应用场景 1.2 深度学习框架介绍 1.2.2 TensorFlow的特点 深度学习介绍 2.1 TF数据流图 2.1.1 案例:TensorFlow实现一个加法运算 2.2 图与TensorBoard 2.2.1 什么是图结构 2.2.2 图相关操作 1 默认图 2 创建图 2.2.4 OP 2.2.4.2 指令名称 2.3 会话 卷积神经网络 2.5 CNN网络实战技巧 3.1 迁移学习案例 3.1.1 案例:基于VGG对五种图片类别识别的迁移学习 3.1.1.2 数据集以及迁移需求 3.1.1.3 思路和步骤 3.1.1.4 训练的时候读取本地图片以及类别 假定最后一层CNN的层输出为(None, 8, 8, 2048) 取每一个特征图的平均值作为输出,用以替代全连接层 100为类别 在__init__中添加 1.1 项目演示 1.2 开发环境搭建 3.2 目标检测任务描述 3.2.4 目标定位的简单实现思路 商品物体检测项目介绍 3.3 R-CNN 3.3.1 目标检测-Overfeat模型 3.3.7 问题? 3.3.8 SPPNet 3.5 Faster R-CNN 3.5.2 RPN原理 3.5.4 效果对比 YOLO与SSD 3.6 YOLO(You only look once) 3.6.1 YOLO 3.6.2 单元格(grid cell) 3.6.3 非最大抑制(NMS) 3.6.4 训练 3.7 SSD(Single Shot MultiBox Detector) 3.7.1 SSD 问题:SSD中的多个Detector & classifier有什么作用? 3.7.2 训练与测试流程 SSD网络接口实现 4.3 案例:SSD进行物体检测 4.3.1 案例效果 4.3.3 步骤分析以及代码 循环读取图片进行多个图片输出检测 预测 定义BBox工具 使用非最大抑制算法过滤 5.1 项目训练结构介绍 5.1.1 项目目录结构 商品检测数据集训练 5.2 标注数据读取与存储 5.2.1 案例:xml读取本地文件存储到pkl 5.2.1.1 解析结构 one_hot编码函数 5.3 训练 5.3.3 多GPU训练代码修改 5.4 本地预测测试 5.4.1 预测代码 5.6 Web与模型服务对接逻辑 5.5 模型导出 5.4.1 keras 模型进行TensorFlow导出 Docker部署环境使用介绍 5.7 TF Serving 与 Web开启服务 4.8.2 安装Tensorflow Serving 5.7.2 案例操作:commodity模型服务运行 TensorFlow Client对接模型服务 Web Server开启 模型导出与部署 2.4 张量 2.4.1 张量(Tensor) 2.4.1.1 张量的类型 2.4.4 张量的数学运算 2.5 变量OP 2.5.1 创建变量 2.5.2 使用tf.variable_scope()修改变量的命名空间 2.7 案例:实现线性回归 2.7.1 线性回归原理复习 2.7.3 增加其他功能 2 增加命名空间 3 模型的保存与加载 4 命令行参数使用 完整代码 1.2 神经网络基础 tf.keras介绍 神经网络与tf.keras 1.4 深层神经网络 3.1 卷积神经网络(CNN)原理 2.2案例:CIFAR100类别分类 2.2.2 API 使用 2.2.3 步骤分析以及代码实现(缩减版LeNet5) 2.2 梯度下降算法改进 2.4 经典分类网络结构 2.4.6 案例:使用pre_trained模型进行VGG预测

完整笔记资料代码:https://gitee.com/yinuo112/AI/tree/master/深度学习/嘿马深度学...

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

深度学习

要求

  • 熟练掌握机器学习基础,如分类、回归
  • 熟练掌握numpy,pandas,sklearn等框架使用

目标

  • 算法

    • 掌握神经网络的数学原理
    • 手动实现简单的神经网络结构
  • 应用

    • 熟练掌握TensorFlow框架使用
    • 掌握神经网络图像相关案例

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

学习目标

  • 目标

    • 知道深度学习与机器学习的区别
  • 应用

1.1.1 区别

1.1.1.1 特征提取方面

  • 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识
  • 深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,通过将数据从一层传递到另一层来构建更复杂的模型。通过大量数据的训练自动得到模型,不需要人工设计特征提取环节

    深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特的部分。因此,减少了为每个问题开发新特征提取器的任务。适合用在难提取特征的图像、语音、自然语言领域

1.1.1.2 数据量

机器学习需要的执行时间远少于深度学习,深度学习参数往往很庞大,需要通过大量数据的多次优化来训练参数。

第一、它们需要大量的训练数据集

第二、是训练深度神经网络需要大量的算力

可能要花费数天、甚至数周的时间,才能使用数百万张图像的数据集训练出一个深度网络。所以以后

  • 需要强大对的GPU服务器来进行计算
  • 全面管理的分布式训练与预测服务——比如[谷歌 TensorFlow 云机器学习平台]( CPU 和 GPU

1.1.2 算法代表

  • 机器学习

    • 朴素贝叶斯、决策树等
  • 深度学习

    • 神经网络

深度学习的应用场景

学习目标

  • 目标

    • 知道深度学习的主要应用场景
  • 应用

  • 图像识别

    • 物体识别
    • 场景识别
    • 车型识别
    • 人脸检测跟踪
    • 人脸关键点定位
    • 人脸身份认证
  • 自然语言处理技术

    • 机器翻译
    • 文本识别
    • 聊天对话
  • 语音技术

    • 语音识别

1.2 深度学习框架介绍

学习目标

  • 目标

    • 了解常见的深度学习框架
    • 了解TensorFlow框架
  • 应用

1.2.1 常见深度学习框架对比

tensorflow的github:

1.2.2 TensorFlow的特点

官网:[

  • 语言多样(Language Options)

    • TensorFlow使用C++实现的,然后用Python封装。谷歌号召社区通过SWIG开发更多的语言接口来支持TensorFlow
  • 使用分发策略进行分发训练

    • 对于大型 ML 训练任务,分发策略 API使在不更改模型定义的情况下,可以轻松地在不同的硬件配置上分发和训练模型。由于 TensorFlow 支持一系列硬件加速器,如 CPU、GPU 和 TPU
  • Tensorboard可视化

    • TensorBoard是TensorFlow的一组Web应用,用来监控TensorFlow运行过程
  • 在任何平台上的生产中进行强大的模型部署

一旦您训练并保存了模型,就可以直接在应用程序中执行它,或者使用部署库为其提供服务:

  • [TensorFlow 服务]( HTTP/REST 或 GRPC/协议缓冲区提供服务的 TensorFlow 库构建。
  • [TensorFlow Lite]( 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和嵌入式系统上部署模型的能力。
  • [tensorflow.js]( JavaScript 环境中部署模型,例如在 Web 浏览器或服务器端通过 Node.js 部署模型。TensorFlow.js 还支持在 JavaScript 中定义模型,并使用类似于 Kera 的 API 直接在 Web 浏览器中进行训练。

1.2.3 TensorFlow的安装

安装 TensorFlow在64 位系统上测试这些系统支持 TensorFlow:

  • Ubuntu 16.04 或更高版本
  • Windows 7 或更高版本
  • macOS 10.12.6 (Sierra) 或更高版本(不支持 GPU)

进入虚拟环境当中再安装。刚开始的环境比较简单,只要下载tensorflow即可

  • 环境包:

安装较慢,指定镜像源,请在带有numpy等库的虚拟环境中安装

  • ubuntu安装
pip install tensorflow==1.12 -i 
  • MacOS安装
pip install tensorflow==1.12 -i 

注:如果需要下载GPU版本的(TensorFlow只提供windows和linux版本的,没有Macos版本的)参考官网[

1、虚拟机下linux也是用不了GPU版本TensorFlow

2、本机单独的windows和本机单独的unbuntu可以使用GPU版本TensorFlow,需要安装相关驱动

1.2.4 Tenssorlfow使用技巧

  • 使用**[tf.keras](
  • tensorflow提供模型训练模型部署

深度学习介绍

2.1 TF数据流图

学习目标

  • 目标

    • 说明TensorFlow的数据流图结构
  • 应用

  • 内容预览

    • 2.1.1 案例:TensorFlow实现一个加法运算

      • 1 代码
      • 2 TensorFlow结构分析
    • 2.1.2 数据流图介绍

2.1.1 案例:TensorFlow实现一个加法运算

2.1.1.1 代码

def tensorflow_demo():
    """
    通过简单案例来了解tensorflow的基础结构
    :return: None
    """
    # 一、原生python实现加法运算
    a = 10
    b = 20
    c = a + b
    print("原生Python实现加法运算方法1:\n", c)
    def add(a, b):
        return a + b
    sum = add(a, b)
    print("原生python实现加法运算方法2:\n", sum)

    # 二、tensorflow实现加法运算
    a_t = tf.constant(10)
    b_t = tf.constant(20)
    # 不提倡直接运用这种符号运算符进行计算
    # 更常用tensorflow提供的函数进行计算
    # c_t = a_t + b_t
    c_t = tf.add(a_t, b_t)
    print("tensorflow实现加法运算:\n", c_t)
    # 如何让计算结果出现?
    # 开启会话
    with tf.Session() as sess:
        sum_t = sess.run(c_t)
        print("在sess当中的sum_t:\n", sum_t)

    return None
注意问题:警告指出你的CPU支持AVX运算加速了线性代数计算,即点积,矩阵乘法,卷积等。可以从源代码安装TensorFlow来编译,当然也可以选择关闭
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

2.1.1.2 TensorFlow结构分析

TensorFlow 程序通常被组织成一个构建图阶段和一个执行图阶段。

在构建阶段,数据与操作的执行步骤被描述成一个图。

在执行阶段,使用会话执行构建好的图中的操作。

  • 图和会话 :

    • 图:这是 TensorFlow 将计算表示为指令之间的依赖关系的一种表示法
    • 会话:TensorFlow 跨一个或多个本地或远程设备运行数据流图的机制
  • 张量:TensorFlow 中的基本数据对象
  • 节点:提供图当中执行的操作

2.1.2 数据流图介绍

<figure class="half"></figure>
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源框架。

节点(Operation)在图中表示数学操作,线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

TensorFlow介绍

说明TensorFlow的数据流图结构
应用TensorFlow操作图
说明会话在TensorFlow程序中的作用
应用TensorFlow实现张量的创建、形状类型修改操作
应用Variable实现变量op的创建
应用Tensorboard实现图结构以及张量值的显示
应用tf.train.saver实现TensorFlow的模型保存以及加载
应用tf.app.flags实现命令行参数添加和使用
应用TensorFlow实现线性回归

2.2 图与TensorBoard

学习目标

  • 目标

    • 说明图的基本使用
    • 应用tf.Graph创建图、tf.get_default_graph获取默认图
    • 知道开启TensorBoard过程
    • 知道图当中op的名字以及命名空间
  • 应用

  • 内容预览

    • 2.2.1 什么是图结构
    • 2.2.2 图相关操作

      • 1 默认图
      • 2 创建图
    • 2.2.3 TensorBoard:可视化学习

      • 1 数据序列化-events文件
      • 2 启动TensorBoard
    • 2.2.4 OP

      • 1 常见OP
      • 2 指令名称

2.2.1 什么是图结构

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

2.2.2 图相关操作

1 默认图

通常TensorFlow会默认帮我们创建一张图。

查看默认图的两种方法:

  • 通过调用tf.get_default_graph()访问 ,要将操作添加到默认图形中,直接创建OP即可。
  • op、sess都含有graph属性 ,默认都在一张图中
def graph_demo():
    # 图的演示
    a_t = tf.constant(10)
    b_t = tf.constant(20)
    # 不提倡直接运用这种符号运算符进行计算
    # 更常用tensorflow提供的函数进行计算
    # c_t = a_t + b_t
    c_t = tf.add(a_t, b_t)
    print("tensorflow实现加法运算:\n", c_t)

    # 获取默认图
    default_g = tf.get_default_graph()
    print("获取默认图:\n", default_g)

    # 数据的图属性
    print("a_t的graph:\n", a_t.graph)
    print("b_t的graph:\n", b_t.graph)
    # 操作的图属性
    print("c_t的graph:\n", c_t.graph)

    # 开启会话
    with tf.Session() as sess:
        sum_t = sess.run(c_t)
        print("在sess当中的sum_t:\n", sum_t)
        # 会话的图属性
        print("会话的图属性:\n", sess.graph)

    return None

2 创建图

  • 可以通过tf.Graph()自定义创建图
  • 如果要在这张图中创建OP,典型用法是使用tf.Graph.as_default()上下文管理器
def graph_demo():
    # 图的演示
    a_t = tf.constant(10)
    b_t = tf.constant(20)
    # 不提倡直接运用这种符号运算符进行计算
    # 更常用tensorflow提供的函数进行计算
    # c_t = a_t + b_t
    c_t = tf.add(a_t, b_t)
    print("tensorflow实现加法运算:\n", c_t)

    # 获取默认图

程序员一诺python
16 声望18 粉丝

python技术发烧友 资料收集狂