# 贡献

## 先决条件

在做出贡献之前，确保你知道所有的Eclipse DL4J库的结构。早在2018年初，所有的库都入住在Deeplearning4j [monorepo](https://github.com/deeplearning4j/deeplearning4j)。这些包括：

* DeepLearning4J: 包含用于既在单个机器上，又在分布式上学习神经网络的所有代码。
* ND4J: “Java的n维数组”。ND4J是建立DL4J的数学后端。所有的DL4J神经网络都是使用ND4J中的运算（矩阵乘法、向量运算等）来构建的。ND4J是DL4J实现在没有改变网络本身的情况化，即可以CPU又可以GPU训练网络的原因。  没有Nd4J，就不会有DL4J。
* DataVec: DataVec处理管道侧的数据导入和转换。如果你  想将图像、视频、音频或简单CSV数据导入DL4J：你可能想要使用DataVec来实现。
* Arbiter: Arbiter是一种用于神经网络超参数优化的软件包。超参数优化是指自动选择网络超参数（学习速率、层数等）以获得良好性能的过程。

我们也有一个额外的示例仓库在 [dl4j-examples](https://github.com/deeplearning4j/dl4j-examples).

## 贡献的方式

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

* 添加一个新的神经网络类型 (例如: 不同类型的 RNNs, 本地连接网络等)
* 添加一个新的训练特征
* 修复缺陷
* DL4J 示例: 那儿有我们没有示例的程序或神经网络架构吗？
* 测试性能和识别瓶颈或可以改进的地方。
* 改进网站的文档（或写教程等）
* 改进java文档

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

* 查看缺陷跟踪: <https://github.com/deeplearning4j/deeplearning4j/issues> <https://github.com/deeplearning4j/dl4j-examples/issues>
* 回顾我们的路线图
* 与开发人员交谈，特别是我们的早期使用者栏目
* 回顾最近的论文和博客文章关于训练特征、神经网络架构和应用。
* 回顾网站和例子-有什么什么似乎缺少，不完整，或只是有用的（或酷）？

## 一般准则

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

* Maven: 一个依赖性管理和构建工具，用于我们所有的项目。有关Maven的详细信息，请参见此。
* Git: 我们使用的版本控制系统
* Project Lombok:  Lombok项目是一种代码生成/注释工具，其目的是减少Java中所需的“多余”代码（即标准重复代码）的数量。要使用源代码，你需要为IDE安装Lombok插件。
* VisualVM:分析工具，最有效的识别性能问题和瓶颈。
* IntelliJ IDEA: 这是我们的IDE选择，当然，你可能会使用替代品，如Eclipse和NetBeans，你可能会发现使用与开发人员相同的IDE更容易避免出现问题。但这取决于你。

要记住的事情:

* 代码应该符合Java 7 或以上&#x20;
* 如果你添加一个新的方法或类：添加java文档
* 为一个明显的功能添加添加一个作者标签是受大家欢迎的。这也可以帮助特征贡献者，以防他们需要问原作者问题。如果多个作者出现在一个类中：提供谁做了什么的细节（“初始实现”，“添加一个特征”等）
* 在你的代码中提供有益的注释。这有助于保持所有代码的可维护性。
* 任何新的功能都应该包括单元测试（使用JUnit）来测试代码。这应该包括边缘情况。
* 如果添加新的层类型，则必须按照这些单元测试包含数值梯度检查。这些是必要的，以确认计算的梯度是正确的。
* 如果你正在添加重要的新功能，请考虑更新网站的相关部分，并提供一个示例。毕竟，没有人知道的功能（或者没有人知道如何使用）是没有用的。添加合适的文档是非常受到鼓励的，但不是严格要求的。
* 如果你对某些事不确定，请在Gitter 上咨询我们。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://deeplearning4j.konduit.ai/zhong-wen-v1.0.0/kai-shi/gong-xian.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
