本页面提供了贡献 Keras 3(一个高速开源深度学习框架)的全面指南。这些指南解释了如何设置开发环境、遵循代码格式标准、运行测试以及按照项目约定提交代码贡献。有关测试基础设施和 CI/CD 流程的信息,请参阅测试和 CI/CD。
贡献 Keras 3 涉及多个步骤,从创建问题到合并拉取请求
在进行重大更改之前,请先提出问题讨论您建议的更改。这可确保在您投入实现时间之前,与项目目标保持一致。对于次要的错误修复或文档更改,您可以直接创建拉取请求。
有两种设置开发环境的方法
Keras 支持 GitHub Codespaces、Visual Studio Code 开发容器和 JetBrains 开发容器,它们提供预配置的开发环境。
要设置本地环境
安装前置条件
Clone 你的 fork 后的存储库
git clone https://github.com/YOUR_GITHUB_USERNAME/keras.git
cd keras
安装依赖项
pip install -r requirements.txt
配置要使用的后端(tensorflow、jax、torch、numpy 或 openvino)
来源:CONTRIBUTING.md78-108 requirements.txt1-24
Keras 使用 pre-commit 钩子来自动化 API 生成、代码格式化和 linting。首次设置仓库时,运行
pre-commit install
当您运行 git commit -m "<message>" 时,会自动执行三项操作
如果其中任何一项失败,提交将不会进行。请修复问题并重试。
来源:CONTRIBUTING.md116-129 .pre-commit-config.yaml1-31
要在所有文件上手动运行 pre-commit
pre-commit run --all-files
API 生成过程由 api_gen.py 脚本处理,该脚本通过 shell/api_gen.sh 脚本执行。此过程
keras/api 目录中生成公共 API 文件来源:shell/api_gen.sh1-14 .pre-commit-config.yaml3-14
Keras 遵循特定的 docstring 约定,在编写或编辑 docstring 时应手动检查
类 docstring 应包含
Examples 部分__init__() 参数的 Args 部分Call arguments 部分Returns 部分Raises 部分函数 docstring 应包含
Examples 部分Args 部分Returns 部分Raises 部分Keras 使用 pytest 进行测试。测试套件很全面,可以通过不同的方式运行
pytest keras/src/losses/losses_test.py
pytest keras/src/losses/losses_test.py::MeanSquaredErrorTest
pytest keras/src/losses/losses_test.py::MeanSquaredErrorTest::test_sample_weighted
pytest keras
跳过 Keras 应用程序测试(可显著减少测试时间)
SKIP_APPLICATIONS_TESTS=True pytest keras
使用不同后端运行测试
KERAS_BACKEND=jax SKIP_APPLICATIONS_TESTS=True pytest keras
Keras 使用 GitHub Actions 进行持续集成,运行所有受支持后端的测试
CI 工作流为每个受支持的后端运行测试套件,包括
对于拉取请求,所有测试都必须通过才能合并 PR。
来源:.github/workflows/actions.yml1-139 .github/workflows/nightly.yml1-123
Keras 管理不同后端和环境的依赖项
主要依赖项文件(requirements.txt)包含所有后端的依赖项
tensorflow-cpu 或 tensorflow)torch)jax[cpu])requirements-common.txt)对于 GPU 支持,有后端特定的依赖项文件
requirements-tensorflow-cuda.txt - 支持 GPU 的 TensorFlowrequirements-torch-cuda.txt - 支持 GPU 的 PyTorchrequirements-jax-cuda.txt - 支持 GPU 的 JAXrequirements-openvino.txt - OpenVINO 后端来源:requirements-tensorflow-cuda.txt1-13 requirements-torch-cuda.txt1-16 requirements-jax-cuda.txt1-15
贡献 Keras 需要了解项目结构、设置开发环境、遵循编码标准并确保测试通过。通过遵循这些指南,您可以有效地为 Keras 生态系统做出贡献,并帮助改进这个强大的深度学习框架。