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

本文以MNIST数据集为例,介绍Java环境下深度学习的基础知识,特别是多层感知器(MLP)的概念。通过DJL库,演示如何创建一个简单的神经网络模型,包括输入层、隐藏层和输出层,以及线性操作和激活函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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开发者动手学习深度学习各种知识点。
动手学深度学习公众号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值