深度学习框架:TensorFlow(简介)
目前最主流的深度框架有 TensorFlow、Pytorch 以及 Keras。其中:
-
TensorFlow 是被使用最广泛的一个深度学习框架,已广泛的运用在如,图像识别、图片分类等领域。
-
PyTorch 是一个开源的 Python 机器学习库,基于 Torch 开发,底层由 C++实现,也被广泛使用在人工智能领域;
-
Keras 则是 Python 编写的高级神经网络 API,它可以将 TensorFlow、CNTK,或是 Theano 作为后端程序来用,它的代码简单、易读。
TensorFlow的核心概念
- 张量(Tensor ):TensorFlow中的基本数据对象,作为图中的节点(Operation,提供图当中执行的操作)的输入输出,在节点之间流动(Flow),因此得名。可以被理解成一个多维数组,TensorFlow 的张量与 Numpy 的数组比较相似。其中的每个元素都具有相同的数据类型,且该数据类型一定是已知的(使用 tensor 的 dtpye 属性查看 tensor 的数据类型)。张量是有形状的(通过 tensor 的 shape 属性查看 tensor 的形状),关于 tensor 的形状有两个术语:秩、轴(维度)。
- 秩:张量维度的数目。
- 轴(维度):轴(维度)就是我们计算机科学中数组的维度。例如,向量的维度就是 1,矩阵的维度就是 2。
张量的阶
2. 计算图:是一个有向图,又可以叫作数据流图(data flow graphs),是TensorFlow将计算表示为指令之间的依赖关系的一种表示法。它是 TensorFlow 操作对象(tf.Operation)与张量对象(tf.Tensor)的集合。操作对象是图中的节点,是图中的计算单元,张量对象是图的边,是在节点之间流动的数据。TensorFlow 的 3 种计算图,分别是:
-
- 静态计算图:优点是高效,在分布式训练、性能优化和生产部署方面都有优势。定义好之后可以反复执行。
- 动态计算图:TensorFlow 2 中 Eager Execution 模型就是采用动态计算图方式,大大地提高了代码的简洁性,且非常易于调试。
- Autograph:兼顾代码的可读性与运行的高性能,TensorFlow 2 中提出了 Autograph只要在 Python 的函数前加上@tf.function 标签,就可以将 Python 的函数转换为静态计算图。
3.会话:TensorFlow跨一个或者过个本地或远程设备运行数据流图的机制。
TensorFlow 2 中几个比较常用的 API
- tf.compact
- tf.data
- tf.image
- tf.nn
- tf.keras
- tf.lite
- tf.math
高效的实验分析助手-TensorBoard
可以通过 Web 页面提供查看细节与过程的功能,它将模型的细节与过程,通过浏览器可视化的方式进行展现,帮助使用者感知各个参数与指标的变化,把握训练趋势。
参考:
1. TensorFlow 2.0的API详解:https://tensorflow.google.cn/versions/r2.0/api_docs/python/tf
2. 可视化TensorFlow运行:
TensorFlow是一个采用数据流图,用于数值计算的开源框架。节点在图中表示数学操作,线则表示在节点互相联系的多维数据数组,即张量。
3.Python安装TensorFlow常见报错:
W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.10.1'; dlerror: libcudart.so.10.1: cannot open shared object file: No such file or directory
I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
- 问题分析与解决方式:GPU的版本与TensorFlow的版本不一致;GPU的版本与TensorFlow的对应关系参见:https://tensorflow.google.cn/install/source#gpu
I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
- 问题分析与解决方式:当前的CPU可以支持未编译为二进制的指令AVX2 ;要想消除该提示,需要在代码中添加两行代码:(用于设置TensorFlow的日志级别的)
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
记录有用的信息和数据,并分享!