Python深度学习--深度学习入门-TensorFlow简介与环境搭建
TensorFlow是深度学习领域使用最为广泛的一个Google的开源软件库(最初由Google brain team进行开发的内部库,由于它的易用性Google决定把它开源出来).采取数据流图,用于数值计算.节点——处理数据线——节点间的输入输出关系数据流图中的数据叫做tensor, 表示张量, 即N维数据, tensor在数据流图中流动表示计算的过程, 这也是tensorflow名字的由来.支
1. TensorFlow简介和环境搭建
1. TensorFlow简介
1.1 TensorFlow是什么
-
TensorFlow是深度学习领域使用最为广泛的一个Google的开源软件库(最初由Google brain team进行开发的内部库,由于它的易用性Google决定把它开源出来).
-
采取数据流图,用于数值计算.
节点——处理数据
线——节点间的输入输出关系
数据流图中的数据叫做tensor, 表示张量, 即N维数据, tensor在数据流图中流动表示计算的过程, 这也是tensorflow名字的由来.
-
支持多种平台,GPU、CPU、移动设备
-
tensorflow特性:
- 高度的灵活性: 只要能把数据的计算表示成数据流图就可以使用tensorflow
- 真正的可移植性: 比如CPU、GPU、移动设备等等
- 产品和科研结合
- tensorflow研究最初是用于科研的,其实科研和工程还有一定的距离,科研的代码需要进一步各种各样的优化才能真正的做到产品上去,但是对于tensorflow则没有这个问题,Google团队把tensorflow优化的已经比较好了,做研究的代码可以无缝的用到产品上
- 自动求微分
- 多语言支持
- tensorflow除了python以外,还支持各种各样的语言,比如说c++、java、javascript、R语言等
- 性能最优化
- 在tensorflow刚刚出来的时候由于它运行的比较慢,很多深度学习库呢都会拿tensorflow来进行比较,然后来证明自己比tensorflow好多少倍,但是随着tensorflow一步一步的进行开发,这种情况一去不复返了,tensorflow现在应该是运行最快的一个库,对于分布式的tensorflow来说,它的加速比几乎是线性的
1.2 tensorflow版本变迁
1.3 tensorflow 2.0 架构
- tensorflow2.0主要特性:
- 使用tf.keras和eager mode(动态图模式)进行更简单的模型构建.
- 使用tf.data加载数据
- 使用tf.keras构建模型,也可使用premade estimator来验证模型
- 使用tensorflow hub进行迁移学习
- 使用eager mode运行和调试
- 使用分发策略来进行分布式训练
- 导出到SavedMode
- 使用TensorFlow Serve、Tensorflow Lite、Tensorflow.js部署模型
- 鲁棒的跨平台模型部署
- TensorFlow服务
- 直接通过HTTP/RESR或GRPC/协议缓冲区
- TensorFlow Lite——可部署到Android、iOS和嵌入式系统上
- TensorFlow.js——在JavaScript中部署
- 其他语言
- C、Java、Go、C#、Rust、Julia、R等
- TensorFlow服务
- 强大的研究试验
- Keras功能API和子类API、允许创建复杂的拓扑结构
- 自定义训练逻辑、使用tf.GraddientTape和tf.custom_gradient进行更细粒度的控制
- 底层API自始至终可以与高层结合使用、完全的可定制
- 高级扩展:Ragged Tensor、Tensor2Tensor等
- 清除不推荐使用的API和减少重复来简化API
- 使用tf.keras和eager mode(动态图模式)进行更简单的模型构建.
1.4 tensorflow vs pytorch
-
入门难易
-
Tensorflow1.*
-
静态图(无eager mode)
-
学习额外概念
-
如图、会话、变量、占位符等
# Tensorflow1.0实现 import tensorflow as tf # 构建计算图 x = tf.Variable(0.) y = tf.Variable(1.) add_op = x.assign(x + y) # x = x + y div_op = y.assign(y / 2) # y = y / 2 # TensorFlow1.0中必须先打开会话,才能计算数据流图 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) # 初始化会话 for iteration in range(50): sess.run(add_op) sess.run(div_op) print(x.eval()) # 也可用sess.eval(x)
-
-
Tensorflow2.0
-
动态图(eager mode默认打开)
-
Eager mode避免1.0缺点,直接集成在Python中
import tensorflow as tf x = tf.constant(0.) y = tf.constant(1.) for iteration in range(50): x = x + y y = y / 2 print(x.numpy())
-
-
Pytorch
-
动态图
-
Numpy的扩展,直接集成在Python中
import torch x = torch.Tensor([0.]) y = torch.Tensor([1.]) for iteration in range(50): x = x + y y = y / 2 print(x)
-
-
-
图创建和调试
- TensorFlow 1.* : 静态图, 难易调试, 需要学习tfdbg工具
- TensorFlow 2.0和pytorch: 动态图, python自带调试工具即可调试
-
全面性
- pytorch缺少
- 沿维度反转张量
- 检查无穷与非数值张量
- 快速傅里叶变换
- 随着时间的变化, 越来越接近
- pytorch缺少
-
序列化与部署
- tensorflow2.0的序列化支持非常广泛
- 图保存为protocol buffer格式
- 跨语言
- 跨平台
- pytorch支持较为简单
- tensorflow2.0的序列化支持非常广泛
2. 环境搭建
1.TensorFlow 及相关支持包更新太快,本文介绍的搭建方法未必成功,博主建议直接 某宝 安装搭建哈~
2.博主也在搜索了好多TF的GPU安装方案,但受制于GPU cuda版本及TF的支持一直不太成功,索性去了某宝哈~
3.安装GPU版本的初心是想通过GPU加速训练,缩短神经网络的训练时间,但博主经过测试,新版的非GPU版本的TF训练速度远比老版本GPU版本TF要快,注明新版本TF不支持单独下载GPU版本了~
2.1 本地虚拟环境安装tensorflow
-
安装cpu版本tensorflow
- 直接使用pip install tensorflow安装即可
-
安装gpu版本tensorflow
-
确认显卡型号,查看是否支持cuda运算, 确认驱动版本(cuda11.x以上要求450.x以上的驱动版本) 找到对应的cuda版本, 下载安装.
-
安装CUPTI工具, cuda11.3已经自带这个工具.所以可以不用安装.
-
安装cuDNN,访问 https://developer.nvidia.com/rdp/cudnn-archive, 找到需要安装的cuDNN版本,可以通过右键另存为下载cuDNN.
-
把cuDNN解压到CUDA的安装目录,一般是: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
-
配置环境变量.在系统的PATH环境变量中,新增以下几个环境变量:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\extras\CUPTI\lib64 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\include
-
重启jupyter环境, 导入tensorflow,执行
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
查看是否有可用的GPU. 如果显示正常, 那么配置OK. -
后续写tensorflow的代码,会自动使用GPU去执行, 不需要对代码做任何修改.
-
2.2 google colab使用tensorflow
- google colab提供了可直接使用的tensorflow环境, 而且可以方便切换版本.
- 登录google账号, 搜索
google colab
进入google colab页面, 点击文件新建笔记本
- 在打开的笔记本中,如果想使用tensorflow2.0环境执行
%tensorflow_version 2.x
那么当前笔记本使用的tensorflow即为2.0以上的版本.

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)