TensorFlow 2.0 入门
设置 TensorFlow 2.0
Keras 概述
基于时尚 MNIST 数据集的分类
Google Colab
TensorFlow 是一个开源的机器学习平台。使用 TensorFlow,我们可以轻松地编写、构建和部署我们的机器学习模型。
Tensorflow 2.0 注重简洁性和易用性,更新内容包括:
- 使用 Keras 轻松构建模型。
- 在任何平台上实现稳健的生产环境模型部署。
- 强大的研究实验工具。
- 通过清理已弃用的 API 和减少重复代码来简化 API。
本文面向想要了解如何入门 TensorFlow 2.0 的用户。它将帮助你在不到一小时内创建自己的图像分类模型!那么,让我们开始吧😃
设置 TensorFlow 2.0
使用 pip 安装 Tensorflow 2.0 包 -
pip install tensorflow==2.0.0-alpha0
要验证是否安装正确,请尝试导入 tensorflow 并检查其版本。(版本号应为 2.0.0-alpha0)
Keras 概述
在开始学习 TensorFlow 之前,我们应该先简要了解一下 Keras。Keras 是一个高级神经网络 API,用 Python 编写,可以运行在 TensorFlow、CNTK 或 Theano 之上。Keras 非常易于使用,可以帮助您快速构建模型。
Keras 的核心数据结构是模型,它是一种组织层级结构的方式。最简单的模型类型是序列模型,它是一种线性堆叠的层级结构。
Sequential模型定义如下:
from keras.models import Sequential
model = Sequential()
使用以下方式堆叠图层.add():
from keras.layers import Dense
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
模型构建完成后,即可配置其学习过程.compile():
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
想了解更多关于Keras的信息,请点击链接。
基于时尚 MNIST 数据集的分类
我们准备构建自己的分类模型!这就像 TensorFlow 里的“Hello World”程序一样😄
我们采用了Fashion MNIST 数据集,该数据集包含 10 个类别共 70,000 张灰度图像。数据集中的每张图像都代表一种服装,分辨率为 28 x 28 像素。
执行必要的导入操作
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
可以直接从此处加载数据集keras.datasets
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
训练集train_images包含 6 万张图像,而待训练test_images集包含 1 万张图像。每张图像都是一个 28x28 的数组,像素值范围为 0 到 255。标签是一个整数数组,范围从 0 到 9,对应于服装类别。0 代表 T 恤/上衣,1 代表裤子,依此类推。这 10 种服装类型被映射到class_names
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
将训练图像和测试图像缩放,使训练图像和测试图像的像素值都在 0 到 1 之间。
train_images = train_images / 255.0
test_images = test_images / 255.0
您可以绘制前 10 张图像来检查数据。
plt.figure(figsize=(10,10))
for i in range(10):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()
使用 Keras 构建序列模型
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
在神经网络中处理图像时,我们需要将 28×28 的二维数组展平为一维数组(28×28 = 784 像素)。该tf.keras.layers.Flatten层负责执行此任务。在此层之后,是两个全连接层,分别包含 128 个和 10 个神经元。最后一层的 softmax 激活函数返回一个包含 10 个值的数组,这些值对应于概率得分,且总和为 1。我们将概率最高的类别分配给输入图像。
编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
- 损失函数 ——它衡量模型在训练过程中的准确度。我们的目标是最小化这个函数。
- 优化器 ——这是根据模型看到的数据及其损失函数来更新模型的方式。
- 指标 ——用于监控训练和测试步骤。准确率衡量的是被正确分类的图像所占的比例。
训练模型
model.fit(train_images, train_labels, epochs=5)
要开始训练,我们调用该model.fit方法将模型拟合到训练数据。
评估准确性test_images
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('\nTest accuracy:', test_acc)
利用这个简单的模型,我们达到了约0.86的准确率。
对……做出预测test images
predictions = model.predict(test_images)
predictions[0]
predictions[0]给出第一张测试图像的概率得分。我们可以查看最大概率或模型预测的类别。
np.argmax(predictions[0])
它给出的值为 9,表明模型已将此图像识别为踝靴class_names[9]。我们可以通过检查另一个值也为 9 的图像来验证此结果。test_labels[0]这表明我们的模型能够正确预测第一张测试图像的值 :)
就是这样!😛 你很快就能用 TensorFlow 2.0 和 Keras 构建并运行你的分类模型了。你可以修改代码,看看改变损失函数、训练轮数和优化器会对模型产生什么影响。如有需要,你可以在我的 GitHub仓库中找到相关的代码。
Google Colab
Colaboratory 允许我们使用 Jupyter Notebook 并与他人共享,无需在自己的电脑上下载、安装或运行任何程序(浏览器除外)。我们所有的 Notebook 都保存在 Google 云端硬盘上。在 Colab 中,代码在专用于我们帐户的虚拟机中执行。虚拟机在闲置一段时间后会被回收,并且系统会强制执行最长使用期限。我们经常会遇到模型训练方面的问题。使用 Colab 可以轻松解决这些问题,因为它提供免费的 GPU 和 TPU。要设置 Colab,您可以点击此链接😺
本文简要概述了 TensorFlow 2.0 的入门方法。我自己也还在学习中,随着学习的深入,我会陆续撰写关于回归、文本分类、模型保存、迁移学习、张量及其运算等方面的文章。😸 如果您觉得这篇文章有用,请点个赞❤。敬请期待更多 TensorFlow 相关内容!😄
文章来源:https://dev.to/apoorvadave/getting-started-with-tensorflow-2-0-2h3n
