『TensorFlow2.0正式版』TF2.0+Keras速成教程·零:开篇简介与环境准备
此篇教程参考自TensorFlow 2.0 + Keras Crash Course,在原文的基础上进行了适当的总结与改编,以适应于国内开发者的理解与使用,水平有限,如果写的不对的地方欢迎大家评论指出。觉得文章有用的话麻烦点赞,想看原文可以点击链接kx上网访问。
0 序
TensorFlow经过四年的发展,逐渐成为深度学习与机器学习框架的霸主,市场占有率与用户都遥遥领先于其他竞争对手。下图为下图是KDnuggets网站对2018年的机器学习框架的使用做的一个调查统计。可以可以看出当时TensorFlow已经遥遥领先于其他竞争(Keras 是一个上层封装,底层调用的还是 TensorFlow),奠定了其深度学习霸主的地位。
如果想了解TensorFlow的发展史,可以查看笔者CSDN约稿文章:『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
TensorFlow和Keras都是在4年前发布的(Keras为2015年3月,TensorFlow为2015年11月)。在深度学习时代这是很长的时间!
在过去,TensorFlow 1.x + Keras存在许多已知问题:
- 使用TensorFlow意味着要处理静态计算图,对于习惯于命令式编码的程序员而言,这将感到尴尬且困难。
- 虽然TensorFlow API非常强大和灵活,但它缺乏完善性,常常令人困惑或难以使用。
- 尽管Keras的生产率很高且易于使用,但对于研究用例通常缺乏灵活性。
TensorFlow 2.0建立在以下关键思想之上:
- 让用户像在Numpy中一样急切地运行他们的计算。这使TensorFlow 2.0编程变得直观而Pythonic。
- 保留已编译图形的显着优势(用于性能,分布和部署)。这使TensorFlow快速,可扩展且可投入生产。
- 利用Keras作为其高级深度学习API,使TensorFlow易于上手且高效。
- 将Keras扩展到从非常高级(更易于使用,不太灵活)到非常低级(需要更多专业知识,但提供了极大灵活性)的工作流范围。
本系列教程综合了TensorFlow 2.0灵活方便与Keras简单好用的特点,使得开发人员能在几天的学习使用之后能掌握TensorFlow 2.0与Keras的简单使用。但是如果想真正掌握和理解深度学习技术,开发有趣好玩的应用,那么深度学习概念的学习是不可或缺的,需要读者自己花大量时间去学习和理解了。最后还是希望大家在学习深度学习开发中不要流于表面,更应该理解算法的意义与特点,而不是仅仅简单调用接口。这就是深度学习工程师与编程人员的区别了。
本系列教程包括三个部分:
- 环境准备
- TensorFlow使用指南
- Keras接口的使用
教程内容首发在我的知识星球:AI深度学习应用之路·几杯奶茶的价格学习掌握深度学习,欢迎点击访问。
1 环境准备
TensorFlow2.0正式版的安装可以参看笔者的详细安装教程:『TensorFlow2.0正式版』极简安装TF2.0正式版(CPU&GPU)教程,这里为了演示方便,只展示了TF2.0 CPU的安装。
我目前是在Windows10上面,使用conda管理的python环境,通过conda安装cuda与cudnn(GPU支持),通过pip安装的tensorflow2.0。经过尝试只是最简单地安装方式,无需配置复杂环境。
(关于ubuntu与mac版本的安装可以仿照此方法,因为conda支持多平台,应该没什么问题,如果大家问题多的话,可以评论,我后面会会更新ubuntu安装教程)
1.0 conda环境准备
conda是很好用python管理工具,可以方便建立管理多个python环境。后面安装的步骤里我也会介绍一些常用的conda指令。
conda 我推荐使用安装miniconda,大家可以理解为精简版的anaconda,只保留了一些必备的组件,所以安装会比快上很多,同时也能满足我们管理python环境的需求。(anaconda一般在固态硬盘安装需要占用几个G内存,花费1-2个小时,miniconda一般几百M,10分钟就可以安装完成了)
miniconda推荐使用清华源下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
选择适合自己的版本就可以,
- windows推荐地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.7.10-Windows-x86_64.exe
- ubuntu推荐地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.7.10-Linux-x86_64.sh
- Mac os推荐地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.7.10-MacOSX-x86_64.pkg
下以windows版本来安装miniconda作为演示,从上述下载合适版本,下载好后以管理员权限打开点击安装。

