栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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开发者动手学习深度学习各种知识点。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号