前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TF-char1-简介

TF-char1-简介

作者头像
皮大大
发布2021-03-02 16:18:24
5580
发布2021-03-02 16:18:24
举报
文章被收录于专栏:机器学习/数据可视化

TensorFlow深度学习-第一章

人工智能

人工智能、机器学习和神经网络之间的关系如下图:

机器学习分类
  1. 监督学习 样本和样本的标签,代表:线性回归、逻辑回归、支持向量机、随机森林
  2. 非监督学习 只有样本数据集,自行发现数据的模态,代表:自编码器、生成对抗网络
  3. 强化学习 通过与环境来交互学习解决问题的策略,代表:DQN、PPO
神经网络
特征
发展史
  1. 1943年:神经元数学模型,MP模型
f(x) = h(g(x))

其中

g(x)=\sum_ix_i,x_i\in{0,1}

通过

  1. 感知机模型

自动学习权重的神经元模型-感知机。输出值o和真实值y之间的误差用于调整神经元的权重系数{w_1,w_2,…,w_n}

  1. 反向传播法BP

现代深度学习的基础:反向传播法BackPropagation

  1. Hopfild连接、LSTM

1982年John Hopfildde 的循环连接的Hopfild网络提出

1997年LSTM被提出

  1. 浅层神经网络发展史
  1. 第三次浪潮

多层神经网络在MNIST数据集上的取得了优于SVM的效果

提出将线性整流单元Rectfied Linear Unit,ReLU作为激活函数

2012 年,Alex Krizhevsky 提出了 8 层的深层神经网络 AlexNet,它采用了 ReLU 激活函数Dropout 技术防止过拟合,同时抛弃了逐层预训练的方式,直接在 2 块 GTX580 GPU 上训 练网络。

  1. 深度学习发展史

2014 年,Ian Goodfellow 提出了生成对抗网络

2016 年,DeepMind 公司应用深度神经 网络到强化学习领域,提出了 DQN 算法,

深度学习特点
  • 数据量大,数据级需求较高
  • 计算力

非常依赖并行加速计算设备,目前的大部分神经网络均使用 NVIDIA GPU 和 Google TPU 或其他神经网络并行加速芯片训练模型参数

  1. 网络规模

随着深度学习的兴起和计算能力的提升,AlexNet(8 层),VGG16(16 层), GoogLeNet(22 层),ResNet50(50 层),DenseNet121(121 层)等模型相继被提出,同时输入图 片的大小也从 28x28 逐渐增大,变成 224x224,299x299 等,这些使得网络的总参数量可达 到千万级别,

  1. 通用智能
深度学习应用领域
  • 计算机视觉CV
    • 图片识别image classification; VGG 系列、Inception 系 列、ResNet 系列等。
    • 目标检测 object detection;RCNN,Fast RCNN,Faster RCNN,Mask RCNN,SSD,YOLO 系列
    • 语义分割 semantic segmentation;FCN,U-net,SegNet,DeepLab 系列等
    • 视频理解video understanding;C3D,TSN,DOVF,TS_LSTM
    • 图片生成 image generation;VAE 系列,GAN 系列
  • 自然语言处理NLP
    • 机器翻译; Seq2Seq,BERT,GPT, GPT-2 等
    • 聊天机器人:常用在咨询系统、娱乐游戏、智能家居等
  • 强化学习
    • 虚拟游戏:QN,A3C,A2C,PPO
    • 机器人
    • 自动驾驶Autonomous Driving
深度学习框架
  1. Theano 是最早的深度学习框架之一 ,已经停止
  2. Scikit-learn 是一个完整的面向机器学习算法的计算库,传统的统计学习领域,不支持神经网络和GPU加速
  3. Caffe:面向使用神经网络、提供Python结口、支持GPU和CPU,融入到PyTorch中
  4. Torch 是一个非常优秀的科学计算库,基于较冷门的编程语言 Lua 开发
  5. MXNET :陈天奇和李沐等人开发,采用命令式和符号式混合编程
  6. PyTorch :2017年发布
  7. Keras 是一个基于 Theano 和 TensorFlow 等框架提供的底层运算而实现的高层框架
  8. TensorFlow 是 Google 于 2015 年发布的深度学习框架
TF 和PyTorch

都是采用动态图(优先)模式开发,动态图模型开发效率高,但是运行效率可能不如静态图模式

TensorFlow 在工业界拥有完备的解决方案和用户基础; PyTorch 得益于其精简灵活的接口 设计,可以快速设计调试网络模型,在学术界获得好评如潮

TF2-demo
代码语言:javascript
复制
import tensorflow as tf

# 创建张量
a = tf.constant(2.0)
b = tf.constant(4.0)
# 直接打印
print(a+b)

TF3大核心功能

  1. 加速计算

神经网络本质上由大量的矩阵相乘,矩阵相加等基本数学运算构成;TensorFlow 的重 要功能就是利用 GPU 方便地实现并行计算加速功能。

代码语言:javascript
复制
# 创建在cpu上运算的2个矩阵
import tensorflow as tf
with tf.device('/cpu:0'):
  cpu_a = tf.random.normal([1,n])
  cpu_b = tf.random.normap([1,n])
  print(cpu_a.device, cpu_b.device)

# 创建在gpu上运算的2个矩阵
with tf.device('/gpu:0'):
  cpu_a = tf.random.normal([1,n])
  cpu_b = tf.random.normap([1,n])
  print(gpu_a.device, gpu_b.device)

并通过 timeit.timeit()函数来测量 2 个矩阵的运算时间:

代码语言:javascript
复制
def cpu_run():
  with tf.device('cpu:0'):
    c = tf.matmul(cpu_a, cpu_b)
  return c

def gpu_run():
  with tf.device('gpu:0'):
    c = tf.matmul(gpu_a, gpu_b)
  return c

# 第一次计算需要热身
cpu_time = timeit.timeit(cpu_run,number=10)
gpu_time = timeit.timeit(gpu_run,number=10)

# 计算10次,取平均值
cpu_time =
timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run,number=10)

2 . 自动梯度网络

在使用 TensorFlow 构建前向计算过程的时候,除了能够获得数值结果,TensorFlow 还 会自动构建计算图 ,看个demo:

y=aw^2+bw+c
\frac {\partial y}{\partial w}=2aw+b

考虑在点(a,b,c,w)= (1,2,3,4)的导数为10

代码语言:javascript
复制
import tensorflow as tf

# 创建4个张量
a = tf.constant(1.)
b = tf.constant(2.)
c = tf.constant(1.)
w = tf.constant(4.)

with tf.GradientTape as tape:  # 构建梯度环境
  # 将w加入梯度跟踪列表
  tape.watch([w])
  # 计算过程
  y = a * w ** 2 + b * w + c

[dy_dw] = tape.gradient(y, [w])
print(dy_dw)  # 打印导数
tf.Tensor(10.0, shape=(), dtype=float32)

3 . 常用神经接口

TensorFlow除了提供底层的矩阵相乘,相加等运算函数,还内建了常用

  • 网络运算函数
  • 常用网络层
  • 网络训练
  • 网络保存与加载
  • 网络部署
  • ……
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 人工智能
    • 机器学习分类
      • 神经网络
        • 特征
        • 发展史
      • 深度学习特点
        • 深度学习应用领域
          • 深度学习框架
            • TF 和PyTorch
              • TF2-demo
              • TF3大核心功能
              相关产品与服务
              GPU 云服务器
              GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档