栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

5.paddlepaddle之10行代码深度学习图片分类(cifar)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

5.paddlepaddle之10行代码深度学习图片分类(cifar)

前言

 

本文所依赖的环境如下,主要还是paddlepaddle:

paddlepaddle(2.3.1)
cifar数据集
1.cifar数据集

cifar数据集官网:CIFAR-10 and CIFAR-100 datasets 

cifar的数据集有10分类和100分类图片,图片大小为(32,32,3),其中cifar10数据集有6万张图片10分类,5万训练集和10万训练集。

 

2. 模型训练与验证

第一步,python引入所需的paddle依赖。

import paddle
from paddle.vision.transforms import Normalize,Compose,Transpose,Resize

第二步,获取cifar数据集,这里paddlepaddle支持直接获取cifar数据集,但是其数据格式是HWC,channel在后,由于paddlepaddle的模型和pytorch都默认的是CHW数据格式,所以我们加上转置函数Transpose,由于cifar图片本身过小,扩大size到(227,227,3)。

transform = Compose([Resize(227),Normalize(mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], data_format='HWC'),Transpose()])
train_dataset = paddle.vision.datasets.Cifar10(mode='train',transform=transform,backend='cv2')
test_dataset = paddle.vision.datasets.Cifar10(mode='test',transform=transform,backend='cv2')

第三步,构建模型,在这里我们直接使用paddlepaddle的内置模型vgg,这是一个由3*3卷积层堆叠的模型,相当基础的模型。

alexnet = paddle.vision.models.vgg11(batch_norm=True,num_classes=10)
model = paddle.Model(alexnet)

第四步,配置优化器,损失函数,由于是多分类任务,我们选择交叉熵损失函数。

model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),
              paddle.nn.CrossEntropyLoss(),
              paddle.metric.Accuracy())

第五步,vgg模型训练,配置epoch,batch_size等。

model.fit(train_dataset, epochs=50, batch_size=1024, verbose=1)

第六步 ,vgg模型在测试集上做最终验证。

model.evaluate(test_dataset,batch_size=1024,verbose=1)

最后,执行训练。放出全部代码,可以看到paddlepaddle在传统图片分类上可以很容易的得到结果。

import paddle
from paddle.vision.transforms import Normalize,Compose,Transpose,Resize
transform = Compose([Resize(227),Normalize(mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], data_format='HWC'),Transpose()])
train_dataset = paddle.vision.datasets.Cifar10(mode='train',transform=transform,backend='cv2')
test_dataset = paddle.vision.datasets.Cifar10(mode='test',transform=transform,backend='cv2')
alexnet = paddle.vision.models.resnet(num_classes=10)
model = paddle.Model(alexnet)
model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),
            paddle.nn.CrossEntropyLoss(),
             paddle.metric.Accuracy())
model.fit(train_dataset, epochs=50, batch_size=128, verbose=1)
model.evaluate(test_dataset, batch_size=128, verbose=1)

总结,本文主要对cifar数据集进行paddlepaddle的模型训练,代码简洁,可以看出paddle在集成上是非常好的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号