注意这两个都要勾选,一个是让我们可以直接在cmd使用conda指令,第二个是把miniconda自带的python3.7作为系统python。
安装好后就可以在cmd中使用conda指令了,cmd打开方式,windows键+R键,弹出输入框,输入cmd就进入了。也可以直接在windows搜索cmd点击运行。
下面介绍些cmd conda指令:
- 查看conda环境:conda env list
- 新建conda环境(env_name就是创建的环境名,可以自定义):conda create -n env_name
- 激活conda环境(ubuntu与Macos 将conda 替换为source):conda activate env_name
- 退出conda环境:conda deactivate
- 安装和卸载python包:conda install numpy # conda uninstall numpy
- 查看已安装python列表:conda list -n env_name
知道这些指令就可以开始使用conda新建一个环境安装TF2.0了。
1.1 TF2.0 CPU版本安装
TF CPU安装比较简单,因为不需要配置GPU,所以windows ubuntu macOS安装方式都类似,缺点就是运行速度慢,但是用于日常学习使用还是可以的。
下面以windows版本做演示:一下均在命令行操作
1.1.0 新建TF2.0 CPU环境(使用conda 新建环境指令 python=3.6表示在新建环境时同时python3.6)
conda create -n TF_2C python=3.6
当弹出 :Proceed ([y]/n)? 输入y回车
完成后就可以进入此环境
1.1.1 进入TF_2C环境
conda activate TF_2C
进入后我们就可以发现:(TF_2C)在之前路径前面,表示进入了这个环境。

