Deeplearning4j
Community ForumND4J JavadocDL4J Javadoc
ZH 1.0.0-beta6
ZH 1.0.0-beta6
  • 核心概念
  • 开始
    • 快速入门
    • 速查表
    • 示例教程
    • 初学者
    • Eclipse贡献者
    • 从源码构建
    • 贡献
    • 基准测试准则
    • 关于
    • 发行说明
  • 配置
    • GPU/CPU设置
    • CPU 与 AVX
    • 内存管理
    • Maven
    • SBT/Gradle和其它构建工具
    • cuDNN
    • 快照
    • 内存工作间
  • ND4J
    • 快速入门
    • 概述
  • SAMEDIFF
    • 变量
    • 操作
    • 添加操作
  • 调优与训练
    • 故障排查
    • 可视化
    • 评估
    • 迁移学习
    • 早停
    • T-SNE数据可视化
  • 分布式深度学习
    • 介绍与入门
    • 在Spark上使用DL4J:操作指南
    • 技术说明
    • Spark数据管道指南
    • API参考
    • 参数服务器
  • Keras导入
    • 概述
    • 入门
    • 支持功能
      • 正则化器
      • 损失
      • 初始化器
      • 约束
      • 激活
      • 优化器
    • Functional模型
    • Sequential模型
  • ARBITER
    • 概述
    • 层空间
    • 参数空间
  • DATAVEC
    • 概述
    • 记录
    • 概要
    • 序列化
    • 转换
    • 分析
    • 读取器
    • 执行器
    • 过滤器
    • 运算
  • 语言处理
    • 概述
    • Word2Vec
    • Doc2Vec
    • SentenceIterator
    • Tokenization
    • Vocabulary Cache
  • 模型
    • 计算图
    • 多层网络
    • 循环神经网络
    • 层
    • 顶点
    • 迭代器
    • 监听器
    • 自定义层
    • 模型持久化
    • 动物园用法
    • 激活
    • 更新器
  • 移动端
    • Android概述
    • Android先决条件
    • Android分类器
    • Android图片分类器
  • FAQ
  • 新闻
  • 支持
  • 为什么要深度学习?
Powered by GitBook
On this page
  • 先决条件
  • 贡献的方式
  • 一般准则

Was this helpful?

Edit on Git
Export as PDF
  1. 开始

贡献

如何贡献Eclipse Deeplearning4j源代码。

Previous从源码构建Next基准测试准则

Last updated 5 years ago

Was this helpful?

先决条件

在做出贡献之前,确保你知道所有的Eclipse DL4J库的结构。早在2018年初,所有的库都入住在Deeplearning4j 。这些包括:

  • DeepLearning4J: 包含用于既在单个机器上,又在分布式上学习神经网络的所有代码。

  • ND4J: “Java的n维数组”。ND4J是建立DL4J的数学后端。所有的DL4J神经网络都是使用ND4J中的运算(矩阵乘法、向量运算等)来构建的。ND4J是DL4J实现在没有改变网络本身的情况化,即可以CPU又可以GPU训练网络的原因。 没有Nd4J,就不会有DL4J。

  • DataVec: DataVec处理管道侧的数据导入和转换。如果你 想将图像、视频、音频或简单CSV数据导入DL4J:你可能想要使用DataVec来实现。

  • Arbiter: Arbiter是一种用于神经网络超参数优化的软件包。超参数优化是指自动选择网络超参数(学习速率、层数等)以获得良好性能的过程。

我们也有一个额外的示例仓库在 .

贡献的方式

有多种方式为DeepLearning4J (和相关项目)做贡献,这取决于你的兴趣和经验。这有一些建议:

  • 添加一个新的神经网络类型 (例如: 不同类型的 RNNs, 本地连接网络等)

  • 添加一个新的训练特征

  • 修复缺陷

  • DL4J 示例: 那儿有我们没有示例的程序或神经网络架构吗?

  • 测试性能和识别瓶颈或可以改进的地方。

  • 改进网站的文档(或写教程等)

  • 改进java文档

这有很多不同的方法来寻找工作。这些包括:

  • 回顾我们的路线图

  • 与开发人员交谈,特别是我们的早期使用者栏目

  • 回顾最近的论文和博客文章关于训练特征、神经网络架构和应用。

  • 回顾网站和例子-有什么什么似乎缺少,不完整,或只是有用的(或酷)?

一般准则

在你开始做之前,有一些事情你需要知道。特别是我们使用的工具:

  • Maven: 一个依赖性管理和构建工具,用于我们所有的项目。有关Maven的详细信息,请参见此。

  • Git: 我们使用的版本控制系统

  • Project Lombok: Lombok项目是一种代码生成/注释工具,其目的是减少Java中所需的“多余”代码(即标准重复代码)的数量。要使用源代码,你需要为IDE安装Lombok插件。

  • VisualVM:分析工具,最有效的识别性能问题和瓶颈。

  • IntelliJ IDEA: 这是我们的IDE选择,当然,你可能会使用替代品,如Eclipse和NetBeans,你可能会发现使用与开发人员相同的IDE更容易避免出现问题。但这取决于你。

要记住的事情:

  • 代码应该符合Java 7 或以上

  • 如果你添加一个新的方法或类:添加java文档

  • 为一个明显的功能添加添加一个作者标签是受大家欢迎的。这也可以帮助特征贡献者,以防他们需要问原作者问题。如果多个作者出现在一个类中:提供谁做了什么的细节(“初始实现”,“添加一个特征”等)

  • 在你的代码中提供有益的注释。这有助于保持所有代码的可维护性。

  • 任何新的功能都应该包括单元测试(使用JUnit)来测试代码。这应该包括边缘情况。

  • 如果添加新的层类型,则必须按照这些单元测试包含数值梯度检查。这些是必要的,以确认计算的梯度是正确的。

  • 如果你正在添加重要的新功能,请考虑更新网站的相关部分,并提供一个示例。毕竟,没有人知道的功能(或者没有人知道如何使用)是没有用的。添加合适的文档是非常受到鼓励的,但不是严格要求的。

  • 如果你对某些事不确定,请在Gitter 上咨询我们。

查看缺陷跟踪:

monorepo
dl4j-examples
https://github.com/deeplearning4j/deeplearning4j/issues
https://github.com/deeplearning4j/dl4j-examples/issues