带你玩转手势识别 百度飞桨深度学习7日—Day02

本文介绍了使用PaddlePaddle 1.7.0动态图进行手势识别的深度学习过程,包括建立卷积神经网络模型、选择交叉熵损失函数、应用Momentum优化算法进行参数学习,并通过训练达到88%的正确率。读者可尝试增加网络层提高精度。
摘要由CSDN通过智能技术生成

深度学习三部曲

手势识别基于环境 paddlepaddle 1.7.0(因为我们要用到动态图)

建立模型

  1. 选择什么样的网络结构?
  2. 选择多少层数,每层选择多少神经元

其实神经网络也不一定要越深越好,越深的网络结构越复杂,以此来减少过拟合和无法传播到深处等问题,例如resnet和densenet等
我们可以选择简单的神经网络,例如lenet这样经典基础的网络

class LeNet(fluid.dygraph.Layer):
    def __init__(self, training= True):
        super(DenseNet, self).__init__()
        self.conv1 = Conv2D(num_channels=3, num_filters=32, filter_size=3, act='relu')
        self.pool1 = Pool2D(pool_size=2, pool_stride=2)

        self.conv2 = Conv2D(num_channels=32, num_filters=32, filter_size=3, act='relu')
        self.pool2 = Pool2D(pool_size=2, pool_stride=2)

        self.conv3 = Conv2D(num_channels=32, num_filters=64, filter_size=3, act='relu')
        self.pool3 = Pool2D(pool_size=2, pool_stride=2)

        self.fc1 = Linear(input_dim=6400, output_dim=4096, act='relu')
        self.drop_ratiol = 0.5 if training else 0.0
        self.fc2 = Linear(input_dim=4096, output_dim=10)

    def forward(self, inputs):
        conv1 = self.conv1(inputs)  # 32 32 98 98
        pool1 = self.pool1(conv1)  # 32 32 49 49

        conv2 = self.conv2(pool1)  # 32 32 47 47
        pool2 = self.pool2(conv2)  # 32 32 23 23

        conv3 = self.conv3(pool2)  # 32 64 21 21
        pool3 = self.pool3(conv3)  # 32 64 10 10

        rs_1 = fluid.layers.reshape(pool3, [pool3.shape[0], -1])
        fc1 = self.fc1(rs_1)
        drop1 = fluid.layers.dropout(fc1, self.drop_ratiol)
        y = self.fc2(drop1)

        return y

这里我们使用paddlepaddle实现卷积神经网络

损失函数

选择常用损失函数,平方误差,交叉熵等损失函数
这里我们选择paddlepaddle中实现的交叉熵
fluid.layers.softmax_with_cross_entropy

这里提供一下paddlepaddle动态图的官方文档
https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/dygraph_cn.html

参数学习

  1. 梯度下降
  2. 反向传播算法

优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法

我们选择 fluid.optimizer.Momentum 基于梯度的移动指数加权平均,他就像是拥有动量一样,没法说停就停【手动狗头】

我们使用paddlepaddle1.7.0的动态图进行训练

数据读取预处理部分

import os
import time
import random
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import paddle
import paddle.fluid as fluid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值