本文整理自知乎专栏深度炼丹,转载请征求原作者同意。

本文的全部代码都在原作者GitHub仓库github

CS20SI是Stanford大学开设的基于Tensorflow的深度学习研究课程。

什么是TensorFlow

  • 使用数据流图来做数值计算的开源软件
  • Google Brain团队开发

TensorFlow的优势

  • Python API
  • 能够使用多个CPU和GPU。很容易部署到服务器上和移动端
  • 足够灵活、非常底层
  • tensorboard可视化做的好
  • Checkpoints作为实验管理,随时保存模型
  • 庞大的社区

几个重要的概念

tensor

  • 0-d tensor: 标量
  • 1-d tensor: 向量
  • 2-d tensor: 矩阵

数据流图

import tensorflow as tf
a = tf.add(3,5)
print(a)
>> Tensor("Add: 0", shape=(), dtype=int32)

要得到8,需要开启session,在session中操作能够被执行,Tensor能够被计算。这与一般的推断式编程(如PyTorch)不同。

import tensorflow as tf
a = tf.add(3,5)
with tf.Session() as sess:
print(sess.run(a))
>> 8

Session().run调用的时候可以用[]来得到多个结果:

import tensorflow as tf
x = 2
y = 3
add_op = tf.add(x, y)
mul_op = tf.multiply(x, y)
useless = tf.multiply(x, add_op)
pow_op = tf.pow(add_op, mul_op)
with tf.Session() as sess:
z, not_useless = sess.run([pow_op, useless])

也可以将计算图的一部分放在特定的GPU或者CPU下

with tf.device('/gpu:2'):
a = tf.constant([[1.0,2.0,3.0],[4.0,5.0,6.0], name='a'])
b = tf.constant([[1.0,2.0],[3.0,4.0],[5.0,6.0]], name='b')
c = tf.matmul(a,b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))

尽量不要使用多个计算图,因为每个计算图需要一个session,而每个session会使用所有的显卡资源,必须要用python/numpy才能在两个图之间传递数据,最好在一个图中建立两个不联通的子图

为什么使用Graph

  1. 节约计算资源,每次运算仅仅只需运行与结果相关的子图

  2. 可以将图分成小块进行自动微分

  3. 方便部署在多个设备上

最新文章

  1. 解决IIS上无法添加.NET用户的问题
  2. PVANET----Deep but Lightweight Neural Networks for Real-time Object Detection论文记录
  3. ArcEngine:The XY domain on the spatial reference is not set or invalid错误
  4. iOS10 UI教程视图调试
  5. SQL——神奇代码1之Update
  6. C#设计模式——工厂方法模式(Factory Method Pattern)
  7. SVN与CVS的区别大全(转载)
  8. Table of Contents - ActiveMQ
  9. nginx配置文件特殊字符说明
  10. 《MATLAB数据分析与挖掘实战》赠书活动
  11. Python之路第五天,基础(6)-模块
  12. D - Zhenya moves from the dormitory URAL - 2015
  13. FileSystemObject对象及常用方法
  14. mysql 无法链接, 输入密码失败
  15. java 菜单 中文 乱码问题解决方案(使用idea/eclipse) swing MenuItem乱码
  16. AJAX的基本操作
  17. Hibernate延迟加载策略
  18. Linux进程共享通信 -- mmap实现
  19. 动态创建radio、checkbox时需要注意的问题
  20. asp.net cors solution

热门文章

  1. Android回调监听的实现
  2. Angular 自定义拖拽指令
  3. Spring Boot 整合Quartz定时器
  4. IOS 修改图片的地理位置信息
  5. lxml爬取实验
  6. AutoProject Studio 自动化项目生成器 下载地址
  7. 单机千万级MQTT连接服务器测试报告
  8. IO流2
  9. VSTO 基础随笔
  10. 2019工作计划idea