安装与测试

TensorFlow2.0安装:

pip install tensorflow-gpu==2.2.0 -i https://pypi.douban.com/simple/
conda install cudnn=7.6.0
# conda install cudatoolkit=10.0.130 # (可选)

TensorFlow2.0的GPU版本测试代码如下:

import tensorflow as tfprint('GPU', tf.test.is_gpu_available())a = tf.constant(2.0)
b = tf.constant(4.0)
print(a + b)

注意:如果是第一次使用 tensorflow2.0,会在输出 Adding visible gpu devices: 0 之后卡住一阵子,等几分钟就好了,下次运行就正常了

结果如下就证明 tensorflow-gpu 安装成功了

GPU True
tf.Tensor(6.0, shape=(), dtype=float32)

1.X 和 2.X 版本的差异

Eager Execution

细心的你会发现,在 tensorflow2.0 版本中,居然可以直接输出张量的计算结果,如果是以前的1.x 版本,执行同样的代码,你得到的输出是:

GPU True
Tensor(“add:0”, shape=(), dtype=float32)

在1.x 版本中,如果你想要得到真实的计算结果,需要初始化全局变量 → 建立会话 → 执行计算,最终才能打印出张量的运算结果:

import tensorflow as tf
sess = tf.Session()
a = tf.constant(2.0)
b = tf.constant(4.0)
print(sess.run(a + b))

这是 TensorFlow 2.0 带来的最大改变之一,他将 1.x 的 Graph Execution(图与会话机制)更改为 Eager Execution(动态图机制)。带来的最直观的好处是:不再需要手动管理图和会话。例如,现在使用示例张量进行数学计算,可以像 Python 一样直接相加。在 TensorFlow 2.0 中,Eager Execution 模式是默认开启的,这意味着 TensorFlow 代码被定义后会立即运行,而不是先将节点和边缘添加一个图上,稍后再在一个会话中运行。

对于定义的张量,还可以直接通过 .numpy() 方法输出 numpy 数组:

c = tf.Variable([[1, 2], [3, 4]])
print('c:')
print(c)
print('c.numpy():')
print(c.numpy())

输出:

c:
<tf.Variable 'Variable:0' shape=(2, 2) dtype=int32, numpy=
array([[1, 2],[3, 4]])>
c.numpy():
[[1 2][3 4]]

虽然程序是可以动态执行了,但是梯度计算怎么办?在TensorFlow 1.x静态图时代,我们知道每个静态图都有两部分,一部分是前向图,另一部分是反向图。反向图就是用来计算梯度的,用在整个训练过程中。而TensorFlow 2.0默认是eager模式,每行代码顺序执行,没有了构建图的过程,但是可以通过 tf.GradientTape api 来实现自动求导功能。具体内容不展开讲,可以参考下面链接中的讲解:

tf.GradientTape详解:梯度求解利器

TensorFlow2.0教程-自动求导

TensorFlow 2.0引入的eager提高了代码的简洁性,而且更容易debug。但是对于性能来说,eager执行相比Graph模式会有一定的损失。但是好在,TensorFlow 2.0引入了tf.function和AutoGraph来缩小eager执行和Graph模式的性能差距,其核心是将一系列的Python语法转化为高性能的graph操作。

AutoGraph

AutoGraph 主要是可以将一些常用的Python代码转化为TensorFlow支持的代码,例如:

def square_if_positive(x):if x > 0:x = x * xelse:x = 0.0return x# eager 模式
print('results: %2.2f, %2.2f' % (square_if_positive(tf.constant(8.0)),square_if_positive(tf.constant(-9.0))))

输出:

results: 64.00, 0.00

上面我们定义了一个 square_if_positive 函数,它内部使用的 Python 的原生的if语法,对于TensorFlow 2.0的eager模式,这是没有问题的。但是如果你需要在 1.x 版本执行,代码就是这样的:

# graph 模式
tf_square_if_positive = tf.autograph.to_graph(square_if_positive)with tf.Graph().as_default():# The result works like a regular op: takes tensors in, returns tensors.# You can inspect the graph using tf.get_default_graph().as_graph_def()g_out1 = tf_square_if_positive(tf.constant( 9.0))g_out2 = tf_square_if_positive(tf.constant(-9.0))with tf.compat.v1.Session() as sess:print('Graph results: %2.2f, %2.2f\n' % (sess.run(g_out1), sess.run(g_out2)))

输出:

results: 81.00, 0.00

大家要注意eager模式和Graph模式的差异,尽管结果是一样的,但是Graph模式更高效。从本质上讲,AutoGraph是将Python代码转为TensorFlow原生的代码。

tf.keras

