关于Python深度学习库TensorFlow的简介

430 阅读5分钟

TensorFlow是一个由谷歌创建并发布的用于快速数值计算的Python库。

它是一个基础库,可以直接用于创建深度学习模型,或者通过使用建立在TensorFlow之上的简化过程的包装库。

在这篇文章中,你将发现用于深度学习的TensorFlow库。

让我们开始吧。

Introduction to the Python Deep Learning Library TensorFlow

Python深度学习库TensorFlow介绍

什么是TensorFlow?

TensorFlow是一个用于快速数值计算的开源库。

它是由谷歌创建和维护的,并在Apache 2.0开源许可下发布。该API名义上是为Python编程语言准备的,尽管可以访问底层的C++ API。

与其他旨在用于深度学习的数值库(如Theano)不同,TensorFlow被设计用于研发和生产系统,特别是谷歌搜索中的RankBrain和有趣的DeepDream项目

它可以在单CPU系统、GPU以及移动设备和数百台机器的大规模分布式系统上运行。

如何安装TensorFlow

如果你已经有一个Python SciPy环境,TensorFlow的安装是很简单的。

TensorFlow在Python 3.3以上版本中工作。你可以按照TensorFlow网站上的下载和安装说明。通过PyPI进行安装可能是最简单的,在下载和设置网页上有针对你的Linux或Mac OS X平台使用pip命令的具体说明。在最简单的情况下,你只需要在你的命令行中输入以下内容。

pip install tensorflow

例外的情况是在较新的带有苹果硅CPU的Mac上。这个特定架构的软件包名称是tensorflow-macos

pip install tensorflow-macos

如果你愿意,还有virtualenvdocker镜像可以使用。

为了利用GPU,你还需要安装Cuda工具包。

你在TensorFlow中的第一个例子

计算是用数据流和有向图的结构中的操作来描述的。

  • 节点。节点执行计算,有零个或多个输入和输出。在节点之间移动的数据被称为张量,它是实值的多维数组。
  • 。图定义了数据流、分支、循环和状态的更新。特殊的边可以用来同步图中的行为,例如等待一些输入的计算完成。
  • 操作。一个操作是一个命名的抽象计算,它可以接受输入属性并产生输出属性。例如,你可以定义一个加法或乘法操作。

用TensorFlow进行计算

这第一个例子是TensorFlow网站上的例子的修改版。它展示了你如何将值定义为张量并执行一个操作。

import tensorflow as tf
a = tf.constant(10)
b = tf.constant(32)
print(a+b)

运行这个例子会显示。

tf.Tensor(42, shape=(), dtype=int32)

用TensorFlow进行线性回归

下一个例子来自TensorFlow教程中的介绍。

这个例子显示了你如何定义变量(如W和b)以及作为计算结果的变量(y)。

我们得到了一些TensorFlow的感觉,将计算的定义和声明分开。在下文中,有自动区分的功能。当我们使用函数mse_loss() 来计算yy_data 之间的差值时,有一个图被创建,将函数产生的值连接到TensorFlow的变量Wb 。TensorFlow使用这个图来推断如何更新minimize() 函数中的变量。

import tensorflow as tf
import numpy as np

# Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3

# Try to find values for W and b that compute y_data = W * x_data + b
# (We know that W should be 0.1 and b 0.3, but Tensorflow will
# figure that out for us.)
W = tf.Variable(tf.random.normal([1]))
b = tf.Variable(tf.zeros([1]))

# A function to compute mean squared error between y_data and computed y
def mse_loss():
    y = W * x_data + b
    loss = tf.reduce_mean(tf.square(y - y_data))
    return loss

# Minimize the mean squared errors.
optimizer = tf.keras.optimizers.Adam()
for step in range(5000):
    optimizer.minimize(mse_loss, var_list=[W,b])
    if step % 500 == 0:
        print(step, W.numpy(), b.numpy())

# Learns best fit is W: [0.1], b: [0.3]

运行这个例子会打印出以下输出。

0 [-0.35913563] [0.001]
500 [-0.04056413] [0.3131764]
1000 [0.01548613] [0.3467598]
1500 [0.03492216] [0.3369852]
2000 [0.05408324] [0.32609695]
2500 [0.07121297] [0.316361]
3000 [0.08443557] [0.30884594]
3500 [0.09302785] [0.3039626]
4000 [0.09754606] [0.3013947]
4500 [0.09936733] [0.3003596]

你可以在基本使用指南中了解更多关于TensorFlow的机制。

更多深度学习模型

你的TensorFlow安装中带有一些深度学习模型,你可以直接使用和实验。

首先,你需要找出TensorFlow在你的系统中的安装位置。例如,你可以使用下面的Python脚本。

python -c 'import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))'

例如,这可能是。

/usr/lib/python3.9/site-packages/tensorflow

改变到这个目录,注意模型的子目录。包括一些深度学习模型,有类似教程的注释,例如。

  • 多线程的word2vec迷你批量跳格模型。
  • 多线程的word2vec非批处理的跳格模型。
  • CIFAR-10网络的CNN。
  • 简单的、端到端的、类似LeNet-5的卷积MNIST模型例子。
  • 具有注意力机制的序列对序列模型。

还可以查看例子目录,因为它包含了一个使用MNIST数据集的例子。

在TensorFlow的主网站上也有一个很好的教程列表。它们展示了如何使用不同的网络类型、不同的数据集以及如何以各种不同的方式使用该框架。

最后,还有TensorFlow游乐场,你可以在你的网络浏览器中试验小型网络。

摘要

在这篇文章中,你发现了用于深度学习的TensorFlow Python库。

你了解到它是一个快速数值计算的库,专门为大型深度学习模型的开发和评估所需的操作类型而设计。