Pytorch神经网络高效入门教程,Pytorch 神经网络训练代码
这篇文章主要为大家介绍了框架深度神经网络入门准备自己的图片数据示例过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
目录
正文一、所有图片放在一个文件夹内二、不同类别的图片放在不同的文件夹内
正文
图片数据一般有两种情况:
1、所有图片放在一个文件夹内,另外有一个文本文件(文本文件)文件显示标签。
2、不同类别的图片放在不同的文件夹内,文件夹就是图片的类别。
针对这两种不同的情况,数据集的准备也不相同,第一种情况可以自定义一个数据集,第二种情况直接调用火炬视觉。数据集。图像文件夹来处理。下面分别进行说明:
一、所有图片放在一个文件夹内
这里以手写数字识别数据集的10000个试验为例,我先把试验集的10000个图片保存出来,并生着对应的文本文件(文本文件)标签文件。
先在当前目录创建一个空文件夹mnist_test,用于保存10000张图片,接着运行代码:
进口火炬
进口火炬视觉
将matplotlib.pyplot作为血小板计数导入
从撇除导入超正析象管
Mn ist _ test=火炬视觉。数据集。Mn ist(。/mnist ,train=False,download=True
)
打印(测试集: ,len(mnist_test))
f=打开( mnist_test.txt , w )
对于I,(img,label)in enumerate(mnist _ test):
img_path= ./mnist_test/ str(i) . jpg
io.imsave(img_path,img)
f。write(img _ path str(label) \ n )
f.close()
经过上面的操作,10000张图片就保存在mnist_test文件夹里了,并在当前目录下生成了一个mnist_test.txt的文件,大致如下:
前期工作就装备好了,接着就进入正题了:
从参考导入转换、实用程序
从torch.utils.data导入数据集,数据加载器
将matplotlib.pyplot作为血小板计数导入
从太平航运进口图片
def默认_加载程序(路径):
返回Image.open(路径)。转换(“RGB”)
类我的数据集(数据集):
def __init__(self,txt,transform=None,target_transform=None,loader=default_loader):
fh=open(txt, r )
imgs=[]
对于fh:中的线路
line=line.strip(\n )
line=line.rstrip()
words=line.split()
imgs.append((words[0],int(words[1])))
self.imgs=imgs
自我转换=转换
self.target_transform=目标转换
自动装载机=装载机
def __getitem__(self,index):
fn,label=self.imgs[index]
img=自动加载器(fn)
如果自我改造不是无:
img=自我转换(img)
返回图像,标签
def __len__(self):
返回镜头(self.imgs)
train _ data=我的数据集(txt= mnist _ test。txt ,transform=transforms .ToTensor())
数据加载器=数据加载器(train _ data,batch_size=100,shuffle=True)
print(len(data_loader))
定义显示_批处理(imgs):
grid=utils.make_grid(imgs)
plt.imshow(grid.numpy().转置((1,2,0)))
plt.title(来自数据加载器的批处理)
对于我,枚举(数据加载器):中的(批次x,批次y)
如果(ILT;4):
print(i,batch_x.size(),batch_y.size())
显示批处理(批处理x)
plt.axis("关")
plt.show()
自定义了一个我的数据集,继承自torch.utils.data.Dataset。然后利用torch.utils.data.DataLoader将整个数据集分成多个批次。
二、不同类别的图片放在不同的文件夹内
同样先准备数据,这里以花数据集为例
提取链接https://pan.baidu.com/s/1dcAsOOZpUfWNYR77JGXPHA?号pwd=mwg6
花总共有五类,分别放在5个文件夹下。大致如下图:
我的路径是d :/花/。
数据准备好了,就开始准备资料组吧,这里直接调用参考里面的图像文件夹
进口火炬
进口火炬视觉
从参考导入转换、实用程序
将matplotlib.pyplot作为血小板计数导入
img _ data=火炬视觉。数据集。图像文件夹( d :/bnu/database/flower ),
转换=转换。撰写([
转变。标度(256),
转变。中央作物(224),
转变ToTensor()])
)
print(len(img_data))
数据加载器=火炬。utils。数据。数据加载器(img _ data,batch_size=20,shuffle=True)
print(len(data_loader))
定义显示_批处理(imgs):
grid=utils.make_grid(imgs,nrow=5)
plt.imshow(grid.numpy().转置((1,2,0)))
plt.title(来自数据加载器的批处理)
对于我,枚举(数据加载器):中的(批次x,批次y)
如果(ILT;4):
print(i,batch_x.size(),batch_y.size())
显示批处理(批处理x)
plt.axis("关")
plt.show()
以上就是框架深度神经网络入门准备自己的图片数据的详细内容,更多关于框架图片数据准备的资料请关注盛行信息技术软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。