eclipse创建神经网络_使用Eclipse Deeplearning4j构建简单的神经网络

eclipse创建神经网络

神经网络导论

深度学习包含深度神经网络和深度强化学习,它们是机器学习的子集,而机器学习本身就是人工智能的子集。 广义地说,深度神经网络执行机器感知,该机器感知从原始数据中提取重要特征,并对每个观察结果进行某种预测。 示例包括识别图像中表示的对象,将模拟语音映射到书面转录,按情感对文本进行分类以及对时间序列数据进行预测。

尽管神经网络是上世纪发明的,但直到最近才引起人们更多的兴奋。 现在已经有了利用神经网络概念的计算能力,它们已被用于在计算机视觉,自然语言处理和强化学习等领域设定新的最新技术成果。 DeepMind的科学家实现了深度学习的一项著名成就,该科学家创建了一个名为AlphaGo的计算机程序,该程序在2016年和2017年分别击败了前世界冠军Go选手和现任冠军。 许多专家预测,这一成就将再过十年。

神经网络有许多种,但是它们如何工作的基本概念很简单。 它们大致基于人脑,由一层或多层“神经元”组成,它们只是传递来自上一层信号的数学运算。 在每一层,对来自上一层神经元的输入进行计算,然后将输出中继到下一层。 网络最后一层的输出将根据任务表示对输入数据的一些预测。 建立成功的神经网络所面临的挑战是找到适用于每一层的正确计算。

神经网络可以处理高维数值和分类数据,并执行诸如回归,分类,聚类和特征提取之类的任务。 通过首先根据数据和任务配置其体系结构,然后调整其超参数以优化神经网络的性能来创建神经网络。 一旦对神经网络进行了充分的训练和调整,就可以将其用于处理新的数据集并返回合理可靠的预测。

Eclipse DeepLearning4j适用的地方

Eclipse Deeplearning4j (DL4J)是一个基于JVM的开源工具包,用于构建,训练和部署神经网络。 它旨在为Java和Scala社区提供服务,并且用户友好,稳定并且与Spark,CUDA和cuDNN等技术很好地集成在一起。 Deeplearning4j还与Keras和TensorFlow等Python工具集成,以将其模型部署到JVM上的生产环境。 它还附带了一组开源库,Skymind将这些开源库捆绑在称为Skymind Intelligence Layer(SKIL)的企业发行版中。 这些库是:

  • Deeplearning4j :神经网络DSL(有助于构建与数据管道和Spark集成的神经网络)
  • ND4J :用于Java的N维数组,一个张量库:“具有C代码和更广泛范围的Eclipse January”。 目标是为各种硬件平台提供张量操作和优化的支持
  • DataVec :ETL库,可矢量化和“张紧”数据。 提取转换负载,并支持通过一系列数据转换连接到各种数据源并输出n维数组
  • libnd4j :用于张量操作的纯C ++库,它与开源库JavaCPP紧密协作(JavaCPP是由Skymind工程师创建并维护的,但它不属于该项目)。
  • RL4J :与Deeplearning4j集成的JVM上的强化学习。 包括在AlphaGo和A3C中使用的Deep-Q学习。
  • Jumpy :与Numpy集成的ND4J库的Python接口
  • 仲裁器 :通过超参数搜索自动调整神经网络。 使用网格搜索,随机搜索和贝叶斯方法进行超参数优化。
  • ScalNet :用于Deeplearning4j的Scala API,在外观上类似于Torch或Keras。
  • ND4S :基于ND4J的Scala N维数组。

这是使用DeepLearning4j的一些原因。

您是该领域的数据科学家,或者是Java,Scala或Python项目的学生,并且需要与JVM堆栈(Hadoop,Spark,Kafka,ElasticSearch,Cassandra)集成。 例如,您希望通过多GPU在Spark上扩展神经网络训练。 您需要探索数据,进行和监控将各种算法应用于数据的实验,并在集群上进行训练以快速获取该数据的准确模型。

您是企业环境中的数据工程师或软件开发人员,需要稳定,可重用的数据管道以及对数据的可伸缩且准确的预测。 这里的用例是使用简单易懂的API以编程方式自动处理和分析数据,以确定指定结果。