TensorFlow 2.0全面keras化:如果你想使用高级的layers,只能选择keras。TensorFlow 1.x 存在 tf.layers以及tf.contrib.slim等高级API来创建模型,但是2.0仅仅支持tf.keras.layers。

参考文章:

Tensorflow 2.0到底好在哪里?

TensorFlow 2.0 新增变化特性

【060】tensorflow2.0 与tensorflow1.0 的性能区别和迁移

tensorflow2.0 GPU 版本安装测试教程及新特性初探相关推荐

  1. tensorflow2.0对应python版本_TensorFlow2.1.0最新版本安装详细教程

    TensorFlow是一款优秀的深度学习框架,支持多种常见的操作系统,例如Windows10,Mac Os等等,同时也支持运行在NVIDIA显卡上的GPU版本以及仅使用CPU进行运算的CPU版本.此篇 ...

  2. PyTorch1.11.0 GPU版本安装(python3.8+pyTorch1.11.0,torch1.11.0+cu113 torchvision0.12.0+cu113)

    目录 一.电脑相关信息 二.安装Pytorch1.11.0 GPU版本 1. 准备:新建虚拟环境 2. 安装pytorch v1.11.0:(在pytorch官网的历史版本里找安装命令) 电脑:win ...

  3. GPU版本安装Pytorch教程最新方法

    目录 步骤 第一步:安装 Anaconda 和 Pycharm 软件 第二步:下载安装CUDA11.3 (1)首先查看自己电脑GPU版本 方式一:搜索框输入nvidia,打开nvidia控制面板 方式 ...

  4. shardingsphere-elasticjob-ui 3.0.1版本安装部署教程

    shardingsphere-elasticjob 从 3.0.0-alpha 版本开始,将console管理界面单独拆分出来,现有网上的很多教程都是基于console未拆分出来的版本,本教程是基于最 ...

  5. TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0

    TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0 接触机器学 ...

  6. windows10下 tensorflow2.0 gpu 安装

    windows10下 tensorflow2.0 gpu 安装 安装显卡驱动. 确定python.cuda和cudnn对应的版本 安装cuda 安装cudnn 查看tensorflow的版本 impo ...

  7. mysql 8.0.24版本安装配置方法图文教程

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 本文记录了mysql 8 ...

  8. mysql 8.0.28版本安装配置方法图文教程

    mysql 8.0.28版本安装配置方法图文教程 从 Mysql 官网下载 mysql 下载完成后直接双击进行安装,打开后的页面如下所示: 选择自定义custom,接着下一步 将MySQL Serve ...

  9. Pytorch:入门指南和 PyTorch 的 GPU版本安装(非常详细)

    Pytorch: 入门指南和 PyTorch 的 GPU版本安装(非常详细) Copyright: Jingmin Wei, Pattern Recognition and Intelligent S ...

最新文章

  1. 从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误
  2. php 添加工信部链接,常见程序(wordpress,dede,discuz)网页下方添加备案号,添加链接跳转到工信部...
  3. python 编程一日一练-爱上Python:一日精通Python编程
  4. 专科 java转go 翱翔之路(一)基础语法:变量声明,匿名函数,结构体,函数,map
  5. 如何使用Dirsearch探测Web目录
  6. MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
  7. dot language 学习笔记
  8. Angr安装与使用之安装篇
  9. linux 内核模块 定时器,linux内核定时器__backup_timer_hour_struct_定时器_模块__169IT.COM...
  10. 如何卸载奇安信天擎远程办公软件V10.0
  11. 计算机组装的硬件配置及报价,2021组装电脑配置清单及价格表说明
  12. HBase--JavaAPI的操作,创建表修改表,增删改查数据
  13. 彬彬说,真正的喜欢一个人就会用心的去揣摩她,去知道她喜欢什么,什么性格...
  14. matlab打开F90文件,ifort编译f90程序命令
  15. PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付
  16. 网易互娱人工智能工程师笔试题
  17. python玫瑰花数量的含义_玫瑰花的数量代表的意义
  18. 最全的浏览器User-Agent
  19. sv 从0到1 procedural/function
  20. android Can't bind to local 8600 for debugger

热门文章

  1. 在JAVA语言程序中main_在Java程序main方法中,正确的参数是
  2. myeclipse中自带的tomcat在安装文件中的具体位置
  3. 利用redis实现分布式锁
  4. 阿里P7架构师谈职业生涯规划,给遇到瓶颈,迷茫期的人群一些建议
  5. 数据加密 - TDE透明数据加密原理
  6. Web API系列(三)统一异常处理
  7. Self Crossing
  8. 团队项目—每日记录2
  9. C语言字符串压缩显示
  10. ASP.NET MVC 第一章 我们的第一个MVC例子