{"full_name":"keras-team/keras","owner":"keras-team","name":"keras","url":"https://github.com/keras-team/keras","description":"Deep Learning for humans","homepage":"http://keras.io/","topics":[],"language":"Python","license":"Apache-2.0","avatar":"https://avatars.githubusercontent.com/u/34455048?v=4","created_at":"2015-03-28T00:35:42Z","pushed_at":"2026-11-10T02:55:37Z","metrics":{"stars":64419,"forks":19821,"watchers":1848,"issues":13070,"prs":10224,"releases":93,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":92},"growth":{"day":{"stars":2,"forks":2,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[64417,64419],"forks":[19819,19821],"watchers":[1848,1848],"issues_open":[null,null],"prs_open":[null,null]},"boards":{},"same_owner":[{"full_name":"keras-team/autokeras","name":"autokeras","boards":{}},{"full_name":"keras-team/keras-hub","name":"keras-hub","boards":{}}],"issues":[{"number":19571,"title":"MLX Backend ","comments":59,"created_at":"2024-04-20T12:26:19Z"},{"number":18442,"title":"🚀 Contributing to Keras: Open Projects, Ideas and Roadmap 🚀","comments":56,"created_at":"2023-07-14T22:52:56Z"},{"number":19246,"title":"[BUG][all_reduce] INVALID_ARGUMENT:  You must feed a value for placeholder tensor","comments":26,"created_at":"2024-03-01T19:32:44Z"},{"number":18467,"title":"Keras 2 <> Keras 3 incompatibilities","comments":18,"created_at":"2023-05-29T04:37:27Z"},{"number":23696,"title":"Migrate internal `ops.*` calls to `backend.ops.*`","comments":16,"created_at":"2026-09-20T18:12:42Z"},{"number":21801,"title":"`plot_model` `rankdir=\"LR\"` does not show U-shape plot for a UNet","comments":14,"created_at":"2025-10-30T06:15:02Z"},{"number":21785,"title":"`keras.ops.` in `tf.data` regardless of backends","comments":14,"created_at":"2025-10-26T11:27:54Z"},{"number":19230,"title":"Backend-Agnostic Types","comments":14,"created_at":"2024-02-26T10:20:50Z"}],"discussions":[{"number":24095,"title":"Proposal: a portability auditor for user-defined Keras layers and models","comments":0,"category":"Ideas","created_at":"2026-10-29T15:11:08Z"},{"number":23237,"title":"PerNodeDrop: A Practical and Efficient Alternative to DropConnect:- – Exploring Node-Owned Stochasticity","comments":0,"category":"Show and tell","created_at":"2026-07-09T17:17:16Z"},{"number":23090,"title":"PerNodeDrop: A Practical and Efficient Alternative to DropConnect:- – Exploring Node-Owned Stochasticity","comments":1,"category":"Ideas","created_at":"2026-06-14T14:06:47Z"},{"number":23079,"title":"MCP to help OSS devs understand keras-team/keras","comments":0,"category":"General","created_at":"2026-06-12T12:11:36Z"},{"number":22888,"title":"[Question] Is the validation behavior in keras.ops.conv_transpose intentionally different between symbolic and eager paths?","comments":3,"category":"Q&A","created_at":"2026-05-13T11:11:27Z"},{"number":22299,"title":"Validation R2 drastically different in Keras 3 (eager mode) compared to Keras 2 (graph mode)","comments":2,"category":"Q&A","created_at":"2026-02-26T09:46:08Z"},{"number":22144,"title":"Question about intended behavior of is_continuous_axis for decreasing axes","comments":1,"category":"Q&A","created_at":"2026-02-10T06:55:01Z"},{"number":21872,"title":"Validation progress","comments":0,"category":"Ideas","created_at":"2025-11-26T16:16:30Z"}],"latest_release":{"name":"Keras 3.12.4","tag":"v3.12.4","published_at":"2026-07-29T22:19:46Z","body":"# Keras 3.12.4\r\n\r\nKeras 3.12.4 is a security patch release that hardens dataset loading and model file handling against insecure deserialization and decompression-bomb attacks.\r\n\r\n## Security Fixes\r\n\r\n* **Restrict unpickling when loading IMDB and Reuters datasets** — Replaces `np.load(allow_pickle=True)` with a restricted unpickler that only permits numpy array reconstruction, preventing arbitrary code execution via crafted `.npz` files (CWE-502). ([#23047](https://github.com/keras-team/keras/pull/23047)) by @LinZiyuu\r\n* **Verify all intermediary H5 groups when navigating H5 files** — Manually resolves nested H5 group paths to verify group types at each step, preventing potential path traversal. ([#23168](https://github.com/keras-team/keras/pull/23168)) by @hertschuh\r\n* **Reject decompression-bomb members on the `.keras` asset extraction path** — Adds per-member decompression-ratio checks before extracting `.keras` archives to disk, preventing disk-exhaustion attacks via crafted archives. ([#23101](https://github.com/keras-team/keras/pull/23101)) by @LinZiyuu\r\n* **Restrict unpickling when loading CIFAR datasets** — Replaces bare `cPickle.load` in CIFAR-10/100 batch loading with the numpy-only `RestrictedUnpickler`, blocking arbitrary code execution via pickle gadgets. ([#23252](https://github.com/keras-team/keras/pull/23252)) by @SABITHSAHEB\r\n\r\n---\r\n\r\n## Contributors\r\n\r\nThank you to all the contributors who made this release possible! 🎉\r\n\r\n* @LinZiyuu — Security hardening for IMDB, Reuters, and `.keras` asset extraction ([#23047](https://github.com/keras-team/keras/pull/23047), [#23101](https://github.com/keras-team/keras/pull/23101))\r\n* @hertschuh — H5 group verification ([#23168](https://github.com/keras-team/keras/pull/23168))\r\n* @SABITHSAHEB — CIFAR dataset pickle restriction ([#23252](https://github.com/keras-team/keras/pull/23252))\r\n\r\n---\r\n\r\n**Full Changelog**: https://github.com/keras-team/keras/compare/v3.12.3...v3.12.4\r\n"},"readme":true,"readme_zh":false,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}