PyTorch 教程-图像识别中的图像转换
PyTorch 教程-图像识别中的图像转换
gh_1d7504e4dee1
回复:python,领取Python面试题。分享Python教程,Python架构师教程,Python爬虫,Python编程视频,Python脚本,Pycharm教程,Python微服务架构,Python分布式架构,Pycharm注册码。
在PyTorch中进行图像识别,加载和转换是两个基本的概念,是识别过程的起始步骤。
以下是逐步执行加载和转换的步骤:
步骤1:
import
torch
import
matplotlib.pyplot as plt
import
numpy as np
from torchvision
import
datasets, transforms
步骤2:
training_dataset
=datasets.MNIST(root=
’./data’
)
Training_dataset
=datasets.MNIST(root=
’./data’
,train=
True
,download=
True
)
最后一个参数将是transform,它等于在training_dataset之前初始化的transform1参数。此参数规定了您希望在图像上应用的任何图像操作。
training_dataset
=datasets.MNIST(root=
’./data’
,train=
True
,download=
True
,transform=transform1)
注意:我们的MNIST图像是28*28的灰度图像,这意味着每个图像都是一个28像素宽和28像素长的二维数字数组,每个像素的强度范围从0到255。
资源分享
transform1
=transforms.Compose([transforms.ToTensor()])
transform1
=transforms.Compose([transforms.ToTensor(),transforms.Normalize((
0.5
,),(
0.5
,))])
training_dataset
步骤3:
def
im_convert
(tensor)
:
image
=tensor.clone().detach().numpy()
注意:将转换为numpy数组的张量具有第一、第二和第三维的形状。第一维代表颜色通道,第二和第三维代表图像的宽度和高度以及像素。
我们知道MNIST数据集中的每个图像都是一个对应于单个颜色通道的灰度图像,宽度和高度为28*28像素。因此,形状将为(1,28,28)。
步骤4:
image
=image.transpose(
1
,
2
,
0
)
此方法交换轴0与轴1,轴1与轴2。
步骤5:
image=image*(np.
array
((
0.5
,
0.5
,
0.5
))+np.
array
((
0.5
,
0.5
,
0.5
)))
image=image.clip(0,1)
return image
步骤6:
training_loader
=torch.utils.data.DataLoader(dataset=training_dataset,batch_size=
100
,shuffle=
True
)
第一个参数是数据集,等于我们的training_dataset。第二个参数是我们的批量大小,等于100。第三个参数,我们将shuffle设置为true。
注意:批量大小为100将花费600次迭代才能完成一个epoch,并且每次迭代都会更新神经网络的权重并最小化错误。
步骤7:
dataiter=iter(training_loader)
images,labels=dataiter.next()
步骤8:
fig
=plt.figure(figsize=(
25
,
4
))
ax
=fig.add_subplot(
2
,
10
,idx+
1
)
plt
.imshow
(
im_convert
(
images
[idx]
))
ax
.set_title
(
[labels[idx]
.item
()])
最后调用plt.show(),它将为我们提供预期的结果。
完整代码
import
torch
import
matplotlib.pyplot
as
plt
import
numpy
as
np
from
torchvision
import
datasets,transforms
transform1=transforms.Compose([transforms.ToTensor(),transforms.Normalize((
0.5
,),(
0.5
,))])
training_dataset=datasets.MNIST(root=
’./data’
,train=
True
,download=
True
,transform=transform1)
training_loader=torch.utils.data.DataLoader(dataset=training_dataset,batch_size=
100
,shuffle=
True
)
def
im_convert
(tensor)
:
image=tensor.clone().detach().numpy()
image=image.transpose(
1
,
2
,
0
)
print(image.shape)
image=image*(np.array((
0.5
,
0.5
,
0.5
))+np.array((
0.5
,
0.5
,
0.5
)))
image=image.clip(
0
,
1
)
return
image
dataiter=iter(training_loader)
images,labels=dataiter.next()
fig=plt.figure(figsize=(
25
,
4
))
for
idx
in
np.arange(
20
):
ax=fig.add_subplot(
2
,
10
,idx+
1
)
plt.imshow(im_convert(images[idx]))
ax.set_title([labels[idx].item()])
plt.show()
-
为什么互联网公司的人喜欢叫人“同学” -
2024最新9款红包封面!免费领! -
PyTorch 教程-在PyTorch中的图像识别MNIST数据集
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26