示例:建立前馈网络

前馈网络是神经网络的最简单形式,也是有史以来最早创建的网络之一。 在这里,我们将基于使用月亮数据的示例概述前馈神经网络的示例。 数据位于此处 。

原始数据由具有两个数字功能和两个标签的CSV文件组成。 训练集和测试集位于不同的CSV文件中,训练集中有2000个观察值,测试集中有1000个观察值。 任务的目的是在给定两个输入特征的情况下预测标签。 因此,我们对分类感兴趣。

我们首先初始化构建前馈神经网络所需的变量。 我们设置神经网络的超参数,例如学习率和批处理大小,以及与它的体系结构相关的变量,例如隐藏节点的数量。

int seed = 123;
double learningRate = 0.005;
int batchSize = 50;
int nEpochs = 100;int numInputs = 2;
int numOutputs = 2;
int numHiddenNodes = 20;final String filenameTrain  = new ClassPathResource("/classification/moon_data_train.csv").getFile().getPath();
final String filenameTest  = new ClassPathResource("/classification/moon_data_eval.csv").getFile().getPath();

因为数据位于两个CSV文件中,所以我们总共初始化了两个CSVRecordReaders和两个DataSetIteratorsRecordReaders会将数据解析为记录格式,而DataSetIterator会将数据以其可以读取的格式馈入神经网络。

RecordReader rr = new CSVRecordReader();
rr.initialize(new FileSplit(new File(filenameTrain)));
DataSetIterator trainIter = new RecordReaderDataSetIterator(rr,batchSize,0,2);RecordReader rrTest = new CSVRecordReader();
rrTest.initialize(new FileSplit(new File(filenameTest)));
DataSetIterator testIter = new RecordReaderDataSetIterator(rrTest,batchSize,0,2);

建立前馈网络

现在已经准备好数据,我们可以使用MultiLayerConfiguration设置神经网络的配置。

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().seed(seed).iterations(1).optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).learningRate(learningRate).updater(Updater.NESTEROVS).list().layer(0, new DenseLayer.Builder().nIn(numInputs).nOut(numHiddenNodes).weightInit(WeightInit.XAVIER).activation(Activation.RELU).build()).layer(1, new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD).weightInit(WeightInit.XAVIER).activation(Activation.SOFTMAX).nIn(numHiddenNodes).nOut(numOutputs).build()).pretrain(false).backprop(true).build();

使用softmax激活函数和负对数似然损失函数,存在一个具有20个节点的隐藏层和一个具有两个节点的输出层。 我们还设置了如何初始化神经网络的权重以及神经网络将如何优化权重。 为了使结果可重复,我们还设置了种子。 也就是说,我们使用随机初始化的权重,但是如果需要稍后从同一点开始训练以确认结果,则可以保存它们的随机初始化。

训练和评估前馈神经网络

要实际创建模型,请使用先前设置的配置来初始化MultiLayerNetwork 。 然后,我们可以使用训练循环拟合数据; 或者,如果使用MultipleEpochsIterator ,则只需要调用一次fit函数即可训练具有设定时期数的数据。

MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();
model.setListeners(new ScoreIterationListener(100)); for ( int n = 0; n < nEpochs; n++) {model.fit( trainIter );
}

数据完成训练后,我们将使用测试集评估模型。 需要注意的是testIter创建DataSets根据50的预先设定的批量大小Evaluation类将处理计算使用正确的标签和预测的准确性。 最后,我们可以打印出结果。

Evaluation eval = new Evaluation(numOutputs);
while(testIter.hasNext()){DataSet t = testIter.next();INDArray features = t.getFeatureMatrix();INDArray labels = t.getLabels();INDArray predicted = model.output(features,false);eval.eval(labels, predicted);
}System.out.println(eval.stats());

该示例涵盖了使用MultiLayerNetwork创建简单的前馈神经网络的基础。

  • 要了解更多信息,请参阅我们的O'Reilly书: 深度学习:从业者的方法
  • 并查看Deeplearning4j编程指南

