手写数字识别之------经典的全连接神经网络与卷积神经网络

经典的全连接神经网络包含四层网络:两个隐藏层、输入层和输出层,将手写数字识别任务通过全连接神经网络表示,如图所示:

                                                                图 :手写数字识别任务的全连接神经网络结构 

  • 输入层:将数据输入给神经网络。在该任务中,输入层的尺度为28*28的像素值。
  • 隐藏层:增加网络深度和复杂度,隐藏层的节点数是可以调整的,节点数越多,神经网络表示能力越强,参数量也会增加。在该任务中中间的两个隐藏层是10*10的结构,通常隐藏层会比输入层的尺寸小,以便对关键信息做抽象,激活函数使用常见的sigmoid函数。隐藏层引入非线性激活函数sigmoid是为了增加神经网络的非线性能力。
  • 输出层:输出网络计算结果,输出层的节点是固定的。如果是回归问题,节点数量为需要回归的数字数量。如果为分类问题,则是分类标签的数量。在该任务中,模型的输出是回归一个数字,输出层的尺寸为1.

#数据处理:

#数据处理部分之前的代码,保持不变
import os
import random
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph.nn import Conv2D, Pool2D, Linear
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

import gzip
import json

# 定义数据集读取器
def load_data(mode='train'):

    # 数据文件
    datafile = './work/mnist.json.gz'
    print('loading mnist dataset from {} ......'.format(datafile))
    data = json.load(gzip.open(datafile))
    train_set, val_set, eval_set = data

    # 数据集相关参数,图片高度IMG_ROWS, 图片宽度IMG_COLS
    IMG_ROWS = 28
    IMG_COLS = 28

    if mode == 'train':
        imgs = train_set[0]
        labels = train_set[1]
    elif mode == 'valid':
        imgs = val_set[0]
        labels = val_set[1]
    elif mode == 'eval':
        imgs = eval_set[0]
        labels = eval_set[1]

    imgs_length = len(imgs)

    assert len(imgs) == len(labels), \
          "length of train_imgs({}) should be the same as train_labels({})".format(
                  len(imgs), len(labels))

    index_list = list(range(imgs_length))

    # 读入数据时用到的batchsize
    BATCHSIZE = 100

    # 定义数据生成器
    def data_generator():
        if mode == 'train':
            random.shuffle(index_list)
        imgs_list = []
        labels_list = []
        for i in index_list:
            img = np.reshape(imgs[i], [1, IMG_ROWS, IMG_COLS]).astype('float32')
            label = np.reshape(labels[i], [1]).astype('float32')
            imgs_list.append(img) 
            labels_list.append(label)
        
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值