TensorFlow从0到1 | 第十八章: 升级手记:TensorFlow 1.3.0
《TensorFlow从0到1》写到现在,TensorFlow的版本也从当时的1.1.0迭代到了8月初发布的1.3.0。可以预见在未来很长一段时间里,它仍会持续快速的迭代更新。
除了考虑与最新版TensorFlow尽量保持同步之外,鉴于conda虚拟环境可以非常容易的重新构建开发环境,并可以和老的并存,所以对于学习者来说,似乎没有什么理由不下手了。
本篇基于1 Hello,TensorFlow!,在Windows环境下安装CPU版TensorFlow 1.3.0。
TensorFlow
Step 1:新建conda虚拟环境
在 1 Hello,TensorFlow! 中创建了conda虚拟环境“tensorflow” for 1.1.0。为了保留它,我以“tensorflow13”命名新的conda虚拟环境for 1.3.0
C:> conda create -n tensorflow13
创建conda虚拟环境
Step 2:升级Python到3.6.1+
从TensorFlow 1.2.0开始支持了Python 3.6.x,在上一节创建conda虚拟环境“tensorflow13”时没有特别指定Python版本,所以此时我的Python版本是Anaconda 4.3.1的默认搭配3.6.0。
可是Python3.6.0并不行。TensorFlow 1.3.0会安装依赖Numpy的1.13.1版本,这个版本在Python3.6.0下会产生问题:Importing the multiarray numpy extension module failed。
解决上面问题一个简单可行的办法就是升级Python到3.6.1+,我则直接更新到了最新的3.6.2:
activate tensorflow13conda update python
安装python 3.6.2
Step 3:升级dask
现在还是不要着急安装TensorFlow 1.3.0,否则可能会遇到新问题:“AttributeError: module 'pandas' has no attribute 'computation'”。
解决它的一个简单办法就是升级dask到0.15.1:
安装dask 0.15.1
Step 4:安装TensorFlow 1.3.0
终于到安装TensorFlow 1.3.0了!遗憾的是清华大学开源软件镜像站迟迟未提供TensorFlow 1.3.0 Windows版本安装包(Linux和Mac下没有这个问题),而只提供了1.3.0rc0的版本。
另一个提供TensorFlow安装包的源是Python的官网,先将CPU版安装包下载到本地,然后执行本地安装:
pip install --ignore-installed --upgrade D:ProjectTensorFlowtensorflow-1.3.0-cp36-cp36m-win_amd64.whl
安装TensorFlow 1.3.0
代码迁移
本系列的示例代码存放在GitHub,其中文件夹命名的含义如下:
- TF1_1:TensorFlow 1.1.0下运行的代码;
- TF1_3:TensorFlow 1.3.0下运行的代码;
本篇之前的示例代码都在文件夹TF1_1中(大多数都可以在TensorFlow 1.3.0环境下无需修改直接运行),后面新的示例代码都会在TensorFlow 1.3.0下测试并提交到TF1_3中。
Hello, TensorFlow
在虚拟环境tensorflow13中,启动python,运行以下测试:
$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()>>> print(sess.run(hello))
打印成功则表示安装成功。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- NHibernate 缓存
- 渗透测试 | 突破前端JS加密限制
- 使用 Task 简化异步编程
- Task 编程中的异常处理
- AngularJS 中的 factory、 service 和 provider
- 设计模式之适配器模式
- 设计模式之组合模式
- MvvmCross 框架中的数据绑定语法
- Vivado IP核锁定的解除方法
- Flutter Dojo设计之道——骚气的闪屏动画是如何实现的
- 数据处理 | pandas入门专题——离散化与one-hot
- 聊聊dubbo-go的failfastCluster
- 一分钟学Python|Python的循环语句
- OpenCV4.4 中SIFT特征匹配调用演示
- 这些Python库虽然冷门,但功能真的很强大!