翻译自: https://www.javacodegeeks.com/2017/11/building-simple-neural-network-eclipse-deeplearning4j.html

eclipse创建神经网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 rar -- 压缩/解压文件

文章目录一、命令介绍二、子命令三、常用选项四、命令示例&#xff08;一&#xff09;压缩指定文件或者更新压缩包内指定的文件&#xff08;二&#xff09;压缩指定目录下的内容&#xff08;不含目录本身&#xff09;&#xff08;三&#xff09;创建自解压文件&#xff08;四&a…

python 马赛克还原_卷积神经网络教你如何还原被马赛克的文本图像

对人类来说&#xff0c;将带有文字的图像锐化是很容易的。以图1为例。图1&#xff1a;被锐化的图像把图1恢复为图2也不是件很困难的事。图2&#xff1a;原图然而&#xff0c;我们是懒惰的&#xff0c;并且不想这样做&#xff0c;所以我们尝试用神经网络来自动实现图片的不模糊化…

angluar cdk_零分钟即可在容器开发套件(CDK)上实现云运营

angluar cdk尽管这很有趣&#xff0c;但是它实际上并不可行&#xff0c;并且很快就遇到了使用限制。前一段时间&#xff0c; 我逐步完成了在容器中安装称为CloudForms的云管理解决方案。 真正的解决方案是将这个示例放入Red Hat Demo Central集合中&#xff0c;并将其放在基于…

Linux 系统下载和安装 rarlinux

文章目录红帽系的 Linux下载已经编译好的软件包下载程序的源代码软件包Debian Linux安装过程常遇到的问题rarlinux 下载地址&#xff1a;http://www.rarlab.com/download.html rarlinux 相关命令使用说明&#xff0c;猛戳《Linux 系统下命令 unrar 的中文版使用说明》 红帽系的…

腾讯面试编程题python_腾讯面试官出的 2 道经典数据分析面试题

没想到这篇文章这么受欢迎&#xff0c;那就再分享一篇&#xff1a;苏克1900&#xff1a;腾讯高级数据分析师&#xff1a;十年分析之路的力荐书籍​zhuanlan.zhihu.com以下原文章&#xff1a;近期暑期实习和提前批招聘已经开始了&#xff0c;不论你是校招还是想社招&#xff0c;…

Linux 系统下命令 unrar 的英文版使用说明

查看中文版&#xff0c;猛戳《Linux 系统下命令 unrar 的中文版使用说明》 UNRAR 5.40 freeware Copyright (c) 1993-2016 Alexander RoshalUsage: unrar <command> -<switch 1> -<switch N> <archive> <files...> <listfiles...&g…

网络研讨室_免费网络研讨会:Java应用程序中的吞咽异常

网络研讨室1月30日参加我们的网络研讨会&#xff0c;以发现Java应用程序中的“隐藏”异常。 如果一棵树落在森林中&#xff0c;但是没有写到原木上&#xff0c;它会发出声音吗&#xff1f; 答案是肯定的。 这些类型的错误可能会对用户体验造成严重影响&#xff0c;而没有根本原…

java8默认内存收集器_使用正确的垃圾收集器将Java内存使用量降至最低

java8默认内存收集器大小对于软件至关重要。 很明显&#xff0c;与大的整体方法相比&#xff0c;在微服务体系结构中使用小片段具有更多优势。 最新的Java版本的Jigsaw有助于分解旧应用程序或从头开始构建新的云原生应用程序。 这种方法减少了磁盘空间&#xff0c;构建时间和启…

oc 协议 回调 静态成员_每日一问:c++类的成员函数,能作为线程的参数吗?

问&#xff1a;类的成员函数可以传入线程参数吗&#xff1f;回答&#xff1a;如果c语言的全局函数&#xff0c;可以。如果是类的静态成员函数&#xff0c;可以如果是类的普通成员函数&#xff0c;不可以为什么&#xff1f;《深入探索C对象模型》中提到成员函数时&#xff0c;当…

Linux 系统下命令 unrar 的中文版使用说明

查看英文版&#xff0c;猛戳《Linux 系统下命令 unrar 的英文版使用说明》 $ rar --help用法: rar <命令> -<选项 1> -<选项 N> <压缩档案> <文件...> <文件列表...> <解压缩路径\><命令> a 添加文件到压缩档案 …

