TensorFlow 中的 TfLearn 及其安装
TFlearn 是一个基于 TensorFlow 框架构建的开源深度学习库。它提供了一个高级 API,可以轻松创建和训练不同的神经网络模型。
它提供了一系列预先存在的模型,例如卷积神经网络 (CNN)、深度神经网络 (DNN) 和许多其他模型。它还包括各种激活函数,例如 ReLU(修正线性单元)、softmax,以及诸如分类交叉熵之类的损失函数。
由于不需要广泛了解 TensorFlow 中的神经网络 API,TfLearn 是初学者的理想库。它是一个简单易用的库,我们可以定义输入、隐藏和输出层,而不是构建计算密集型网络架构,例如 AlexNet 或 LeNet 架构。
如何使用 TfLearn?
首先,检查系统中是否存在 Python。可以通过打印系统中存在的 Python 版本来检查。
python ---version
如果你的系统中未安装 Python,可以访问“python.org”网站安装 Python 3.8 或更高版本。
之后,检查你的系统中是否安装了 TensorFlow 模块。可以通过执行以下命令来完成:
pip install tensorflow
在这种情况下,TensorFlow 已安装。如果它不存在,它将安装该模块到你的系统中。
之后,使用以下命令将 TfLearn 模块安装到你的系统中:
pip install tflearn

现在我们已经下载了所有先决条件,让我们来看一个使用 TfLearn 的示例。
示例 1
在下面的程序中,使用 MNIST 数据集来训练和测试我们的模型。TfLearn 默认在其软件包中提供 MNIST 数据集。因此,我们可以使用它。
为了提高预测精度,并使计算机能够理解图像,我们使用独热编码的概念来定义 [0,...,9] 中的类别。数据集实际上是以手写数字的形式存在的。
算法
导入所有库。
加载 MNIST 数据集并将值赋给 x_train、y_train、x_test 和 y_test,其中 x 表示数据集中的值,y 表示标签。
将 x_train 和 x_test 转换为浮点值,并通过除以 255 将其像素值转换为 0 或 1。
定义 10 个子图,并通过初始化 for 循环来自动缩放其图像比例,将图像打印到子图上。
打印图像。
import tflearn
from tflearn.datasets import mnist
import matplotlib.pyplot as plt
(x_train, y_train),(x_test,y_test)=mnist.load_data()
x_train=x_train.astype('float32')
x_test=x_test.astype('float32')
x_train, x_test=x_train/255.0, x_test/255.0
#To show the dataset
fi,ax=plt.subplots(10,10)
k=0
for i in range(10):
for j in range(10):
ax[i][j].imshow(x_train[k].reshape(28,28), aspect='auto')
k+=1
plt.show()
我们加载数据集并将其分成训练数据和测试数据。然后,我们将训练和测试数据的类型转换为 float32,并通过将图像的像素值除以 255.0 来对其进行归一化,以便它们在 0 和 1 的范围内。
我们创建一个 10x10 的网格,并初始化一个指针来跟踪图像索引。我们使用循环遍历网格。对于每个网格框,我们显示来自训练集的图像,该图像将图像从一维数组重新整形为具有 28x28 维度的二维数组。
输出

示例 2
在前面的示例中,我们加载了未进行独热编码的 MNIST 数据。在下面的示例中,我们将打印应用独热编码后训练和测试标签的形状,并打印训练标签的前五行。
算法
使用 tflearn 导入 MNIST 数据集。
加载具有独热编码值的 MNIST 数据集。
打印数据集的形状和维度。
打印训练标签的前五行。
from tflearn.datasets import mnist
x_train, y_train, x_test, y_test=mnist.load_data(one_hot=True)
print("Training Data shape: ", x_train.shape)
print("Training Labels shape: ", y_train.shape)
print("Testing Data shape: ", x_train.shape)
print("Testing Labels shape: ", y_train.shape)
print("First 5 training labels: ")
print(y_train[:5])
在这里,我们加载包含数字手写图像的 MNIST 数据集。然后,我们将训练图像和标签分配给单独的变量,同样地,将测试图像和标签分配给单独的变量。
one_hot = true 参数确保标签以独热编码格式表示,这是一种以二进制向量格式表示所需数据的表示方法,其中一个元素固定为热 (1),其余元素表示为冷 (0)。这里热元素是所需的靶元素。
然后,我们打印测试和训练数据(图像和标签)。
输出

