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 数组属性和方法
- 详解Android Gradle插件3.0挖坑日记
- Android开发之拼音转换工具类PinyinUtils示例
- Android多线程断点续传下载示例详解
- Android设备与外接U盘实现数据读取操作的示例
- [Alibaba-ARouter]浅谈简单好用的Android页面路由框架
- android屏幕圆角实现方法的示例代码
- Android开发中日期工具类DateUtil完整实例
- Android模仿实现微博详情页滑动固定顶部栏的效果实例
- Android EventBus(普通事件/粘性事件)详解
- Android实现EventBus登录界面与传值(粘性事件)
- Android自定义LinearLayout布局显示不完整的解决方法
- android短信管理器SmsManager实例详解
- Android开发判断一个app应用是否在运行的方法详解
- 收割腾讯等十几个Offer后,揭秘进大厂的秘诀和Android技术面试题汇总!
- Flutter BLoC 异步通信、BlocBuilder的基本使用、BlocProvider的初探