v3.14.0
Added 12
- Added full support for Orbax checkpoints, including sharding, remote paths, and step recovery
- Added support for Activation-aware Weight Quantization (AWQ) and Asymmetric INT4 Sub-Channel Quantization
- Added batch renormalization feature to the BatchRenormalization layer
- Added ScheduleFreeAdamW optimizer
- Introduced optional Gated Attention support in MultiHeadAttention and GroupedQueryAttention layers
- Added NaN-aware NumPy operations: nanmin, nanmax, nanmean, nanmedian, nanvar, nanstd, nanprod, nanargmin, nanargmax, and nanquantile in keras.ops.numpy
- Added math and linear algebra operators: nextafter, ptp, view, sinc, fmod, i0, fliplr, flipud, rad2deg, geomspace, depth_to_space, space_to_depth, and fold
- Added Contrast Limited Adaptive Histogram Equalization (CLAHE) preprocessing layer
- Preprocessing layers now support Python iterables in the adapt() method, allowing direct use of Grain datasets
- OpenVINO backend now supports NumPy operations: vander, trapezoid, corrcoef, correlate, flip, diagonal, cbrt, hypot, trace, kron, argpartition, logaddexp2, ldexp, select, round, vstack, hsplit, vsplit, tile, nansum, tensordot, exp2, trunc, gcd, unravel_index, inner, cumprod, searchsorted, hanning, diagflat, norm, histogram, lcm, allclose, real, imag, isreal, kaiser, shuffle, einsum, quantile, conj, randint, in_top_k, signbit, gamma, heaviside, var, std, inv, solve, cholesky_inverse, fft, fft2, ifft2, rfft, irfft, stft, istft, scatter, binomial, unfold, and QR decomposition
- OpenVINO backend now supports neural network operations: separable_conv, conv_transpose, adaptive_average_pool, adaptive_max_pool, RNN, LSTM, and GRU
- OpenVINO backend now supports control flow operations: cond, scan, associative_scan, map, switch, fori_loop, and vectorized_map
Changed 3
- PyTorch backend now supports dynamic shapes in export and includes device selection improvements
- JAX backend improved RNG handling in FlaxLayer and JaxLayer, variable jitting improvements, and direct JAX-to-ONNX export
- NumPy backend now supports masking
Fixed 5
- Fixed multiple symbolic shape bugs across layers like Conv1DTranspose, IndexLookup, and TextVectorization
- Fixed activity regularizer normalization by batch size
- Fixed CuDNN-based LSTM and GRU implementation in PyTorch backend
- Improved Sequential error messages for incompatible layers
- Minimized memory usage issues in sparse_categorical_crossentropy
Highlights
- Orbax Checkpoint Integration: Full support for Orbax checkpoints, including sharding, remote paths, and step recovery.
- Quantization Upgrades: Added support for Activation-aware Weight Quantization (AWQ) and Asymmetric INT4 Sub-Channel Quantization.
- Batch Renormalization in BatchNorm: Added batch renormalization feature to the
BatchRenormalizationlayer. - New Optimizer: Added
ScheduleFreeAdamWoptimizer. - Gated Attention: Introduced optional Gated Attention support in
MultiHeadAttentionandGroupedQueryAttentionlayers.
New Features and Operations
Multi-Backend Operations
- NaN-aware NumPy Operations: Added support for
nanmin,nanmax,nanmean,nanmedian,nanvar,nanstd,nanprod,nanargmin,nanargmax, andnanquantileinkeras.ops.numpy. - New Math & Linear Algebra Operators: Added
nextafter,ptp,view,sinc,fmod,i0,fliplr,flipud,rad2deg,geomspace,depth_to_space,space_to_depth, andfold.
Preprocessing and Layers
- CLAHE Layer: Added Contrast Limited Adaptive Histogram Equalization preprocessing layer.
- Adapt Support for Iterables: Preprocessing layers now support Python iterables in the
adapt()method, which allows the direct use of Grain datasets.
OpenVINO Backend Support
The OpenVINO backend received a massive update, implementing a wide array of NumPy and Neural Network operations to achieve feature parity with other backends:
- NumPy Operations:
vander,trapezoid,corrcoef,correlate,flip,diagonal,cbrt,hypot,trace,kron,argpartition,logaddexp2,ldexp,select,round,vstack,hsplit,vsplit,tile,nansum,tensordot,exp2,trunc,gcd,unravel_index,inner,cumprod,searchsorted,hanning,diagflat,norm,histogram,lcm,allclose,real,imag,isreal,kaiser,shuffle,einsum,quantile,conj,randint,in_top_k,signbit,gamma,heaviside,var,std,inv,solve,cholesky_inverse,fft,fft2,ifft2,rfft,irfft,stft,istft,scatter,binomial,unfold,QR decomposition,view, and more. - Neural Network Operations: Added support for
separable_conv,conv_transpose,adaptive_average_pool,adaptive_max_pool,RNN,LSTM, andGRU. - Control Flow Operations: Implemented
cond,scan,associative_scan,map,switch,fori_loop, andvectorized_map.
Bug Fixes and Improvements
Backend Specific Improvements
- PyTorch: Dynamic shapes support in export, device selection improvements, and bug fixes to the CuDNN based LSTM and GRU implementation.
- JAX: Improved RNG handling in
FlaxLayerandJaxLayer, variable jitting improvements, and direct JAX-to-ONNX export. - NumPy: Enabled masking support for the NumPy backend.
Other Improvements
- Fixed multiple symbolic shape bugs across layers like
Conv1DTranspose,IndexLookup, andTextVectorization. - Fixed activity regularizer normalization by batch size.
- Improved
Sequentialerror messages for incompatible layers. - Minimized memory usage issues in
sparse_categorical_crossentropy.
New Contributors
We would like to thank our new contributors for making their first contribution to the Keras project:
- @vaidik-gupta made their first contribution in https://github.com/keras-team/keras/pull/21939
- @HyperPS made their first contribution in https://github.com/keras-team/keras/pull/21880
- @calad0i made their first contribution in https://github.com/keras-team/keras/pull/21959
- @KarSri7694 made their first contribution in https://github.com/keras-team/keras/pull/21963
- @MarcosAsh made their first contribution in https://github.com/keras-team/keras/pull/21961
- @orbin123 made their first contribution in https://github.com/keras-team/keras/pull/21935
- @ayulockedin made their first contribution in https://github.com/keras-team/keras/pull/21985
- @Shi-pra-19 made their first contribution in https://github.com/keras-team/keras/pull/21987
- @mahi21tha made their first contribution in https://github.com/keras-team/keras/pull/21989
- @PES2UG23CS205 made their first contribution in https://github.com/keras-team/keras/pull/21984
- @samudraneel05 made their first contribution in https://github.com/keras-team/keras/pull/22017
- @Junead04 made their first contribution in https://github.com/keras-team/keras/pull/21784
- @nexeora made their first contribution in https://github.com/keras-team/keras/pull/22051
- @bittoby made their first contribution in https://github.com/keras-team/keras/pull/22048
- @0xManan made their first contribution in https://github.com/keras-team/keras/pull/22035
- @sharpenteeth made their first contribution in https://github.com/keras-team/keras/pull/22079
- @maitry63 made their first contribution in https://github.com/keras-team/keras/pull/22068
- @Kh9705 made their first contribution in https://github.com/keras-team/keras/pull/22110
- @timon0305 made their first contribution in https://github.com/keras-team/keras/pull/22112
- @goyaladitya05 made their first contribution in https://github.com/keras-team/keras/pull/22131
- @Sikandar1310291 made their first contribution in https://github.com/keras-team/keras/pull/22014
- @haroon10725 made their first contribution in https://github.com/keras-team/keras/pull/22159
- @andersendsa made their first contribution in https://github.com/keras-team/keras/pull/22155
- @Rahuldrabit made their first contribution in https://github.com/keras-team/keras/pull/22146
- @jerryxyj made their first contribution in https://github.com/keras-team/keras/pull/22178
- @aaishwarymishra made their first contribution in https://github.com/keras-team/keras/pull/22173
- @Sujanian1304 made their first contribution in https://github.com/keras-team/keras/pull/22236
- @CityBoy-Claude made their first contribution in https://github.com/keras-team/keras/pull/22243
- @rstar327 made their first contribution in https://github.com/keras-team/keras/pull/22252
- @daehyun99 made their first contribution in https://github.com/keras-team/keras/pull/22289
- @kysolvik made their first contribution in https://github.com/keras-team/keras/pull/22290
- @ItzCobaltboy made their first contribution in https://github.com/keras-team/keras/pull/22158
- @cpuguy96 made their first contribution in https://github.com/keras-team/keras/pull/22284
- @0xRozier made their first contribution in https://github.com/keras-team/keras/pull/22218
- @tanguyguyot made their first contribution in https://github.com/keras-team/keras/pull/22327
- @AlanPonnachan made their first contribution in https://github.com/keras-team/keras/pull/21953
- @shriramThakare3 made their first contribution in https://github.com/keras-team/keras/pull/22306
- @Eruis2579 made their first contribution in https://github.com/keras-team/keras/pull/22350
- @satheeshbhukya made their first contribution in https://github.com/keras-team/keras/pull/22388
- @sam-shubham made their first contribution in https://github.com/keras-team/keras/pull/22265
- @Passavee-Losripat made their first contribution in https://github.com/keras-team/keras/pull/22404
- @ChiragSW made their first contribution in https://github.com/keras-team/keras/pull/22439
- @rishi-sangare made their first contribution in https://github.com/keras-team/keras/pull/22407
- @Caslyn made their first contribution in https://github.com/keras-team/keras/pull/22488
- @Abineshabee made their first contribution in https://github.com/keras-team/keras/pull/22469
- @dagecko made their first contribution in https://github.com/keras-team/keras/pull/22555
Full Changelog: https://github.com/keras-team/keras/compare/v3.13.2...v3.14.0