如何在PyTorch和TensorFlow中训练图像分类模型

介绍图像分类是计算机视觉的最重要应用之一 。 它的应用范围包括从自动驾驶汽车中的物体分类到医疗行业中的血细胞识别 , 从制造业中的缺陷物品识别到建立可以对戴口罩与否的人进行分类的系统 。 在所有这些行业中 , 图像分类都以一种或另一种方式使用 。 他们是如何做到的呢?他们使用哪个框架?
你必须已阅读很多有关不同深度学习框架(包括TensorFlow , PyTorch , Keras等)之间差异的信息 。 TensorFlow和PyTorch无疑是业内最受欢迎的框架 。 我相信你会发现无穷的资源来学习这些深度学习框架之间的异同 。
如何在PyTorch和TensorFlow中训练图像分类模型文章插图
在本文中 , 我们将了解如何在PyTorch和TensorFlow中建立基本的图像分类模型 。 我们将从PyTorch和TensorFlow的简要概述开始 。 然后 , 我们将使用MNIST手写数字分类数据集 , 并在PyTorch和TensorFlow中使用CNN(卷积神经网络)建立图像分类模型 。
这将是你的起点 , 然后你可以选择自己喜欢的任何框架 , 也可以开始构建其他计算机视觉模型 。
目录

  1. PyTorch概述
  2. TensorFlow概述
  3. 了解问题陈述:MNIST
  4. 在PyTorch中实现卷积神经网络(CNN)
  5. 在TensorFlow中实施卷积神经网络(CNN)
PyTorch概述PyTorch在深度学习社区中越来越受欢迎 , 并且被深度学习从业者广泛使用 , PyTorch是一个提供Tensor计算的Python软件包 。 此外 , tensors是多维数组 , 就像NumPy的ndarrays也可以在GPU上运行一样 。
PyTorch的一个独特功能是它使用动态计算图 。 PyTorch的Autograd软件包从张量生成计算图并自动计算梯度 。 而不是具有特定功能的预定义图形 。
PyTorch为我们提供了一个框架 , 可以随时随地构建计算图 , 甚至在运行时进行更改 。 特别是 , 对于我们不知道创建神经网络需要多少内存的情况 , 这很有用 。
你可以使用PyTorch应对各种深度学习挑战 。 以下是一些挑战:
  1. 图像(检测 , 分类等)
  2. 文字(分类 , 生成等)
  3. 强化学习
TensorFlow概述TensorFlow由Google Brain团队的研究人员和工程师开发 。 它与深度学习领域最常用的软件库相距甚远(尽管其他软件库正在迅速追赶) 。
TensorFlow如此受欢迎的最大原因之一是它支持多种语言来创建深度学习模型 , 例如Python , C ++和R 。 它提供了详细的文档和指南的指导 。
TensorFlow包含许多组件 。 以下是两个杰出的代表:
  1. TensorBoard:使用数据流图帮助有效地可视化数据
  2. TensorFlow:对于快速部署新算法/实验非常有用
TensorFlow当前正在运行2.0版本 , 该版本于2019年9月正式发布 。 我们还将在2.0版本中实现CNN 。
我希望你现在对PyTorch和TensorFlow都有基本的了解 。 现在 , 让我们尝试使用这两个框架构建深度学习模型并了解其内部工作 。 在此之前 , 让我们首先了解我们将在本文中解决的问题陈述 。
了解问题陈述:MNIST在开始之前 , 让我们了解数据集 。 在本文中 , 我们将解决流行的MNIST问题 。 这是一个数字识别任务 , 其中我们必须将手写数字的图像分类为0到9这10个类别之一 。
在MNIST数据集中 , 我们具有从各种扫描的文档中获取的数字图像 , 尺寸经过标准化并居中 。 随后 , 每个图像都是28 x 28像素的正方形(总计784像素) 。 数据集的标准拆分用于评估和比较模型 , 其中60,000张图像用于训练模型 , 而单独的10,000张图像集用于测试模型 。
如何在PyTorch和TensorFlow中训练图像分类模型文章插图
现在 , 我们也了解了数据集 。 因此 , 让我们在PyTorch和TensorFlow中使用CNN构建图像分类模型 。 我们将从PyTorch中的实现开始 。 我们将在google colab中实现这些模型 , 该模型提供免费的GPU以运行这些深度学习模型 。
在PyTorch中实现卷积神经网络(CNN)让我们首先导入所有库:
# importing the librariesimport numpy as npimport torchimport torchvisionimport matplotlib.pyplot as pltfrom time import timefrom torchvision import datasets, transformsfrom torch import nn, optim我们还要在Google colab上检查PyTorch的版本:
# version of pytorchprint(torch.__version__)
如何在PyTorch和TensorFlow中训练图像分类模型文章插图
因此 , 我正在使用1.5.1版本的PyTorch 。 如果使用任何其他版本 , 则可能会收到一些警告或错误 , 因此你可以更新到此版本的PyTorch 。 我们将对图像执行一些转换 , 例如对像素值进行归一化 , 因此 , 让我们也定义这些转换: