本系列文章md笔记(已分享)主要讨论深度学习相关知识。可以让大家熟练掌握机器学习基础,如分类、回归(含代码),熟练掌握numpy,pandas,sklearn等框架使用。在算法上,掌握神经网络的数学原理,手动实现简单的神经网络结构,在应用上熟练掌握TensorFlow框架使用,掌握神经网络图像相关案例。具体包括:TensorFlow的数据流图结构,神经网络与tf.keras,卷积神经网络(CNN),商品物体检测项目介绍,YOLO与SSD,商品检测数据集训练和模型导出与部署。
全套笔记和代码自取地址: https://gitee.com/yinuo112/Technology/tree/master/深度学习/深度学习笔记/1.md
感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~
共 9 章,60 子模块,总字数:130763
深度学习本文
要求
- 熟练掌握机器学习基础,如分类、回归
- 熟练掌握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的特点
官网:https://www.tensorflow.org/
-
语言多样(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:TensorFlow 针对移动和嵌入式设备的轻量级解决方案提供了在 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 https://mirrors.aliyun.com/pypi/simple
- MacOS安装
pip install tensorflow==1.12 -i https://mirrors.aliyun.com/pypi/simple
注:如果需要下载GPU版本的(TensorFlow只提供windows和linux版本的,没有Macos版本的)参考官网https://www.tensorflow.org/install/gpu?hl=zh-cn,
1、虚拟机下linux也是用不了GPU版本TensorFlow
2、本机单独的windows和本机单独的unbuntu可以使用GPU版本TensorFlow,需要安装相关驱动
1.2.4 Tenssorlfow使用技巧
- 使用**tf.keras**构建、训练和验证您的模型,tf相关API用于损失计算修改等
- tensorflow提供模型训练模型部署
TensorFlow介绍
说明TensorFlow的数据流图结构
应用TensorFlow操作图
说明会话在TensorFlow程序中的作用
应用TensorFlow实现张量的创建、形状类型修改操作
应用Variable实现变量op的创建
应用Tensorboard实现图结构以及张量值的显示
应用tf.train.saver实现TensorFlow的模型保存以及加载
应用tf.app.flags实现命令行参数添加和使用
应用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 中的基本数据对象
- 节点:提供图当中执行的操作
2.1.2 数据流图介绍
<figure class="half">[外链图片转存中...(img-Sr9nrBVw-1704455564725)] [外链图片转存中...(img-mMUkBM4w-1704455564726)]</figure> TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源框架。
节点(Operation)在图中表示数学操作,线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。