一文教你用paddlepaddle实现猫狗分类
Posted 百度校园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文教你用paddlepaddle实现猫狗分类相关的知识,希望对你有一定的参考价值。
猫狗识别:
相关代码已经上传到aistudio
http://futuretimeline.net/21stcentury/2020-2029.htm
fork一下就可以运行了
这里环境如下:
1
数据集的准备
2
导入必要的包
3
网络配置
网络搭建
在CNN模型中,卷积神经网络能够更好的利用图像的结构信息。下面定义了一个较简单的卷积神经网络。显示了其结构:输入的二维图像,先经过两次卷积层到池化层,再经过全连接层,最后使用softmax分类作为输出层。
池化是非线性下采样的一种形式,主要作用是通过减少网络的参数来减小计算量,并且能够在一定程度上控制过拟合。通常在卷积层的后面会加上一个池化层。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
4)训练并保存模型
Executor接收传入的program,并根据feed map(输入映射表)和fetch_list(结果获取表) 向program中添加feed operators(数据输入算子)和fetch operators(结果获取算子)。feed map为该program提供输入数据。fetch_list提供program训练结束后用户预期的变量。
每一个Pass训练结束之后,再使用验证集进行验证,并打印出相应的损失值cost和准确率acc。
得到如下:
模型训练了9次
将要预测的图片上传至文件夹
代码并不是很完整,具体代码已经上传至aistudio
http://futuretimeline.net/21stcentury/2020-2029.htm
最后的预测结果展示
原文链接:https://zhuanlan.zhihu.com/p/144297448
以上是关于一文教你用paddlepaddle实现猫狗分类的主要内容,如果未能解决你的问题,请参考以下文章