On Github Issues and Pull Requests

发现了错误? 有新功能建议吗? 是否要对代码库做出更改? 确保先阅读此内容.

Bug reporting

您的代码无效,并且您确定问题出在Keras吗? 请按照以下步骤报告错误.

  1. 您的错误可能已经修复. 确保更新到当前的Keras master分支以及最新的Theano / TensorFlow / CNTK master分支. 要轻松更新Theano: pip install git+git://github.com/Theano/Theano.git --upgrade

  2. 搜索类似的问题. 确保在问题搜索中删除is:open ,以查找已解决的故障单. 可能有人已经遇到此错误. 还记得查看Keras的常见问题解答 . 还有问题吗? 在Github上打开一个问题,让我们知道.

  3. 确保您向我们提供了有关配置的有用信息:您使用的是什么操作系统? 您正在使用什么Keras后端? 您是否在GPU上运行? 如果是这样,您的cuDNN的Cuda版本是什么? 您的GPU是什么?

  4. 向我们提供脚本来重现该问题. 该脚本应按原样运行,并且不需要下载外部数据(如果需要对某些测试数据运行模型,请使用随机生成的数据). 我们建议您使用Github Gists发布您的代码. 任何无法复制的问题都有可能被关闭.

  5. 如果可能,请自己动手修复错误-如果可以的话!

您提供的信息越多,我们就越容易验证是否存在错误,并且我们能够更快地采取措施. 如果您希望快速解决问题,那么执行上述步骤至关重要.


Requesting a Feature

您还可以使用Tensorflow Github问题来请求您希望在Keras中看到的功能,或者对Keras API进行更改.

  1. 提供所需功能的清晰明了解释,以及为什么添加功能很重要. 请记住,我们需要对大多数用户有用的功能,而不仅仅是一小部分. 如果您只针对少数用户,请考虑为Keras编写附加库. 对于Keras而言,避免膨胀API和代码库至关重要.

  2. 提供代码段,这些代码段说明了您所考虑的API并说明了功能的用例. 当然,此时您无需编写任何实际代码!

  3. 在讨论了该功能之后,您可以选择尝试对tf.keras进行"拉取请求". 如果您完全有能力,请开始编写一些代码. 我们总是要做的工作多于时间. 如果您可以编写一些代码,那么将加快整个过程.


Requests for Contributions

这是我们列出当前未解决的问题和要添加的功能的董事会 . 如果您想开始为Keras做贡献,这是一个起点.


Pull Requests

我应该在哪里提交拉取请求?

Note:

We are no longer adding new features to multi-backend Keras (we only fix bugs), as we are refocusing development efforts on tf.keras. If you are still interested in submitting a feature pull request, please direct it to tf.keras in the TensorFlow repository instead.

  1. Keras的改进和错误修正进入了Keras master分支 .
  2. 诸如图层和数据集之类的实验性新功能 归于keras-contrib . 除非它是"捐款要求"中列出的新功能,否则它属于核心Keras. 如果您认为您的功能属于核心Keras,则可以提交设计文档来解释您的功能并为此辩护(请参阅下面的说明).

请注意,主要与代码样式有关的PR(而不是修正错误,改进文档或添加新功能)可能会被拒绝.

这是提交改进的快速指南:

  1. 如果您的PR引入了功能上的更改,请确保先编写一个设计文档并将其发送到Keras邮件列表,以讨论是否应该进行更改以及如何进行更改. 这将使您避免公关失败! 当然,如果您的PR是一个简单的错误修复程序,则无需这样做. 编写和提交设计文档的过程如下:

    • 从此Google Doc模板开始 ,然后将其复制到新的Google doc.
    • 填写内容. 请注意,您将需要插入代码示例. 要插入代码,请使用诸如CodePretty之类的Google Doc扩展名(有多个此类扩展名可用).
    • 将共享设置设置为"允许所有链接的人发表评论"
    • 将文档发送到keras-users@googlegroups.com ,其主题以[API DESIGN REVIEW] (全部大写)开头,以便我们注意.
    • 等待评论,并在评论出现时予以回答. 根据需要编辑提案.
    • 该提案最终将被批准或拒绝. 批准后,您可以发出"拉取请求"或要求其他人编写"拉取请求".
  2. 编写代码(或让其他人编写). 这是困难的部分!

  3. 确保您介绍的任何新函数或类均具有正确的文档字符串. 确保您触摸的任何代码仍然具有最新的文档字符串和文档. 文档字符串样式应得到尊重. 特别是,它们应该在MarkDown中格式化,并且应该有ArgumentsReturnsRaises (如果适用)的部分. 请查看代码库中的其他文档字符串以获取示例.

  4. 编写测试. 您的代码应具有完整的单元测试范围. 如果您想看到您的PR迅速合并,这至关重要.

  5. 在本地运行我们的测试套件. 这很容易:从py.test tests/文件夹中,只需运行: py.test tests/ .

    • 您还将需要安装测试要求: pip install -e .[tests] .
  6. 确保所有测试均通过:

    • 在Python 2.7和Python 3.6上使用Theano后端. 确保您拥有Theano的开发版本.
    • 在python 2.7和python 3.6上使用TensorFlow后端. 确保您具有TensorFlow的开发版本.
    • 在Python 2.7和Python 3.6上使用CNTK后端. 确保您具有CNTK的开发版本.
  7. 我们使用PEP8语法约定,但是在行长方面并不是教条. 但是,请确保您的线条尺寸合理. 为了使您的生活更轻松,我们建议您运行PEP8短绒棉布:

    • 安装PEP8软件包: pip install pep8 pytest-pep8 autopep8
    • 运行独立的PEP8检查: py.test --pep8 -m pep8
    • 您可以通过运行以下autopep8 -i --select <errors> <FILENAME>自动修复一些PEP8错误: autopep8 -i --select <errors> <FILENAME> ,例如: autopep8 -i --select E128 tests/keras/backend/test_backends.py
  8. 提交时,请使用适当的描述性提交消息.

  9. 更新文档. 如果引入了新功能,请确保包含说明新功能用法的代码片段.

  10. 提交您的公关. 如果您的更改已在先前的讨论中得到批准,并且您已经完成(并通过)单元测试以及适当的文档字符串/文档,则PR可能会迅速合并.


Adding new examples

即使您不贡献Keras源代码,但如果您拥有一个简洁而强大的Keras应用程序,也请考虑将其添加到我们的示例集合中. 现有示例显示了惯用的Keras代码:请确保保持自己的脚本本着同样的精神.