Java开发者动手学深度学习之Hello World

Java开发者动手学深度学习之Hello World,第1张

Java开发者动手学深度学习之Hello World

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开发者动手学习深度学习各种知识点。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5562870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存