1.1.2 安装TF2.0 CPU版本(后面的 -i 表示从国内清华源下载,速度比默认源快很多)
pip install tensorflow==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
如果网不好的,多执行几次。然后过一会就安装好啦。下面我们做下简单测试。
1.1.3 测试TF2.0 CPU版本(把下面代码保存到demo.py使用TF_2C python运行)
import tensorflow as tf
version = tf.__version__
gpu_ok = tf.test.is_gpu_available()
print("tf version:",version,"\nuse GPU",gpu_ok)
如果没有问题的话输出结果如下:可以看到tf 版本为2.0.0 因为是cpu版本,所以gpu 为False
tf version: 2.0.0
use GPU False
『TensorFlow2.0正式版』TF2.0+Keras速成教程·零:开篇简介与环境准备的更多相关文章
- 『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
0 序篇 2015年11月,Google正式发布了Tensorflow的白皮书并开源TensorFlow 0.1 版本. 2017年02月,Tensorflow正式发布了1.0.0版本,同时也标志 ...
- Appium路线图及1.0正式版发布
Appium更新的速度极快,从我试用时候的0.12到1.0(0.18版本后就是1.0),完全符合移动互联网的节奏. 更新可能会慢,可以多试几次 整理了testerhome上思寒发表的帖子,让我们来看下 ...
- 『TensorFlow2.0正式版教程』极简安装TF2.0正式版(CPU&GPU)教程
0 前言 TensorFlow 2.0,今天凌晨,正式放出了2.0版本. 不少网友表示,TensorFlow 2.0比PyTorch更好用,已经准备全面转向这个新升级的深度学习框架了. 本篇文章就 ...
- VMware Workstation 10.0 正式版官方简体中文下载(附序列号)
虚拟机界数一数二的王者软件VMWare Workstation 今日推出了最新的VMware Workstation 10.0 版本.该版本最大的更新是加入了简体中文语言,这意味着未来神马汉化包.中文 ...
- Redis 3.0正式版发布,正式支持Redis集群
Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...
- Axure 7.0 正式版 + 汉化包 安装
详情如下: Axure 7.0 正式版终于发布了,现在提供简体中文版给大家使用. Axure 7.0 正式版: 链接: http://pan.baidu.com/s/1kV4OJ47 提取密码: be ...
- 【Android】Vitamio 4.0 正式版发布/ Vitamio IOS 测试版发布(2013-07-16)
一.链接 Vitamio官网:http://www.vitamio.org/ 官网github地址:https://github.com/yixia 自己无法编译通过的这里下载: Vitamio 4. ...
- 【6年开源路】海王星给你好看!FineUI v4.0正式版暨《FineUI3to4一键升级工具》发布!
去年10-28号,我发布了一篇文章<海王星给你好看!FineUI v4.0公测版发布暨<你找BUG我送书>活动开始>,标志着FineUI开始向4.0版本迈进.经过4个月3个公测 ...
- [Android应用]《花界》V1.0 正式版隆重发布!
http://www.cnblogs.com/qianxudetianxia/archive/2012/04/05/2433669.html 1. 软件说明(1). 花界是一款看花软件:“看花,议花, ...
随机推荐
- 第三篇 视觉里程计(VO)的初始化过程以及openvslam中的相关实现详解
视觉里程计(Visual Odometry, VO),通过使用相机提供的连续帧图像信息(以及局部地图,先不考虑)来估计相邻帧的相机运动,将这些相对运行转换为以第一帧为参考的位姿信息,就得到了相机载体( ...
- Problem : 这个题如果不是签到题 Asm.Def就女装(积性函数dp
https://oj.neu.edu.cn/problem/1460 思路:若n=(p1^a1)*(p2^a2)...(pn^an),则f(n,0)=a1*a2*...*an,显然f(n,0)是积性函 ...
- CodeForces 402 E Strictly Positive Matrix
Strictly Positive Matrix 题解: 如果原来的 a[i][j] = 0, 现要 a[i][j] = 1, 那么等于 sum{a[i][k] + a[k][j]} > 1. ...
- CodeForces 507E Breaking Good 2维权重dij
Breaking Good 题解: 2维权重dij, 先距离最短, 后改变最小. 在这个题中, 如果要改变最小, 则让更多的可用边放进来. 然后可以用pre存下关键边. 代码: ...
- codeforces E. DNA Evolution(树状数组)
题目链接:http://codeforces.com/contest/828/problem/E 题解:就是开4个数组举一个例子. A[mod][res][i]表示到i位置膜mod余数是res的‘A’ ...
- 一台Linux服务器可以负载多少个连接?
首先我们来看如何标识一个TCP连接?系统是通过一个四元组来识别,(src_ip,src_port,dst_ip,dst_port)即源IP.源端口.目标IP.目标端口.比如我们有一台服务192.168 ...
- 不要小看小小的 emoji 表情
前言 好久没更新了,最近事比较多,或许下个月就会恢复到正常的发文频次. 这篇文章得从一个 emoji 表情开始,我之前开源的一个 IM 项目中有朋友提到希望可以支持 emoji 表情传输. https ...
- 数据库常用SQL语句(一):常用的数据库、表操作及单表查询语句
以MySql数据库为例进行说明 1.数据库操作语句 2.表的操作语句 3.表中的字段操作语句 4.MYSQL支持的完整性约束 数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保 ...
- PHP如何解决表单重复提交
利用session 表单隐藏域中存放session(表单被请求时生成的标记).采用此方法在接收表单数据后,检查此标志值是否存在,先进行删除,然后处理数据; 若不存在,说明已提交过,忽略本次提交. ...
- java反射原理,应用
java类的加载过程 调用java命令运行程序时,该命令会启动一条java虚拟机进程,该程序的所有线程都会运行在这个虚拟机进程里面.程序运行产生的线程.变量都处于这个进程,共同使用该JVM进程的内存区 ...