一文教你用paddlepaddle实现猫狗分类

Posted 百度校园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文教你用paddlepaddle实现猫狗分类相关的知识,希望对你有一定的参考价值。

点击菜单栏“粉丝福利”
拿小度,兑手机!


猫狗识别:

一文教你用paddlepaddle实现猫狗分类

相关代码已经上传到aistudio

http://futuretimeline.net/21stcentury/2020-2029.htm

fork一下就可以运行了


这里环境如下:

一文教你用paddlepaddle实现猫狗分类

1

数据集的准备



一文教你用paddlepaddle实现猫狗分类


2

导入必要的包



一文教你用paddlepaddle实现猫狗分类


3

网络配置



网络搭建

在CNN模型中,卷积神经网络能够更好的利用图像的结构信息。下面定义了一个较简单的卷积神经网络。显示了其结构:输入的二维图像,先经过两次卷积层到池化层,再经过全连接层,最后使用softmax分类作为输出层。

池化是非线性下采样的一种形式,主要作用是通过减少网络的参数来减小计算量,并且能够在一定程度上控制过拟合。通常在卷积层的后面会加上一个池化层。paddlepaddle池化默认为最大池化。是用不重叠的矩形框将输入层分成不同的区域,对于每个矩形框的数取最大值作为输出

一文教你用paddlepaddle实现猫狗分类

在上述模型配置完毕后,得到两个fluid.Program:fluid.default_startup_program() 与fluid.default_main_program() 配置完毕了。

参数初始化操作会被写入fluid.default_startup_program()

fluid.default_main_program()用于获取默认或全局main program(主程序)。该主程序用于训练和测试模型。fluid.layers 中的所有layer函数可以向 default_main_program 中添加算子和变量。default_main_program 是fluid的许多编程接口(API)的Program参数的缺省值。例如,当用户program没有传入的时候, Executor.run() 会默认执行 default_main_program 。


4

模型训练与模型评估



(1)创建Executor

首先定义运算场所 fluid.CPUPlace()和 fluid.CUDAPlace(0)分别表示运算场所为CPU和GPU

Executor:接收传入的program,通过run()方法运行program。

(2)定义数据映射器

DataFeeder 负责将reader(读取器)返回的数据转成一种特殊的数据结构,使它们可以输入到 Executor

3)定义绘制训练过程的损失值和准确率变化趋势的方法draw_train_process

一文教你用paddlepaddle实现猫狗分类

4)训练并保存模型

Executor接收传入的program,并根据feed map(输入映射表)和fetch_list(结果获取表) 向program中添加feed operators(数据输入算子)和fetch operators(结果获取算子)。feed map为该program提供输入数据。fetch_list提供program训练结束后用户预期的变量。

每一个Pass训练结束之后,再使用验证集进行验证,并打印出相应的损失值cost和准确率acc。

一文教你用paddlepaddle实现猫狗分类

得到如下:

一文教你用paddlepaddle实现猫狗分类

模型训练了9次

将要预测的图片上传至文件夹

一文教你用paddlepaddle实现猫狗分类

代码并不是很完整,具体代码已经上传至aistudio

http://futuretimeline.net/21stcentury/2020-2029.htm

最后的预测结果展示

一文教你用paddlepaddle实现猫狗分类

一文教你用paddlepaddle实现猫狗分类

一文教你用paddlepaddle实现猫狗分类

一文教你用paddlepaddle实现猫狗分类

一文教你用paddlepaddle实现猫狗分类



原文链接:https://zhuanlan.zhihu.com/p/144297448

以上是关于一文教你用paddlepaddle实现猫狗分类的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你用php实现无限极分类功能

一文教你用Postman做接口测试建议收藏

感知机:教你用Python一步步实现

接口测试很难吗?一文教你用Postman轻松搞定接口测试

使用卷积神经网络实现猫狗分类任务

使用卷积神经网络实现猫狗分类任务