概述
在人工智能与机器学习研究与应用领域,著名的深度学习框架主要有TensorFlow、PyTorch、PaddlePaddle、MXNet,Python/Anaconda语言常与这些深度学习框架联合使用,如Python+TensorFlow2、Python+ PyTorch等。本文以目前常用的Windows10 Anaconda3和Google公司的 TensorFlow2应用环境为例,介绍Anaconda3与TensorFlow2的安装及使用,并给出张量计算、导数计算、梯度计算等应用基础示例。
内容提要
一、Anaconda3安装及创建TensorFlow虚拟环境
二、TensorFlow2安装及使用
1.TensorFlow2安装
2.TensorFlow使用测试
3.将TensorFlow嵌入到Jupyter Notebook
三、TensorFlow2应用基础及示例
1.张量的基本概念
2.TensorFlow自动求导机制及示例
一、Anaconda3安装及创建TensorFlow虚拟环境
Anaconda从官网https://www.anaconda.com/download/下载实在太慢,我们可从清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载。这里下载Windows版64位Anaconda3(Anaconda3-5.3.0-Windows-x86_64.exe, 631.4 MB, 2018-09-28 06:4,Python对应版本是Python3.7.0)。下载完毕后,运行Anaconda3-5.3.0-Windows-x86_64.exe安装软件,按提示步骤安装Anaconda3。
Anaconda3安装完成后,在开始菜单点击【Anaconda Prompt】进入Anaconda命令行窗口,可使用一些命令检查安装情况及创建TensorFlow虚拟环境等:
1.检查安装是否安装成功:conda --version
2. 检查目前的安装环境:conda info –envs
(若更新conda,使用命令: conda update conda)
3. 检查目前有哪些版本的python可以安装:conda search --full-name python
4. 选择一个Python版本安装(这里选择python3.7.0版本),并创建TensorFlow虚拟环境tf2:
conda create --name tf2 python=3.7.0
5. 激活TensorFlow虚拟环境tf2:activate tf2
用activate命令激活tf2虚拟环境后(见图1),TensorFlow虚拟环境tf2被成功添加:conda info --envs 。
图1 激活自建的tf2虚拟环境
6. 查看TensorFlow虚拟环境tf2下的Python版本:python –-version
二、TensorFlow2安装及使用
1.TensorFlow2安装
这里以常用的TensorFlow2 CPU版安装进行说明 (TensorFlow2 GPU版安装要稍微复杂一些,此略)
(1)进入自建的TensorFlow虚拟环境tf2
tf2是前面自己创建的环境名称(见前面图1所示)。从图1可以看出,输入activate tf2命令后,路径前面小括号中的内容从base变成了tf2,说明现在已经进入自建的环境tf2中;若想退出自建的tf2环境,使用conda deactivate命令退出该环境即可。
(2)安装Tensorflow2框架及更新Keras
我们必须在自建的环境变量tf2中安装Tensorflow2 CPU版(截止2020年10月,TensorFlow最新版本是TensorFlow 2.3.1)。Tensorflow2可直接使用pip install tensorflow命令安装,但网速很慢,我们仍选择清华大学镜像站进行安装, TensorFlow2.0.0 CPU版安装命令如下:
pip install tensorflow==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
或者:
pip3 install tensorflow==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
TensorFlow2.0.0 CPU版安装过程见图2所示。
图2 TensorFlow2.0.0 CPU版安装
TensorFlow2已自带Keras2.3.1模块(从TensorFlow2.0开始,Keras已被集成到TensorFlow中),当然我们也可选择更新Keras模块(更新Keras操作非必须),命令如下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade keras
更新成功后,使用pip list命令,可看到Keras版本显示为2.4.3。
2. TensorFlow使用测试
测试Tensorflow 2.0.0是否成功安装:
(1)通过【开始】菜单栏,点击【Anaconda Prompt】进入Anaconda命令行窗口。
(2)在Anaconda命令提示符,输入命令序列:
activate tf2
python
import tensorflow as tf
若没有出现错误,表明测试Tensorflow2.0.0成功。
我们也可以在自建的tf2环境中输入python进入python命令提示符,输入命令序列:
>>> import tensorflow as tf
>>> hello=tf.constant("Hello, tensorflow")
>>> print(hello)
下面给出TensorFlow张量计算的Python程序及测试结果:
import tensorflow as tf
A=tf.constant([[1,2], [3,4]])
B=tf.constant([[5,6], [7,8]])
C=tf.matmul(A,B)
print(C)
输出结果:
tf.Tensor(
[[19 22]
[43 50]], shape=(2, 2), dtype=int32)
若测试出错的话,可能是所选择的Python版本与TensorFlow版本依赖性有问题,Python版本或TensorFlow版本不匹配有可能导致测试失败,此时,可用pip uninstall tensorflow==2.x.x卸载所安装2.x.x版本的TensorFlow。
当不使用TensorFlow时,可在自建的tf2环境中,用conda deactivate命令关闭TensorFlow虚拟环境tf2。
3. 将TensorFlow嵌入到Jupyter Notebook
在Anaconda中,我们常常会使用Jupyter Notebook,将 TensorFlow 嵌入到 Jupyter Notebook步骤如下:
(1)激活TensorFlow虚拟环境tf2:activate tf2
(2)安装ipython:conda install ipython
(3)安装jupyter:conda install jupyter
(4)安装ipython kernel for Tensroflow:ipython kernelspec install-self --user
(5)安装jupyter kernel for Tensroflow:jupyter kernelspec install-self --user
启动电脑后,可通过【开始】菜单栏,点击【Jupyter Notebook(tf2)】,我们就能直接使用TensorFlow虚拟环境下的Jupyter Notebook进行编程了(见图3)。
图3 TensorFlow虚拟环境tc2下的Jupyter Notebook(tf2)
三、TensorFlow2应用基础及示例
TensorFlow除了用作人工智能深度学习框架,还能用于科学计算,其主要亮点包括张量、自动求导机制等。
1.张量的基本概念
张量(Tensor)这一术语最早源自力学,它最初用来表示弹性介质中各点应力状态,后来张量理论发展成为力学和物理学的一门有力数学工具;随着Google TensorFlow深度学习框架在人工智能中的应用,张量被引入到了人工智能与机器学习领域。张量概念是向量/矢量概念的推广,零阶张量或零维张量为标量 (Scalar),一阶张量(First-order tensor)或一维张量为向量 (Vector),二阶张量或二维张量为矩阵 (Matrix)。零阶张量和一阶张量很好理解,二阶张量到四阶张量用数字图片来说明理解起来更为直观:1)一张黑白数字图片可看作是一个二阶张量(即矩阵),其两个维度分别为以像素个数为单位的图片的高度H和图片的宽度W;如H×W=640×480大小的黑白图片,可将其看成是640×480的矩阵,矩阵中的元素取值为0~255之间的黑白亮度值。2)RGB彩色图片有RGB三个通道,可将其视作三阶张量,即H×W×C,C是图片的通道数(对于彩色图片,C=3);一个三阶张量可以看成是多个二阶张量的堆叠,如彩色图片可以认为是RGB三个通道图片的堆叠。3)将多个三阶张量堆叠在一起形成四阶张量,在图像深度学习过程中,我们会经使用四阶张量,增加的一个维度称为迷你批次(Mini-batch)的大小,可以认为是每次输入深度学习神经网络的图片数目N;根据四阶张量四个维度的排列方式可以分为NHWC和NCHW两种表达,前一种表达表示的含义是输入神经网络的张量大小是迷你批次的大小×图片高度×图片宽度×通道数目=N×H×W×C,后一种表达表示的含义是输入神经网络的张量大小是迷你批次的大小×通道数目×图片高度×图片宽度=N×C×H×W。在机器学习技术应用中,我们常使用一阶张量到五阶张量(见图4)。
图4 1D张量~5D张量示意图
TensorFlow源于本身的运行原理,这里 Tensor为张量,Flow(流)为基于数据流图的计算,因此TensorFlow这一名称从字面上可理解为张量从流图的一端流动到另一端的计算过程。
在TensorFlow中,张量的属性包括形状、数据类型和值三个重要部分,所有运算都是在张量之间进行。
2.TensorFlow自动求导机制及示例
在机器学习技术中,经常要计算函数的导数或偏导数。TensorFlow提供了功能强大的自动求导机制(Automatic differentiation)来计算函数的导数,下面举例说明此种应用。
TensorFlow计算程序:
import tensorflow as tf
x = tf.Variable(initial_value=5.) # 用tf.Variable声明变量x
with tf.GradientTape() as tape:
# 在 tf.GradientTape() 的上下文内,所有计算步骤都会被记录以用于求导
y = tf.square(x)
y_grad = tape.gradient(y, x)
# 计算y关于x的导数
print(x,"n")
# x为零阶张量,用括号()显示,即标量
print(y,"n",y_grad)
输出结果:
<tf.Variable 'Variable:0' shape=() dtype=float32, numpy=5.0>
tf.Tensor(25.0, shape=(), dtype=float32)
tf.Tensor(10.0, shape=(), dtype=float32)
这里x是一个变量,它使用tf.Variable()进行声明,同时用initial_value参数对变量x进行初始化,这里将变量初始化为5。与一般张量一样,该变量具有形状、类型和值3种属性。变量与一般张量的一个重要区别是,变量默认可以通过TensorFlow自动求导机制求导,因此常用来定义机器学习模型的参数。tf.GradientTape()可看作是一个自动求导记录器,其中的变量x和计算步骤y = tf.square(x)会被自动记录,因此可通过y_grad = tape.gradient(y, x)求张量y对变量x的导数。
TensorFlow计算程序:
import tensorflow as tf
X = tf.constant([[1., 2.], [3., 4.]])
y = tf.constant([[1.], [2.]])
w = tf.Variable(initial_value=[[1.], [2.]])
b = tf.Variable(initial_value=1.)
with tf.GradientTape() as tape:
L = tf.reduce_sum(tf.square(tf.matmul(X, w) + b - y))
w_grad, b_grad = tape.gradient(L, [w, b])
# 计算L(w, b)关于w, b的偏导数
print(L, w_grad, b_grad)
输出结果:
tf.Tensor(125.0, shape=(), dtype=float32)
tf.Tensor([[ 70.] [100.]], shape=(2, 1), dtype=float32)
tf.Tensor(30.0, shape=(), dtype=float32)
以上程序同样使用了tf.GradientTape()计算函数L对w、b的偏导数。tf.matmul()用于矩阵乘法运算。tf.square用于对输入张量每个元素求平方,且不改变张量的形状。tf.reduce_sum()用于对输入张量的所有元素求和。
(作者Email联系:yuanzywhu@163.com)
发布日期:2020年10月28日
最后
以上就是寂寞自行车为你收集整理的Anaconda3环境TensorFlow2深度学习框架安装及应用基础的全部内容,希望文章能够帮你解决Anaconda3环境TensorFlow2深度学习框架安装及应用基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复