菜单

贡献指南

相关源文件

本页面提供了贡献 Keras 3(一个高速开源深度学习框架)的全面指南。这些指南解释了如何设置开发环境、遵循代码格式标准、运行测试以及按照项目约定提交代码贡献。有关测试基础设施和 CI/CD 流程的信息,请参阅测试和 CI/CD

贡献流程概述

贡献 Keras 3 涉及多个步骤,从创建问题到合并拉取请求

来源:CONTRIBUTING.md10-61

创建问题

在进行重大更改之前,请先提出问题讨论您建议的更改。这可确保在您投入实现时间之前,与项目目标保持一致。对于次要的错误修复或文档更改,您可以直接创建拉取请求。

来源:CONTRIBUTING.md14-21

进行代码更改

  1. 将存储库fork到你的GitHub账户
  2. 设置开发环境
  3. 进行您的更改
  4. 运行测试以确保您的更改按预期工作

来源:CONTRIBUTING.md23-27

拉取请求流程

  1. 从您的 fork 向主仓库的 master 分支提交拉取请求
  2. 在 CLA 机器人提示时签署贡献者许可协议 (CLA)
  3. 解决任何失败的测试或审查反馈
  4. 一旦获得批准,团队成员将添加“ready to pull”标签并处理合并

来源:CONTRIBUTING.md29-63

设置开发环境

有两种设置开发环境的方法

选项 1:使用开发容器

Keras 支持 GitHub Codespaces、Visual Studio Code 开发容器和 JetBrains 开发容器,它们提供预配置的开发环境。

来源:CONTRIBUTING.md72-76

选项 2:本地环境设置

要设置本地环境

  1. 安装前置条件

    • Git 用于版本控制
    • Python 3.9 或更高版本
  2. Clone 你的 fork 后的存储库

    git clone https://github.com/YOUR_GITHUB_USERNAME/keras.git
    cd keras
    
  3. 安装依赖项

    pip install -r requirements.txt
    
  4. 配置要使用的后端(tensorflow、jax、torch、numpy 或 openvino)

来源:CONTRIBUTING.md78-108 requirements.txt1-24

代码风格和 API 生成

Keras 使用 pre-commit 钩子来自动化 API 生成、代码格式化和 linting。首次设置仓库时,运行

pre-commit install

来源:CONTRIBUTING.md110-115

预提交钩子

当您运行 git commit -m "<message>" 时,会自动执行三项操作

  1. 公共 API 生成 - 更新公共 API 文件
  2. 代码格式化 - 使用 Ruff 格式化代码
  3. 代码 Linting - 检查代码质量问题

如果其中任何一项失败,提交将不会进行。请修复问题并重试。

来源:CONTRIBUTING.md116-129 .pre-commit-config.yaml1-31

手动执行 Pre-commit

要在所有文件上手动运行 pre-commit

pre-commit run --all-files

来源:CONTRIBUTING.md131-135

API生成

API 生成过程由 api_gen.py 脚本处理,该脚本通过 shell/api_gen.sh 脚本执行。此过程

  1. keras/api 目录中生成公共 API 文件
  2. 格式化生成的代码

来源:shell/api_gen.sh1-14 .pre-commit-config.yaml3-14

Docstring 指南

Keras 遵循特定的 docstring 约定,在编写或编辑 docstring 时应手动检查

类 Docstrings

类 docstring 应包含

  • 单行描述
  • 详细段落
  • 可选的 Examples 部分
  • 用于 __init__() 参数的 Args 部分
  • 对于层
    • Call arguments 部分
    • Returns 部分
    • 可选的 Raises 部分

函数 Docstrings

函数 docstring 应包含

  • 单行描述
  • 详细段落
  • 可选的 Examples 部分
  • Args 部分
  • Returns 部分
  • 可选的 Raises 部分

来源:CONTRIBUTING.md138-170

运行测试

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

来源:CONTRIBUTING.md172-221

持续集成基础设施

Keras 使用 GitHub Actions 进行持续集成,运行所有受支持后端的测试

CI 工作流为每个受支持的后端运行测试套件,包括

  • 主测试套件
  • 每个后端的集成测试
  • 后端特定测试
  • 代码覆盖率报告

对于拉取请求,所有测试都必须通过才能合并 PR。

来源:.github/workflows/actions.yml1-139 .github/workflows/nightly.yml1-123

依赖管理

Keras 管理不同后端和环境的依赖项

主要依赖项

主要依赖项文件(requirements.txt)包含所有后端的依赖项

  • TensorFlow(tensorflow-cputensorflow
  • PyTorch(torch
  • JAX(jax[cpu]
  • 通用依赖项(requirements-common.txt

来源:requirements.txt1-24

后端特定依赖项

对于 GPU 支持,有后端特定的依赖项文件

  • requirements-tensorflow-cuda.txt - 支持 GPU 的 TensorFlow
  • requirements-torch-cuda.txt - 支持 GPU 的 PyTorch
  • requirements-jax-cuda.txt - 支持 GPU 的 JAX
  • requirements-openvino.txt - OpenVINO 后端

来源:requirements-tensorflow-cuda.txt1-13 requirements-torch-cuda.txt1-16 requirements-jax-cuda.txt1-15

总结

贡献 Keras 需要了解项目结构、设置开发环境、遵循编码标准并确保测试通过。通过遵循这些指南,您可以有效地为 Keras 生态系统做出贡献,并帮助改进这个强大的深度学习框架。