CNN飞机识别-基于paddlepaddle高级API(附详细代码讲解)

本文介绍了基于PaddlePaddle的高级API实现飞机识别的完整流程,包括数据加载、预处理、构建CNN网络、训练、优化器设置、模型可视化及测试。通过实例解析关键代码,帮助理解高级API的使用。
摘要由CSDN通过智能技术生成

前言

在使用paddlepaddle实战完手写数字集识别后,开始了新的一轮实战-飞机识别。

与之前不同的是,这次的项目使用更加高级的框架api接口,代码集成度更高,但是同样的也出现了一个问题,课程中并没有对这些api进行讲解。

我花了两个多小时,通过查看源代码,终于搞清楚了这些api。下面,我们分享给大家!

CNN飞机识别网络结构

在这里插入图片描述

数据集以及项目说明

本项目共有7897张图像,其中训练集5897张,测试集2000张图像,每幅图像的大小是32*32,形状是(32,32,3)

本次项目是百度官方视频七天入门深度学习中的 day2.
课程链接:Day 2 实战——飞机识别

代码解析

1. 加载数据

testdata_orgin = np.load('data/plane/testdata.npy')
testlabel_orgin=np.load('data/plane/testlabel.npy')
traindata_orgin = np.load('data/plane/traindata.npy')
trainlabel_orgin=np.load('data/plane/trainlabel.npy')

返回的数组形状:
testdata_orgin.shape==(2000, 32, 32, 3)
testlabel_orgin==(2000, 1)
traindata_orgin==(5897, 32, 32, 3)
trainlabel_orgin==(5897, 1)
2. 转换数据格式

testdata = np.array(testdata_orgin).reshape(2000,3,32,32).astype(np.float32)
traindata = np.array(traindata_orgin).reshape(5897,3,32,32).astype(np.float32)
testlabel = np.array(testlabel_orgin).reshape(2000,1).astype(np.float32)
trainlabel_orgin = np.array(trainlabel_orgin).reshape(5897,1).astype(np.float32)

由于在模型中,要求形状为(通道,宽,高),所以,这里需要对原数据进行格式上的转换。

3. 数据归一化

testdata = 2*testdata/255.0-1.0
traindata = 2*traindata/255.0-1.0

图片归一化,使图片中的每一个数在区间[-1,1]之间。这是在我们进行图象分类任务必须进行的操作,有利于提高我们程序执行速度和模型精准度。

4. 构造数据生成器

def dataset(data,label,buf_size):#这里bufsize是产生数据的个数
    def reader():
        for i in range(buf_size):
      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值