Javatpoint标志
Javatpoint标志

卷积神经网络模型的检验

在最后一节中,我们实现了一个神经网络或创建了一个分类手写数字的模型。现在,我们通过从网上抓取一张图像来测试我们的模型。我们使用了下面的图片:

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

当你把这个链接粘贴到浏览器上时,你会看到数字5的图像:

PyTorch测试

看完这个,我们会意识到它是数字5。现在,我们试着让我们的网络来预测它。

我们有以下步骤来对数字图像进行预测:

步骤1:

在第一步中,我们将执行得到请求检索图像数据。做一个得到请求,我们将需要导入请求为:

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

步骤2:

在下一步中,我们设置一个变量响应,其值将从get ()请求方法。的get ()方法将包含两个参数,即URL和stream, stream将等于true。

步骤3:

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

我们使用open ()方法,并将响应的原始内容作为参数传递。该方法返回的值将赋值给名为img的变量,如下:

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

当我们运行它时,它会因为PIL而产生一个错误。我们必须先安装枕头才能运行此代码。我们必须跑安装-c anaconda枕头在水蟒命令提示符上命令安装枕头。

当您运行代码时,它将给出预期的输出。

PyTorch测试

步骤4:

我们需要确保图像与神经网络被训练学习的内容相对应。我们的图像是1000*1000像素,所以我们需要把它做成28*28灰度的图像,就像训练数据中的图像一样。在我们训练的图像数据集中,图像具有黑色背景和白色前景,而在上面的图像中,有白色背景和黑色前景。现在,我们的第一个任务是对图像进行预处理。

我们将使用转化()的方法公益诉讼。ImageOps然后把图像作为参数传递。这个方法将反转图像的颜色。

这张图片是RGB格式的,有三个通道的像素强度值,这有很多原因。为此,我们必须将此图像转换为黑白二进位图像,我们将此图像转换为:

我们将对这个图像进行变换,就像我们对所有其他训练图像进行变换一样。我们必须将图像转换为28*28像素,因此我们必须添加一个参数调整在变换后的链组成中为:

现在,我们的图像是张量的形式,所以我们必须把它变成numpy数组。在绘制图像之前,我们必须导入公益诉讼。ImageOps然后将图像绘制为:

PyTorch测试

步骤5:

现在,我们将把这张图像输入我们的神经网络来进行预测。我们将图像添加到设备中,并确保四维输入为四维权重。我们将解压缩图像并将其分配给一个新的变量image,如下所示:

这将返回一个维度为1的新张量,它将被插入到指定的位置0。

它将给我们预期的预测为:

PyTorch测试

步骤6:

在下一步中,我们包装验证加载器。它将创建一个对象,允许我们一次一个元素地通过可变验证加载器。我们通过调用数据采集器的next来一次访问一个元素。next()函数将获取第一批验证数据,并且该验证数据将被分割为图像和标签

没有必要重塑形象。我们将把图像和标签添加到我们的设备中,我们将要求输出所有的图像和预测。

第七步:

现在,我们将在批处理中绘制图像及其对应的标签。这将借助plt的图形函数来完成,设置fig size等于整数25*4的元组,它将指定图形的宽度和高度。

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

现在,我们将在im_show()函数的帮助下显示我们的图像,并为每个图像图形提供一个标题:

最后调用plt.show(),它会给我们一个错误。这个错误将是im_convert ()函数不能将CUDA张量转换为numpy。所以我们要用tensor.cpu ()为:

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

PyTorch测试

完整的代码:


PyTorch测试

PyTorch测试

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


下一个话题 CIFAR-10和CIFAR-100数据





Youtube 观看视频请加入我们的Youtube频道:现在加入

反馈


帮助他人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


B.Tech / MCA






Baidu
map