卷积神经网络模型的检验在最后一节中,我们实现了一个神经网络或创建了一个分类手写数字的模型。现在,我们通过从网上抓取一张图像来测试我们的模型。我们使用了下面的图片: http://calstormbasketball.com/wp-content/uploads/2018/08/5020657994731_01c.jpeg 当你把这个链接粘贴到浏览器上时,你会看到数字5的图像: ![]() 看完这个,我们会意识到它是数字5。现在,我们试着让我们的网络来预测它。 我们有以下步骤来对数字图像进行预测: 步骤1: 在第一步中,我们将执行得到请求检索图像数据。做一个得到请求,我们将需要导入请求为: 现在,我们设置一个变量URL并将链接赋值为字符串。 步骤2: 在下一步中,我们设置一个变量响应,其值将从get ()请求方法。的get ()方法将包含两个参数,即URL和stream, stream将等于true。 步骤3: 我们将使用响应的原始内容来获取图像。为此,我们首先必须导入图像从PIL (Python Image Library)作为。 我们使用open ()方法,并将响应的原始内容作为参数传递。该方法返回的值将赋值给名为img的变量,如下: 现在,我们绘制图像以确保一切正常工作。 当我们运行它时,它会因为PIL而产生一个错误。我们必须先安装枕头才能运行此代码。我们必须跑安装-c anaconda枕头在水蟒命令提示符上命令安装枕头。 当您运行代码时,它将给出预期的输出。 ![]() 步骤4: 我们需要确保图像与神经网络被训练学习的内容相对应。我们的图像是1000*1000像素,所以我们需要把它做成28*28灰度的图像,就像训练数据中的图像一样。在我们训练的图像数据集中,图像具有黑色背景和白色前景,而在上面的图像中,有白色背景和黑色前景。现在,我们的第一个任务是对图像进行预处理。 我们将使用转化()的方法公益诉讼。ImageOps然后把图像作为参数传递。这个方法将反转图像的颜色。 这张图片是RGB格式的,有三个通道的像素强度值,这有很多原因。为此,我们必须将此图像转换为黑白二进位图像,我们将此图像转换为: 我们将对这个图像进行变换,就像我们对所有其他训练图像进行变换一样。我们必须将图像转换为28*28像素,因此我们必须添加一个参数调整在变换后的链组成中为: 现在,我们的图像是张量的形式,所以我们必须把它变成numpy数组。在绘制图像之前,我们必须导入公益诉讼。ImageOps然后将图像绘制为: ![]() 步骤5: 现在,我们将把这张图像输入我们的神经网络来进行预测。我们将图像添加到设备中,并确保四维输入为四维权重。我们将解压缩图像并将其分配给一个新的变量image,如下所示: 这将返回一个维度为1的新张量,它将被插入到指定的位置0。 它将给我们预期的预测为: ![]() 步骤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(),它将为我们提供预期的输出: ![]() 完整的代码:![]() ![]() 因此,很明显,与深度神经网络相比,CNN以最好的方式对图像进行分类。这是我们喜欢的原因卷积神经网络而不是深度神经网络.
下一个话题
CIFAR-10和CIFAR-100数据
|