如何使用 MySQL 安装后自带的帮助文档

文章目录一、查询帮助文档二、MySQL 相关资源网址一、查询帮助文档 输入命令 ? contents 或者 help contents 来显示所有可供查询的分类&#xff1a; mysql> ? contents; You asked for help about help category: "Contents" For more information, type help…

java设置并行度_控制Java并行流的并行度

java设置并行度在掌握了这些新功能之后&#xff0c;随着Java 9的最新发布&#xff0c;我们有了许多新功能可以用来改进我们的解决方案。 Java 9的发布也是修改我们是否掌握Java 8功能的好时机。 在这篇文章中&#xff0c;我想解决关于Java并行流的最常见的误解。 人们通常说您…

flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...

简介&#xff1a; 友信金服公司推行全域的数据体系战略&#xff0c;通过打通和整合集团各个业务线数据&#xff0c;利用大数据、人工智能等技术构建统一的数据资产&#xff0c;如 ID-Mapping、用户标签等。友信金服用户画像项目正是以此为背景成立&#xff0c;旨在实现“数据驱…

MySQL 如何将数据表中字符串类型的字段值中的部分字符串替换掉(字符串替换/字符串拼接/生成 SQL 脚本语句)

使用拼接函数(concat)生成更新某字段值的 SQL 脚本语句 一、生成更新字段 logo 的 SQL 脚本语句如下: select concat( update tf_company set logo=, replace(logo,http://www.dpqyw.com:80,http://www.dpqyw.com), ,where company_id=,company_id,

apache pulsar_Apache Pulsar:分布式Pub-Sub消息系统

apache pulsarApache Pulsar是一个开源的分布式pub-sub消息传递系统&#xff0c;最初是由Yahoo创建的&#xff0c;并且是Apache Software Foundation的一部分 。 Pulsar是用于服务器到服务器消息传递的多租户高性能解决方案。 脉冲星的主要功能包括[4]&#xff1a; 对Pulsar…

python deque索引超出范围_Python基础语法

学习Python的四个要素有数据&#xff0c;函数&#xff0c;条件循环和模块一、数据数据是Python编程过程中的原材料&#xff0c;通过导入数据&#xff0c;对数据进行操作&#xff0c;实现预先设想的功能。数据共有5种类型&#xff0c;分别是字符串、数字、容器、布尔值和空值。字…

Path环境变量的理解以及设置MinGW环境变量

配置path环境变量 在使用MinGW的时候&#xff0c;不小心把path变量的东西全部删掉了&#xff0c;结果只能自己重新设置path变量&#xff0c;首先要知道如何设置path变量。 Path路径&#xff1a;用来指定可执行文件的搜索路径&#xff0c;也就是后缀名为.exe文件&#xff0c;方…

写java代码时的注意事项_从方法返回Java 8的可选项时的注意事项

写java代码时的注意事项Java 8引入的Optional类一直是该语言版本引入的最具争议的功能之一。 尽管我喜欢这个新的Java类的东西比不喜欢的东西多&#xff0c;但在Java方法中将其用作return类型时&#xff0c;需要考虑一些事情。 我将在本文中讨论其中的一些问题&#xff0c;但不…

Linux 命令之 iconv -- 转换文件的字符编码

文章目录一、命令介绍二、命令语法三、常用选项四、命令示例&#xff08;一&#xff09;对指定文件进行转码&#xff0c;且输出到指定的文件中一、命令介绍 iconv 命令是 Linux 系统自带的用于转换文件编码的命令行工具&#xff0c;iconv 命令用来转换文件的编码方式&#xff…

python asyncio future_Python asyncio.isfuture方法代码示例

本文整理汇总了Python中asyncio.isfuture方法的典型用法代码示例。如果您正苦于以下问题&#xff1a;Python asyncio.isfuture方法的具体用法&#xff1f;Python asyncio.isfuture怎么用&#xff1f;Python asyncio.isfuture使用的例子&#xff1f;那么恭喜您, 这里精选的方法代…