深度学习(1)深度学习初见
深度学习(1)深度学习初见
- 深度学习框架介绍
- 1. TensorFlow发展历程
- 2. TensorFlow eco-system
- 3. 学习建议
- 4. 为什么要使用TensorFlow
深度学习框架介绍
1. TensorFlow发展历程
(1) 2015
- Scikit-learn
- Machine Learning,No GPU
- Caffe
- 2013,第一个面向深度学习的框架
- No auto-grad,C++
- Keras
- wrapper
- Theano
- 开发难,调试难
- Torch
- Lua语言
(2) TensorFlow
- Caffe
- Facebook,Caffe →\to→ Torch
- Torch →\to→ PyTorch
- Theano
- Google,→\to→ TensorFlow
- TensorFlow →\to→ TensorFlow2
- Chainer
- MXNet
(3) 2017: TensorFlow1.0
- tf.contrib
- tf.layers,tf.metrics,tf.losses
- tfdbg
- PyTorch 0.1
(4) TensorFlow 1.X 缺点
- 调试困难
- API混乱
- 入门困难,入了门依旧困难
- 大批研究人员转向PyTorch
(5) 2019
- TensorFlow 2.0 发布
- TF+Keras
- 更容易使用
去掉了一些概念,例如:
session.run
tf.comtrol_dependencies
tf.global_variables_initializer
tf.cond,tf.while_loop
2. TensorFlow eco-system
(1) TensorFlow 2.0
TensorFlow核心库
- @tf.function
将动态图的语言变为静态图,使计算加速。
(2) TensorFlow Lite
(3) TensorFlow.JS
(4) TensorFlow Extended
TensorFlow Lite、TensorFlow.JS、TensorFlow Extended构成了TensorFlow的生态系统,从这点上看,TensorFlow是领先于PyTorch的。
(5) TensorFlow Prob
(6) TPU Cloud
Google自己研发的加速硬件。
3. 学习建议
(1) 忘掉TensorFlow 1.X
(2) PyTorch和TensorFlow选一主修(二者都要掌握)
(3) Keras逐渐淡出(已经被Google收购了)
- TF+Keras
- PyTorch+Caffe2
4. 为什么要使用TensorFlow
- GPU加速
- 自动求导
- 神经网络Layers
(1) GPU加速
GPU和CPU对比
import tensorflow as tf
import timeitwith tf.device('/cpu:0'):cpu_a = tf.random.normal([10000, 1000])cpu_b = tf.random.normal([1000, 2000])print(cpu_a.device, cpu_b.device)with tf.device('/gpu:0'):gpu_a = tf.random.normal([10000, 1000])gpu_b = tf.random.normal([1000, 2000])print(gpu_a.device, gpu_b.device)def cpu_run():with tf.device('/cpu:0'):c = tf.matmul(cpu_a, cpu_b)return cdef gpu_run():with tf.device('/gpu:0'):c = tf.matmul(gpu_a, gpu_b)return c# warm up
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('warmup:', cpu_time, gpu_time)cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('run time:', cpu_time, gpu_time)
运行结果:
可以看到,使用GPU运行要比使用CPU运行快(正常是快很多,我用的MacBook运行的)。
(2) 自动求导
例子:
y=a2∗x+b∗x+cy=a^2*x+b*x+cy=a2∗x+b∗x+c
其中: x=1;a=2;b=3;c=4x=1;a=2;b=3;c=4x=1;a=2;b=3;c=4
代码如下:
import tensorflow as tfx = tf.constant(1.)
a = tf.constant(2.)
b = tf.constant(3.)
c = tf.constant(4.)with tf.GradientTape() as tape:tape.watch([a, b, c])y = a**2 * x + b * x + c[dy_da, dy_db, dy_dc] = tape.gradient(y, [a, b, c])
print(dy_da, dy_db, dy_dc)
运行结果:
(3) 神经网络API
神经网络API | 神经网络API |
---|---|
tf.matmul | layers.Dense |
tf.nn.conv2d | layers.Conv2D |
tf.nn.relu | layers.SimpleRNN |
tf.nn.max_pool2d | layers.LSTM |
tf.nn.sigmoid | layers.ReLU |
tf.nn.softmax | layers.MAxPool2D |
参考文献:
[1] 龙良曲:《深度学习与TensorFlow2入门实战》
深度学习(1)深度学习初见相关推荐
- 从深度学习到深度森林方法(Python)
作者 |泳鱼 来源 |算法进阶 一.深度森林的介绍 目前深度神经网络(DNN)做得好的几乎都是涉及图像视频(CV).自然语言处理(NLP)等的任务,都是典型的数值建模任务(在表格数据tabular d ...
- 打破深度学习局限,强化学习、深度森林或是企业AI决策技术的“良药”
算法.算力和数据是人工智能时代的三驾马车,成为企业赋能人工智能的动力,但它们自身的特性也为企业和高校在研究和落地应用过程带来了重重挑战.比如,训练算法的成本高昂,数据从采集.处理到存储已面临瓶颈,目前 ...
- B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
新智元报道 编辑:元子 [新智元导读]DeepMind和伦敦大学学院(University College London,UCL)合作,推出了一个系列的深度学习与强化学习精品进阶课程.该课程内 ...
- 《预训练周刊》第39期: 深度模型、提示学习
No.39 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...
- 《深度学习,统计学习,数学基础》人工智能算法工程师手册:程序员写的AI书,50 章一网打尽...
来源:专知 本文约3400字,建议阅读10+分钟. 免费开源人工智能手册,带你快速上手写代码! [ 导读 ]市面上很多人工智能相关的书籍.大部分的书,面向小白,内容深度不够:小部分教材书或者科研书,内 ...
- 深度稳定学习:因果学习的最新进展 | 清华大学团队 CVPR 研究
2021-05-02 13:44:18 作者 | 陈大鑫.张兴璇 这都2021年了,对 AI 而言,识别出猫猫狗狗肯定再简单不过了. 可是,可是,AI 真的有那么「丝滑」吗? 并没有--如上图所示,当 ...
- 深度学习未来发展的三种学习范式:混合学习,成分学习和简化学习
深度学习是一个很大的领域,其核心是一个神经网络的算法,神经网络的尺寸由数百万甚至数十亿个不断改变的参数决定.似乎每隔几天就有大量的新方法提出. 然而,一般来说,现在的深度学习算法可以分为三个基础的学习 ...
- 沈向洋:从深度学习到深度理解
2020-07-30 01:29:20 作者 | 蒋宝尚 编辑 | 丛 末 7月19日,深圳市人工智能与机器人研究院与香港中文大学(深圳)联合主办的"全球人工智能与机器人前沿研讨会" ...
- 深度强化元学习教程---元学习概述
深度强化元学习是近期深度学习技术的一个另人瞩目的新兴领域,其利用元学习,解决了深度学习需要大数据集的问题,以及强化学习收敛慢的问题.同时元学习还可以适用于环境不断改变的应用场景,具有巨大的应用前景. ...
- 干货丨 简述迁移学习在深度学习中的应用
文章来源:机器之心 迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中. 深度学习中在计算机视觉任务和自然语言处理任务中将预训练的模型作为新模型 ...
最新文章
- linux的strace命令
- 我是如何设计 Upload 上传组件的
- CI报Disallowed Key Characters的解决
- ROS Master IP
- JMC | 人工智能在药物合成中的当前和未来作用(3)
- 快速创建 shell脚本
- 工具 - 硕思SWF Decompiler5.3Build528 含补丁
- 动态系统开发方法DSDM
- Easyui入门视频教程 第11集---Window的使用
- nao机器人行走速度_震撼!寒冬腊月里惊现多台历途外墙清洗机器人
- html类选择器使用在什么场景,CSS选择器
- Concept3D推出交互式3D地图平台
- java excel工程_java工程積累——向office致敬:有一種依賴叫excel
- chatroom.php,chatRoom.php
- 设计者模式之GOF23命令模式
- 异常:操作可能会破坏运行时稳定性
- 【笔记】(python)写入文件:写入空文件、写入多行、附加到文件
- 基于web的网页问卷调查设计_Python3菜鸟教程丨基于Web模块的轻量级接口设计基础...
- [转载]物理大神的八卦完整版——大爱物理
- 龙少的Linux配置大全
热门文章
- java第三章_【Java】第三章 变量
- .net函数查询_特来电智能分析平台动态查询架构创新实践
- web flash rtmp_基于RTMP和WebRTC开发大规模低延迟(1000毫秒内)直播系统
- sqlite3打开中文路径数据文件失败解决方法
- std::wstring 转为 QString
- Apache基金会接收阿里RocketMQ为孵化项目
- 安卓开发之探秘蓝牙隐藏API
- 通过Java Api与HBase交互(转)
- ORACLE ROLLUP CUBE
- 数据结构算法的一些归纳