用MATLAB搭建DNN

本文详细讲解如何使用MATLAB构建一个深度神经网络(DNN),并以MNIST数据集为例进行训练和验证。代码简洁,仅依赖MATLAB的矩阵操作和cell,包含早停策略防止过拟合,训练过程可视化,且支持恢复训练。
摘要由CSDN通过智能技术生成

用MATLAB搭建DNN

本文简要介绍了如何用MATLAB搭建一个可自定义层数的深度神经网络,并以MNIST为例进行网络训练、验证、误差可视化展示。不仅限制在该手写数字库,所搭建的DNN也可以用于其他数据。读者需要对MATLAB的矩阵操作、反向传播算法有所了解。

1 工具

MATLAB:version>=7.0.0.19920 (R14)。本人所使用的MATLAB版本较低,对于任何不低于该版本的MATLAB,代码都是可以运行的。
MNIST:手写数字库。也可以使用其他数据。

2 数据准备

你需要了解MNIST的存储格式,并将MNIST原始格式转换为mat格式。鉴于网上已有很多博客介绍了如何将MNIST转换为mat格式,本节直接贴上MATLAB代码loadMNIST。该函数参考了互联网上现有代码,包括多个来源,未指明具体作者。如有冒犯,请您见谅。

function [Train, Label] = loadMNIST(train_file, label_file, force)
% MNIST数据读取与保存.
% train_file = 'data/train-images.idx3-ubyte';
% label_file = 'data/train-labels.idx1-ubyte';
% 返回时将矩阵转置,即矩阵的每一列是一个结果.
% 如果第3个参数输入force为true,则强制从原始文件读取数据.
% 该函数参考了互联网上现有代码,包括多个来源,未指明具体作者.

if nargin < 3
    force = false;
end

% MATLAB7.0
VERSION = datenum(version('-date'));
r2013a = datenum('Jan 01, 2013');

if ~exist('train-images.mat', 'file') || force
    FID = fopen(train_file, 'rb');
    if FID == -1
        Train = [];
        Label = [];
        fprintf('File [%s] does not exist.\n', train_file);
        return
    end
    magic = fread(FID, 1, 'int32', 0, 'ieee-be');
    if VERSION > r2013a
        assert(magic == 2051, ['Bad magic number in ', train_file, '']);
    end

    numImages = fread(FID, 1, 'int32', 0, 'ieee-be');
    numRows = frea
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值