卷积神经网络模型测试

17 Mar 2025 | 5 分钟阅读

在上一节中,我们实现了一个神经网络或创建了一个模型,该模型可以对手写数字进行分类。 现在,我们通过从网络上获取图像来测试我们的模型。 我们使用了以下图片

http://calstormbasketball.com/wp-content/uploads/2018/08/5020657994731_01c.jpeg

当您将此链接粘贴到浏览器中时,您将看到数字5的图像,如下所示

PyTorch Testing

看到此消息后,我们将意识到它是数字5。现在,我们将尝试让我们的网络对其进行预测。

我们有以下步骤可以预测数字图像

步骤 1

第一步,我们将执行GET请求以检索图像数据。 要发出GET请求,我们需要导入request作为

现在,我们设置一个变量URL并将链接分配为字符串。

步骤 2

下一步,我们设置一个变量response,其值将从request的get()方法中获得。 get()方法将包含两个参数,即URL和流,并且流将等于true。

步骤 3

我们将使用响应的原始内容来获取图像。 为此,我们首先必须从PIL(Python图像库)导入Image作为。

我们使用图像的open()方法并传递响应的原始内容作为参数。 从此方法返回的值将分配给一个名为img的变量,如下所示

现在,我们绘制图像以确保一切正常。

当我们运行它时,由于PIL会产生错误。 我们必须首先安装pillow才能运行此代码。 我们必须在anaconda命令提示符下运行conda install -c anaconda pillow命令来安装pillow。

运行代码后,它将给出预期的输出。

PyTorch Testing

步骤 4

我们需要确保图像与训练神经网络学习的内容相对应。 我们的图像是1000 * 1000像素,因此我们需要将其制作成28 * 28灰度图像,例如训练数据中的图像。 在我们训练的图像数据集中,图像具有黑色背景和白色前景,而在以上图像中,图像具有白色背景和黑色前景。 现在,我们的首要任务是对该图像进行预处理。

我们将使用PIL.ImageOpsinvert ()方法,并将我们的图像作为参数传递。 此方法将反转图像的颜色。

该图像为RGB格式,具有三个像素强度值通道,由于多种原因,这会有问题。 为此,我们必须将此图像转换为二进制黑白图像,我们将按如下方式转换此图像

我们将以与转换所有其他训练图像相同的方式转换此图像。 我们必须将图像转换为28 * 28像素,因此我们必须在转换链组合中添加一个参数resize,如下所示

现在,我们的图像是张量形式,因此我们必须将其更改为numpy数组。 在绘制图像之前,我们必须导入PIL.ImageOps,然后绘制图像,如下所示

PyTorch Testing

步骤 5

现在,我们将把此图像输入到我们的神经网络中以进行预测。 我们会将图像添加到设备中,并确保四维权重具有四维输入。 我们将取消压缩图像,并将其分配给一个新变量image,如下所示

这将返回一个新的张量,该张量的尺寸为1,该尺寸将插入到指定的位置零处。

它会给我们预期的预测,如下所示

PyTorch Testing

步骤 6

下一步,我们包装验证加载器。 它将创建一个对象,该对象使我们可以一次遍历一个可更改的验证加载器元素。 我们通过在dataiter上调用next一次访问一个元素。 next()函数将获取我们的第一批验证数据,并且该验证数据将分为图像和标签,如下所示

无需重塑图像。 我们将图像和标签添加到我们的设备中,并且我们还需要所有图像的输出和预测。

步骤 7

现在,我们将批量绘制图像及其对应的标签。 这将在plt的figure函数的帮助下完成,并且将fig的大小设置为等于整数25 * 4的元组,该元组将指定图形的宽度和高度。

现在,我们从批处理中绘制20个MNIST图像。我们使用add_subplot()方法将一个子图添加到当前图中,并将2、10和idx作为函数的参数传递。这里,2是行数,10是列数,idx是索引。

现在,我们将借助im_show()函数显示我们的图像,并为每个图像图添加标题,如下所示

最后,调用plt.show(),它会给我们一个错误。 此错误将是im_convert()函数,即无法将CUDA张量转换为numpy。 因此,我们必须使用tensor.cpu(),如下所示

现在,我们将重新调用plt.show(),它将为我们提供预期的输出,如下所示

PyTorch Testing

完整代码


PyTorch Testing

PyTorch Testing

因此,很明显,与深度神经网络相比,CNN以最佳方式对图像进行分类。 这就是为什么我们更喜欢卷积神经网络而不是深度神经网络的原因。