构建神经网络模型
现在我们已经了解了我们正在处理的内容,让我们构建我们的神经网络模型。神经网络包含三个层,即:
输入层
隐藏层
输出层
示例 3
为了在我们的神经网络中构建这些层,我们使用 TfLearn 模块。
我们在隐藏层中定义具有 256 个层的神经网络,并使用 ReLU 激活函数,以及包含 10 个层和 softmax 激活函数的输出层。在大多数神经网络架构中,输出层总是具有 softmax 激活函数。
然后,我们使用 SGD(随机梯度下降)优化器和分类交叉熵损失函数以及 0.1 的学习率来定义模型。有了这些,我们构建我们的模型并将其拟合到我们的训练数据和测试数据,然后我们打印模型的精度。
算法
导入所有库。
加载 MNIST 数据集并将值赋给 x_train、y_train、x_test 和 y_test,其中 x 表示数据集中的值,y 表示标签。
导入数据集时设置 one_hot=True。
打印所有变量的形状。
将输入层定义为 [None,784]。
对于隐藏层,将输入层与 256 层以及 ReLU 激活函数等同起来。
对于输出层,添加 10 层以及 softmax 激活函数。
使用必要的优化器和损失函数编译模型并打印精度。
import tflearn
from tflearn.datasets import mnist
x_train, y_train, x_test, y_test=mnist.load_data(one_hot=True)
print("Training Data shape: ", x_train.shape)
print("Training Labels shape: ", y_train.shape)
print("Testing Data shape: ", x_train.shape)
print("Testing Labels shape: ", y_train.shape)
print("First 5 training labels: ")
print(y_train[:5])
i_layer=tflearn.input_data(shape=[None,784])
h_layer=tflearn.fully_connected(i_layer, 256, activation='relu')
o_layer=tflearn.fully_connected(h_layer, 10, activation='softmax')
net=tflearn.regression(o_layer, optimizer='sgd', learning_rate=0.1,
loss='categorical_crossentropy')
model=tflearn.DNN(net)
model.fit(x_train, y_train, validation_set=(x_test,y_test),
n_epoch=20, batch_size=128)
acc=model.evaluate(x_test,y_test)
print("Accuracy: ", acc)
我们通过从 MNIST 加载数据集将数据分成训练数据和测试数据。然后,我们将独热编码格式应用于标签。然后,我们定义神经网络的架构并设置网络的训练参数,例如学习率、损失函数等。
然后,我们对训练数据进行 20 个 epoch 的训练,并在训练过程中验证模型在测试数据上的性能。然后,我们对测试数据评估训练好的模型并计算精度。
输出

示例 4
在上面的示例中,我们可以看到我们的精度率为 97.5%,这非常好。通过这种方式,我们可以通过更改优化器和损失函数来微调模型的精度。在这个示例中,我们看到了使用 Adam 优化器。
算法
导入所有库。
加载 MNIST 数据集并将值赋给 x_train、y_train、x_test 和 y_test,其中 x 表示数据集中的值,y 表示标签。
导入数据集时设置 one_hot=True。
打印所有变量的形状。
将输入层定义为 [None,784]。
对于隐藏层,将输入层与 256 层以及 ReLU 激活函数等同起来。
对于输出层,添加 10 层以及 softmax 激活函数。
使用必要的优化器和损失函数编译模型并打印精度。
import tflearn
from tflearn.datasets import mnist
x_train, y_train, x_test, y_test=mnist.load_data(one_hot=True)
i_layer=tflearn.input_data(shape=[None,784])
h_layer=tflearn.fully_connected(i_layer, 256, activation='relu')
o_layer=tflearn.fully_connected(h_layer, 10, activation='softmax')
net=tflearn.regression(o_layer, optimizer='adam', learning_rate=0.1,
loss='categorical_crossentropy')
model=tflearn.DNN(net)
model.fit(x_train, y_train, validation_set=(x_test,y_test),
n_epoch=20, batch_size=128)
acc=model.evaluate(x_test,y_test)
输出

对于所示模型来说,这非常低,因此我们将 SGD 优化器用于我们的目的。
结论
如上所示,TfLearn 是一个非常简单易懂的库,用于构建深度学习模型。但是,由于它是一个非常简单的库,因此它不像 TensorFlow 或 PyTorch 这些库那样支持许多激活函数或损失函数。与上述库相比,它在模型定制方面也存在显著不足。
该库在计算机视觉中用于图像分割、目标检测等任务,借助卷积神经网络,以及在算法可以构建并在教育环境中教授的教育和研究领域。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP