|
1 | 1 | # keras3 (development version) |
2 | 2 |
|
3 | | -- Added training loop configuration helpers: |
4 | | - `config_max_epochs()`, `config_set_max_epochs()`, `config_max_steps_per_epoch()`, |
5 | | - and `config_set_max_steps_per_epoch()`. The caps can also be set via the |
6 | | - `KERAS_MAX_EPOCHS` and `KERAS_MAX_STEPS_PER_EPOCH` environment variables. |
7 | | - Added `config_is_nnx_enabled()` to check whether JAX NNX features are enabled. |
| 3 | +- Expanded numeric operations with `op_layer_normalization()`, `op_cbrt()`, |
| 4 | + `op_corrcoef()`, `op_deg2rad()`, `op_heaviside()`, the new `op_sparse_sigmoid()` |
| 5 | + plus matching `activation_sparse_sigmoid()`, and an `attn_logits_soft_cap` |
| 6 | + argument for `op_dot_product_attention()`. |
| 7 | + |
| 8 | +- Added signal window operations: `op_bartlett()`, `op_blackman()`, |
| 9 | + `op_hamming()`, `op_hanning()`, and `op_kaiser()`. |
| 10 | + |
| 11 | +- Added `loss_categorical_generalized_cross_entropy()` for training with noisy |
| 12 | + labels. |
8 | 13 |
|
9 | 14 | - LoRA-enabled layers (`layer_dense()`, `layer_embedding()`, `layer_einsum_dense()`) |
10 | 15 | gain a `lora_alpha` argument to scale the adaptation delta independently of the |
11 | 16 | chosen rank. |
12 | 17 |
|
13 | | -- `Layer$add_weight()` gains an `overwrite_with_gradient` option and |
14 | | - layers now provide a `symbolic_call()` method. |
| 18 | +- Added complex-valued helpers: S3 `Arg()` methods for tensors, `op_angle()`, |
| 19 | + and conversions `op_view_as_real()` / `op_view_as_complex()`. |
15 | 20 |
|
16 | | -- `layer_layer_normalization()` removes the `rms_scaling` argument. |
| 21 | +- Added the Muon optimizer via `optimizer_muon()`. |
| 22 | + |
| 23 | +- Added elastic deformation utilities for images: `layer_random_elastic_transform()` |
| 24 | + and the lower-level `op_image_elastic_transform()`. |
17 | 25 |
|
18 | 26 | - Transposed convolution utilities now follow the latest Keras API: |
19 | 27 | `op_conv_transpose()` defaults `strides = 1` and the `layer_conv_*_transpose()` |
20 | 28 | layers expose `output_padding` for precise shape control. |
21 | 29 |
|
22 | | -- Added the Muon optimizer via `optimizer_muon()`. |
23 | | - |
24 | | -- Added `loss_categorical_generalized_cross_entropy()` for training with noisy |
25 | | - labels. |
26 | | - |
27 | | -- Added elastic deformation utilities for images: `layer_random_elastic_transform()` |
28 | | - and the lower-level `op_image_elastic_transform()`. |
| 30 | +- `register_keras_serializable()` now returns a registered Python callable, |
| 31 | + making it easier to use with bare R functions. |
29 | 32 |
|
30 | 33 | - `save_model_weights()` adds a `max_shard_size` argument to split large weight |
31 | 34 | files into manageable shards. |
32 | 35 |
|
| 36 | +- `keras_variable()` now accepts a `synchronization` argument for distributed |
| 37 | + strategies. |
| 38 | + |
| 39 | +- `layer_layer_normalization()` removes the `rms_scaling` argument. |
| 40 | + |
33 | 41 | - `layer_reshape()` can now accept `-1` as a sentinel for an automatically calculated axis size. |
34 | 42 |
|
35 | 43 | - `layer_torch_module_wrapper()` gains an `output_shape` argument to help Keras |
36 | 44 | infer shapes when wrapping PyTorch modules. |
37 | 45 |
|
38 | | -- Built-in datasets now accept `convert = FALSE` to return NumPy arrays |
| 46 | +- `Layer$add_weight()` gains an `overwrite_with_gradient` option and |
| 47 | + layers now provide a `symbolic_call()` method. |
| 48 | + |
| 49 | +- Added `str()` S3 method for Keras Variables. |
| 50 | + |
| 51 | +- Added S3 methods for JAX array: |
| 52 | + `str()`, `as.array()`, `as.double()`, `as.integer()`, `as.numeric()`. |
| 53 | + |
| 54 | +- Added base-array compatibility methods for backend tensors: `t()`, |
| 55 | + `aperm()`, and `all.equal()`. |
| 56 | + |
| 57 | +- Added `pillar::type_sum()` for JAX variables and `JaxVariable`; |
| 58 | + extended `str()` coverage to the new JAX variable class. |
| 59 | + |
| 60 | +- `config_max_epochs()`, `config_set_max_epochs()`, `config_max_steps_per_epoch()`, |
| 61 | + and `config_set_max_steps_per_epoch()`. The caps can also be set via the |
| 62 | + `KERAS_MAX_EPOCHS` and `KERAS_MAX_STEPS_PER_EPOCH` environment variables. |
| 63 | + Added `config_is_nnx_enabled()` to check whether JAX NNX features are enabled. |
| 64 | + |
| 65 | +- Built-in dataset loaders now accept `convert = FALSE` to return NumPy arrays |
39 | 66 | instead of R arrays. |
40 | 67 |
|
41 | 68 | - Updated `plot(history, theme_bw = TRUE)` for `ggplot2` 3.4.0 |
|
44 | 71 | - `plot(model)` DPI is now globally configurable via |
45 | 72 | `options(keras.plot.model.dpi = )`, (defaults to `200`). |
46 | 73 |
|
47 | | -- Added base-array compatibility methods for backend tensors: `t()`, |
48 | | - `aperm()`, and `all.equal()`. |
49 | | - |
50 | 74 | - Reexported reticulate functions: `py_help()`, `py_to_r()`, `r_to_py()`, |
51 | 75 | `py_require()`, and `import()`. |
52 | 76 |
|
53 | 77 | - Support `super()$initialize()` in subclassed Keras classes; improved |
54 | 78 | `super()` behavior in subclasses. |
55 | 79 |
|
56 | | -- Added `pillar::type_sum()` for JAX variables and `JaxVariable`; |
57 | | - extended `str()` coverage to the new JAX variable class. |
58 | | - |
59 | | -- Added S3 methods for JAX array: |
60 | | - `str()`, `as.array()`, `as.double()`, `as.integer()`, `as.numeric()`. |
61 | | - |
62 | | -- Added `str()` S3 method for Keras Variables. |
63 | | - |
64 | | -- `keras_variable()` now accepts a `synchronization` argument for distributed |
65 | | - strategies. |
66 | | - |
67 | 80 | - Updated dependencies declared by `use_backend("jax", gpu=TRUE)` |
68 | 81 | for compatability with `keras-hub`. |
69 | 82 |
|
70 | | -- Fixed `register_keras_serializable()` when passed bare functions. |
71 | | - |
72 | | -- Fixed an issue when switching backends twice in a row. |
73 | | - |
74 | 83 | - Exported `named_list()` utility. |
75 | 84 |
|
76 | | -- Added complex-valued helpers: S3 `Arg()` methods for tensors, `op_angle()`, |
77 | | - and conversions `op_view_as_real()` / `op_view_as_complex()`. |
78 | | - |
79 | | -- Added signal window operations: `op_bartlett()`, `op_blackman()`, |
80 | | - `op_hamming()`, `op_hanning()`, and `op_kaiser()`. |
81 | | - |
82 | | -- Expanded numeric operations with `op_layer_normalization()`, `op_cbrt()`, |
83 | | - `op_corrcoef()`, `op_deg2rad()`, `op_heaviside()`, the new `op_sparse_sigmoid()` |
84 | | - plus matching `activation_sparse_sigmoid()`, and an `attn_logits_soft_cap` |
85 | | - argument for `op_dot_product_attention()`. |
| 85 | +- Fixed an issue when switching backends twice in a row. |
86 | 86 |
|
87 | 87 | # keras3 1.4.0 |
88 | 88 |
|
|
0 commit comments