MNIST为深度学习之入门级数据集,该数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST。训练集 (training set) 由来自 250 个不同人手写的数字构成,其中 50% 是高中学生,50% 来自人口普查局 (the Census Bureau) 的工作人员。测试集(test set) 也是同样比例的手写数字数据。MNIST 训练集为 60,000 个训练样本、测试集为 10,000 个,图像大小28*28。
本文暂时不对数据集进行训练,先创建一个简单的神经网络。
MLP
神经网络又称为MLP,它是最简单的神经网络。MLP有很多变种,如:误差反向传播(BP)、概率神经网络、卷积神经网络(CNN,适用于图像识别)、时间神经网络(LSTM,适用于语音识别)等。
MLP是分层来处理数据,第一层是包含要输入数据的输入层,最后一层是产生结果的输出层。当中的层称为隐藏层。
下面是一个MLP示例,包含大小为3的输入层、大小3的单个隐藏层和大小为2的输出层。
层与层之间都有一个线性 *** 作(称为全连接 *** 作,是个矩阵乘法运算),每个线性 *** 作后面还要有非线性的激活功能。
顺序块(SequentialBlock)
块组成单个 *** 作或神经网络,它可以表示单个 *** 作、或作为神经网络的一部分,甚至用来拼成整个神经网络。
代码实现
//图像大小28*28 long inputSize = 28*28; //10种分类结果 long outputSize = 10; SequentialBlock block = new SequentialBlock(); //添加输入层 block.add(Blocks.batchFlattenBlock(inputSize)); block.add(Linear.builder().setUnits(128).build()); //使用常用的 ReLU 激活函数 block.add(Activation::relu); block.add(Linear.builder().setUnits(64).build()); block.add(Activation::relu); block.add(Linear.builder().setUnits(outputSize).build()); System.out.println(block.toString());
如是所示,我们可以通过DJL的提供的API,快速搭建一个神经网络。
关注公众号,我们慢慢解锁Java开发者动手学习深度学习各种知识点。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)