Highlights
- New file editor utility:
keras.saving.KerasFileEditor
. Use it to inspect, diff, modify and resave Keras weights files. See basic workflow here. - New
keras.utils.Config
class for managing experiment config parameters.
BREAKING changes
- When using
keras.utils.get_file
, withextract=True
oruntar=True
, the return value will be the path of the extracted directory, rather than the path of the archive.
Other changes and additions
- Logging is now asynchronous in
fit()
,evaluate()
,predict()
. This enables 100% compact stacking oftrain_step
calls on accelerators (e.g. when running small models on TPU).- If you are using custom callbacks that rely on
on_batch_end
, this will disable async logging. You can force it back by addingself.async_safe = True
to your callbacks. Note that theTensorBoard
callback isn't considered async safe by default. Default callbacks like the progress bar are async safe.
- If you are using custom callbacks that rely on
- Added
keras.saving.KerasFileEditor
utility to inspect, diff, modify and resave Keras weights file. - Added
keras.utils.Config
class. It behaves like a dictionary, with a few nice features:- All entries are accessible and settable as attributes, in addition to dict-style (e.g.
config.foo = 2
orconfig["foo"]
are both valid) - You can easily serialize it to JSON via
config.to_json()
. - You can easily freeze it, preventing future changes, via
config.freeze()
.
- All entries are accessible and settable as attributes, in addition to dict-style (e.g.
- Added bitwise numpy ops:
bitwise_and
bitwise_invert
bitwise_left_shift
bitwise_not
bitwise_or
bitwise_right_shift
bitwise_xor
- Added math op
keras.ops.logdet
. - Added numpy op
keras.ops.trunc
. - Added
keras.ops.dot_product_attention
. - Added
keras.ops.histogram
. - Allow infinite
PyDataset
instances to use multithreading. - Added argument
verbose
inkeras.saving.ExportArchive.write_out()
method for exporting TF SavedModel. - Added
epsilon
argument inkeras.ops.normalize
. - Added
Model.get_state_tree()
method for retrieving a nested dict mapping variable paths to variable values (either as numpy arrays or backend tensors (default)). This is useful for rolling out custom JAX training loops. - Added image augmentation/preprocessing layers
keras.layers.AutoContrast
,keras.layers.Solarization
. - Added
keras.layers.Pipeline
class, to apply a sequence of layers to an input. This class is useful to build a preprocessing pipeline. Compared to aSequential
model,Pipeline
features a few important differences:- It's not a
Model
, just a plain layer. - When the layers in the pipeline are compatible with
tf.data
, the pipeline will also remaintf.data
compatible, independently of the backend you use.
- It's not a
New Contributors
- @alexhartl made their first contribution in #20125
- @Doch88 made their first contribution in #20156
- @edbosne made their first contribution in #20151
- @ghsanti made their first contribution in #20185
- @joehiggi1758 made their first contribution in #20223
- @AryazE made their first contribution in #20228
- @sanskarmodi8 made their first contribution in #20237
- @himalayo made their first contribution in #20262
- @nate2s made their first contribution in #20305
- @DavidLandup0 made their first contribution in #20316
Full Changelog: v3.5.0...v3.6.0