目录
3.1 mac 在anaconda 下安装tensorflow
1. tensorflow介绍
Google的开源软件库
- 采用数据流图,用于数值计算
- 支持多种平台——GPU,CPU,移动设备
- 最初用于深度学习,变得越来越通用
1.1 tensorflow是什么
数据流图
节点——处理数据
线——节点间的输入输出关系
线上运输张量
节点被分配到各种计算设备上运行
1.2 tensoeflow的特性
- 高度的灵活性
- 自动求微分
- 真正的可移植性
- 多语言支持
- 产品和科研结合
- 性能最优化
1.3 tensoeflow1.0
1.3.1 主要特性
- XLA——Accelerate Linear Algebra
- 提升训练速度58倍
- 可以在移动设备上运行
- 引入更高级的API——tf.layers/tf.metrics/tf.losses/tf.keras
- Tensofrlow调试器
- 支持docker镜像,引入tensorflow serving服务
1.3.2 tensoeflow1.0架构
1.3.3 tf1.0 API列表
(1)tf1.0实现全连接网络
placeholder,
tf.layers.dense,
tf.train.AdamOptimizer
tf.losses.sparse_softmax_cross_entropy,
tf.global_variables_initializer
feed_dict
(2) Dataset
Dataset.make_one_shot_iterator
Dataset.make_initializable_iterator
(3) 自定义estimator
tf.feature_column.input_layer
tf.estimator.EstimatorSpec
tf.estimator.accuracy
1.3.4 tf1.0 升级为tf2.0代码
1.4 tensoeflow2.0
1.4.1 主要特性
(1)Tf.keras 和 eager mode进行更加简单的模型构建
使用tf.data加载数据;
使用tf.keras构建模型,使用premade estimator来验证模型,使用tensorflow hub进行迁移学习;
使用eager mode进行运行和调试
使用分发策略来进行分布式训练
导入导出到SaveModel
使用tensorflow Server,tensorflow Lite,tensorflow.js部署模型
(2)鲁棒的跨平台模型部署
Tensorflow服务——直接通过https/rest或GRPC/协议缓冲区
Tensorflow Lite——可部署在Android,ios和嵌入式系统上
Tensorflow.js——在javascript中部署模型
其他语言——C,java,Go,C#,Rust,Julia ,R等
(3)强大的研究实验
Keras功能API和子类API,允许创建复杂的拓扑结构
自定义训练逻辑,使用tf.GradientTape和tf.custom_gradienti进行更细粒度的控制
低层API自始至终可以与高层结合使用,完全的可定制
高级扩展:Ragged Tensor,Tensor2Tensor等
(4)清除不推荐使用的API和减少重复来简化API
1.4.2 tensoeflow2.0架构
2. Tensorflow Vs Pytorch
2.1 入门时间
2.1.1 Tensorflow1.*
(1)静态图(效率高),需要学习额外的概念(图,会话,变量,占位符等),需要写一些样本代码
静态图相对应的是声明式编程。
声明式编程:
与声明式编程“相反”的是命令式编程
命令式编程
2.1.2 Tensoeflow2.0
动态图(调试容易),即命令式编程
Eager mode避免1.0缺点,直接集成在python中
2.1.3 pytorch
动态图(调试容易)
Numpy的扩展,直接集成在python中
2.2图创建和调试
2.2.1 tensorflow1.*
静态图,难以调试,学习tfdbg调试
2.2.2 tensorflow2.* 与pytorch
动态图,python自带调试工具
2.3 全面性
Pytorch缺少
- 沿维翻转张量(np.flip, np.flipud, np.fliplr)
- 检查无穷与非数值张量(np.is_nan, np.is_inf)
- 快速傅立叶变换(np.fft)
随着时间变化,tensorflow和pytorch越来越接近
2.4 序列化和部署
Tensorflow 支持更加广泛
- 图保存为protocol buffer
- 跨语言
- 跨平台
Pytorch支持比较简单
3. tensorflow的安装
3.1 mac 在anaconda 下安装tensorflow
(1)建立一个Tensorflow的运行环境
// 创建环境$ conda create -n tensorflow python=3.5
// 移除环境conda remove --name tensorflow --all
目前Mac上的Tensorflow仅仅支持CPU版本,而且3.0以上版本仅支持3.5版本,所以创建环境的时候一定要加上Python=3.5。详情可以去Github Tensorflow查看。
(2)设置国内镜像
如果需要安装很多packages,你会发现conda下载的速度经常很慢,因为Anaconda.org的服务器在国外。所幸的是,清华TUNA镜像源有Anaconda仓库的镜像,我们将其加入conda的配置即可: # 添加Anaconda的TUNA镜像conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# TUNA的help中镜像地址加有引号,需要去掉 # 设置搜索时显示通道地址conda config --set show_channel_urls yes
(3)安装Tensorflow
目前仅仅是创建了一个空的环境,仅有与Python3.5相关的一些包,我们需要先激活环境,然后安装Tensorflow。
// 激活环境
$ source activate tensorflow
// 安装Tensorflow
$ pip install tensorflow
// 关闭环境
$ source deactivate
(4)简单测试是否安装成功
>>>import tensorflow as tf
>>>hello = tf.constant('Hello, TensorFlow!')
>>>sess = tf.Session()
>>>print(sess.run(hello))
Hello,TensorFlow!
使用Jupyter notebook
永久更改 Jupyter notebook 默认目录路径
创建Jupyter notebook的配置文件jupyter_notebook_config.py,
在终端中输入:
$ jupyter notebook --generate-config
打开jupyter_notebook_config.py,找到下文字:
// 打开jupyter_notebook_config.py
$ cd .jupyter
$ vim jupyter_notebook_config.py
// 找到如下文字
## The default URL to redirect to from `/`
#c.NotebookApp.default_url = '/tree'
将其修改为:
## The default URL to redirect to from `/`
c.NotebookApp.default_url = '/tree/DeepLearning'
// 此时,Jupyter notebook的默认目录路径就变成了/home/DeepLearning
该方法只能通过根目录启动Jupyter notebook,从其他目录启动会出现Jupyter notebook网页无法显示的状态。
单次更改 Jupyter notebook 默认目录路径
// 在终端中cd到目标目录:
$ cd ~/DeepLearning
$ jupyter notebook
(5)安装OpenCV
pip install opencv-python
3.2 mac 在docker 下安装tensorflow
详见网址Docker简介_zhao_crystal的博客-CSDN博客