Please see the release history at https://github.com/tensorflow/tensorflow/releases/tag/v2.10.0 for more details.
What's Changed
- Cleanup legacy Keras files by @qlzh727 in #14256
- Sync OSS keras to head. by @qlzh727 in #14300
- Update build script for GPU build. by @copybara-service in #14336
- Move the LossReduction class from tf to Keras. by @copybara-service in #14362
- Update keras API generate script. by @copybara-service in #14418
- Adding extra target that are needed by PIP package dependency. by @copybara-service in #14421
- Add test related targets to PIP package list. by @copybara-service in #14427
- Sync OSS keras to head. by @copybara-service in #14428
- Update visibility setting for keras/tests to enable PIP package testing. by @copybara-service in #14429
- Remove items from PIP_EXCLUDED_FILES which is needed with testing PIP. by @copybara-service in #14431
- Split bins into num_bins and bin_boundaries arguments for discretization by @copybara-service in #14507
- Update pbtxt to use _PRFER_OSS_KERAS=1. by @copybara-service in #14519
- Sync OSS keras to head. by @copybara-service in #14572
- Sync OSS keras to head. by @copybara-service in #14614
- Cleanup the bazelrc and remove unrelated items to keras. by @copybara-service in #14616
- Sync OSS keras to head. by @copybara-service in #14624
- Remove object metadata when saving SavedModel. by @copybara-service in #14697
- Fix static shape inference for Resizing layer. by @copybara-service in #14712
- Make TextVectorization work with list input. by @copybara-service in #14711
- Remove deprecated methods of Sequential model. by @copybara-service in #14714
- Improve Model docstrings by @copybara-service in #14726
- Add migration doc for legacy_tf_layers/core.py. by @copybara-service in #14740
- PR #43417: Fixes #42872: map_to_outputs_names always returns a copy by @copybara-service in #14755
- Rename the keras.py to keras_lib.py to resolve the name conflict during OSS test. by @copybara-service in #14778
- Switch to tf.io.gfile for validating vocabulary files. by @copybara-service in #14788
- Avoid serializing generated thresholds for AUC metrics. by @copybara-service in #14789
- Fix data_utils.py when name ends with
.tar.gz
by @copybara-service in #14777 - Fix lookup layer oov token check when num_oov_indices > len(vocabulary tokens) by @copybara-service in #14793
- Update callbacks.py by @jvishnuvardhan in #14760
- Fix keras metric.result_state when the metric variables are sharded variable. by @copybara-service in #14790
- Fix typos in CONTRIBUTING.md by @amogh7joshi in #14642
- Fixed ragged sample weights by @DavideWalder in #14804
- Pin the protobuf version to 3.9.2 which is same as the TF. by @copybara-service in #14835
- Make variable scope shim regularizer adding check for attribute presence instead of instance class by @copybara-service in #14837
- Add missing license header for leakr check. by @copybara-service in #14840
- Fix TextVectorization with output_sequence_length on unknown input shapes by @copybara-service in #14832
- Add more explicit error message for instance type checking of optimizer. by @copybara-service in #14846
- Set aggregation for variable when using PS Strategy for aggregating variables when running multi-gpu tests. by @copybara-service in #14845
- Remove unnecessary reshape layer in MobileNet architecture by @copybara-service in #14854
- Removes caching of the convolution tf.nn.convolution op. While this provided some performance benefits, it also produced some surprising behavior for users in eager mode. by @copybara-service in #14855
- Output int64 by default from Discretization by @copybara-service in #14841
- add patterns to .gitignore by @haifeng-jin in #14861
- Clarify documentation of DepthwiseConv2D by @vinhill in #14817
- add DepthwiseConv1D layer by @fsx950223 in #14863
- Make model summary wrap by @Llamrei in #14865
- Update the link in Estimator by @hirobf10 in #14901
- Fix
int
given forfloat
args by @SamuelMarks in #14900 - Fix RNN, StackedRNNCells with nested state_size, output_size TypeError issues by @Ending2015a in #14905
- Fix the use of imagenet_utils.preprocess_input within a Lambda layer with mixed precision by @anth2o in #14917
- Fix docstrings in
MultiHeadAttention layer
call argumentreturn_attention_scores
. by @guillesanbri in #14920 - Check if layer has _metrics_lock attribute by @DanBmh in #14903
- Make keras.Model picklable by @adriangb in #14748
- Fix typo in docs by @seanmor5 in #14946
- use getter setter by @fsx950223 in #14948
- Close _SESSION.session in clear_session by @sfreilich in #14414
- Fix keras nightly PIP package build. by @copybara-service in #14957
- Fix EarlyStopping stop at fisrt epoch when patience=0 ; add auc to au… by @DachuanZhao in #14750
- Add default value in Attention layer docs #50839 by @europeanplaice in #14952
- Update 00-bug-template.md by @jvishnuvardhan in #14991
- minor fixing by @slowy07 in #15008
- Remove cast of y_true to y_pred data type in sparse categorical cross entropy loss by @old-school-kid in #15015
- Improve a number of error messages in Keras layers. by @copybara-service in #15031
- Fix typo in the test case name. by @copybara-service in #15050
- BackupAndRestore callback: Allow the train_counter to be fault tolerant across training interruptions. by @copybara-service in #15018
- Include Keras API design guidelines in the contribution docs. by @copybara-service in #15051
- Fix clone_model to consider input_tensors by @LeonhardFeiner in #14982
- Fix docs about GRU and cuDNN. by @bzamecnik in #15058
- fix: typo spelling by @slowy07 in #14989
- update contributing guide by @haifeng-jin in #15063
- Make python code in Sequential docs consistent by @01-vyom in #15075
- Create stale.yml by @rthadur in #15176
- Update Contributing Guide by @haifeng-jin in #15133
- fix "rbg" -> "rgb" in image_dataset_from_directory by @YoniChechik in #15177
- Do not initialize tables automatically for lookup layers by @copybara-service in #15193
- Log the best epoch when restoring the best weights in early stopping by @harupy in #15197
- update contributing guide by @haifeng-jin in #15189
- fix array for numpy support by @collinzrj in #15201
- Add test case for batch normalization with renorm on TPUs. by @copybara-service in #15234
- Update training.py by @jvishnuvardhan in #15195
- [Follow-up for #15197] Fix a log message for weight restoration in early stopping by @harupy in #15222
- Rename references to "K" as "backend" for consistency. by @copybara-service in #15242
- Add Keras utility for making user programs deterministic. by @copybara-service in #15243
- Update convolutional.py by @ymodak in #15158
- Fix for bug causing failing test keras/utils/vis_utils_test.py test_layer_range_value_fail second value (empty list). by @ddrakard in #15215
- Fix small mistake …
optimizer
tooptimizers
by @MohamedAliRashad in #15227 - Added dense_shape property delegation by @jackd in #15199
- handle when a List is used as validation_data instead of a Tuple, in model.fit() by @tarun-bisht in #15237
- fix cropping layer return empty list if crop is higher than data shape by @arubiales in #14970
- Make the import in integration_test consistent with other keras code. by @copybara-service in #15275
- Specify
stacklevel
forwarnings.warn
to make it easier to identify which lines throw warnings by @harupy in #15209 - Fixes Github tensorflow/issues/51710 by @copybara-service in #15280
- Print expanded nested layers feature in models.summary() by @krishrustagi in #15251
- adapt EarlyStopping auto mode to auc by @DachuanZhao in #15200
- change misleading description of m_mul by @mikael-epigram in #15288
- The latest update.Hope it can suit you by @DLPerf in #15295
- Fixed and added ValueError for
plot_model
,model_to_dot
andmodel.summary()
by @krishrustagi in #15318 - Fix a minor typo in CIFAR-10 and CIFAR-100 description by @Rishit-dagli in #15321
- Fix cropping2D empty list #15325 by @arubiales in #15326
- convert label_smoothing dtype to y dtype by @FancyXun in #15363
- Exclude default bazel paths for VsCode by @bhack in #15343
- fix: typo in SeparableConv1D by @carmineds in #15370
- Add user bin path for pip installed packages by @bhack in #15385
- Fix reset_metrics by @bhack in #15342
- Kernel_size, pool_size should be positive integers by @WingsBrokenAngel in #15356
- Reopening #48000, #48491, #48610 from tensorflow/tensorflow by @AdityaKane2001 in #15315
expand_nested
bug fix and changingmodel.summary
style by @krishrustagi in #15355- unnecessary casting and condition removed by @cemsina in #15399
- Bug fix for issue #15211, PR #15233 ("Plot model show activations") by @ddrakard in #15286
- fix a bug: when use tf.keras.layers.TextVectorization layer to load model by @mikuh in #15422
- added correct initialisation for MHA by @FabianGroeger96 in #15423
- Persist attribute "sparse" of IndexLookup layer by @diggerk in #15473
- Updated Normalization import by @sachinprasadhs in #15476
- Added layer trainable information in model summary by @mfidabel in #15459
- Add efficientnet v2 to keras.applications by @sebastian-sz in #14935
- Fix typos by @kianmeng in #15543
- Update the contribution guide to include a applications section by @mattdangerw in #15447
- chore: replace os.path.join with tf.io.gfile.join by @adriangb in #15551
- Fixing typos. by @MohamadJaber1 in #15626
- Updating the documentation of MAPE by @sanatmpa1 in #15604
- Fix typo by @europeanplaice in #15639
- [Docs] Changed typo ModelNetV3 to MobileNetV3. by @sebastian-sz in #15640
- Adding a choice not to make batches in
timeseries_dataset_from_array
by @europeanplaice in #15646 - Bypass the require a config warning for marge layers by @leondgarse in #15612
- Allow keras.utils.Sequence sub-classes to use sparse/ragged tensors by @karlhigley in #15264
- fix backend _GRAPH_LEARNING_PHASES graph circular reference. by @zhjunqin in #15520
- doc: add link to SciKeras migration guide by @adriangb in #15723
- Fix a minor typo in the docstring by @kykim0 in #15683
- Fixed docstrings in keras/optimizer_v2/learning_rate_schedule.py by @AdityaKane2001 in #15718
- Implement compute_output_shape for BaseDenseAttention by @mishc9 in #15720
- SidecarEvaluator: Graduate from experimental endpoint. by @copybara-service in #15788
- Update README.md by @aliencaocao in #15814
- Update_OptimizerV2.py by @sachinprasadhs in #15819
- Use
assign_sub
when computingmoving_average_update
by @lgeiger in #15773 - Document the verbose parameter in EarlyStopping by @ThunderKey in #15817
- Fix LSTM and GRU cuDNN kernel failure for RaggedTensors. by @foxik in #15756
- A tiny problem in an AttributeError message in base_layer.py by @Aujkst in #15847
- Update training_generator_test.py by @sachinprasadhs in #15876
- Minor correction in RegNet docs by @AdityaKane2001 in #15901
- add scoring methods in Luong-style attention by @old-school-kid in #15867
- refactoring code with List Comprehension by @idiomaticrefactoring in #15924
- added clarifying statement to save_model example text by @soosung80 in #15930
- Update base_conv.py by @AdityaKane2001 in #15943
- Update global_clipnorm by @sachinprasadhs in #15938
- Update callbacks.py by @Cheril311 in #15977
- Applied correct reshaping to metric func sparse_top_k by @dfossl in #15997
- Keras saving/loading: Add a custom object saving test to verify the
keras.utils.register_keras_serializable
flows we are expecting users to follow work, and will continue to work with the new design and implementation coming in. by @copybara-service in #15992 - Metric accuracy bug fixes - Metrics Refactor proposal by @dfossl in #16010
- Make
classifier_activation
argument accessible for DenseNet and NASNet models by @adrhill in #16005 - Copy image utils from keras_preprocessing directly into core keras by @copybara-service in #15975
- Update
keras.callbacks.BackupAndRestore
docs by @lgeiger in #16018 - Updating the definition of an argument in the text_dataset_from_directory function by @shraddhazpy in #16012
- Remove deprecated TF1 Layer APIs
apply()
,get_updates_for()
,get_losses_for()
, and remove theinputs
argument in theadd_loss()
method. by @copybara-service in #16046 - Fixed minor typos by @hdubbs in #16071
- Fix typo in documentation by @futtetennista in #16082
- Issue #16090: Split input_shapes horizontally in utils.vis_utils.plot_model by @RicardFos in #16096
- Docker env setup related changes by @shraddhazpy in #16040
- Fixed EfficientNetV2 b parameter not increasing with each block. by @sebastian-sz in #16145
- Updated args of train_on_batch method by @jvishnuvardhan in #16147
- Binary accuracy bug fixes - Metric accuracy method refactor by @dfossl in #16083
- Fix the corner case for dtensor model layout map. by @copybara-service in #16170
- Fix typo in docstring for
DenseFeatures
by @gadagashwini in #16165 - Fix typo in Returns Section by @chunduriv in #16182
- Some tests misusing assertTrue for comparisons fix by @code-review-doctor in #16073
- Add .DS_Store to .gitignore for macOS users by @tsheaff in #16198
- Solve memory inefficiency in RNNs by @atmguille in #16174
- Update README.md by @ahmedopolis in #16259
- Fix documentation text being mistakenly rendered as code by @guberti in #16253
- Allow single input for merging layers Add, Average, Concatenate, Maximum, Minimum, Multiply by @foxik in #16230
- Mention image dimensions format in image_dataset_from_directory by @nrzimmermann in #16232
- fix thresholded_relu to support list datatype by @old-school-kid in #16277
- Implement all tf interpolation upscaling methods by @Mahrkeenerh in #16249
- Fix TypeError positional argument when LossScalerOptimizer is used conjointly with tfa wrappers by @lucasdavid in #16332
- Add type check to axis by @sachinprasadhs in #16208
- minor documention fix by @bmatschke in #16331
- Fix typos in data_adapter.py by @taegeonum in #16326
- Add
exclude_from_weight_decay
to AdamW by @markub3327 in #16274 - Switching learning/brain dependency to OSS compatible test_util by @copybara-service in #16362
- Typo fix in LSTM docstring by @peskaf in #16364
- Copy loss and metric to prevent side effect by @drauh in #16360
- Denormalization layer by @markub3327 in #16350
- Fix
reset_states
not working when invoked within atf.function
in graph mode. by @copybara-service in #16400 - Reduce the complexity of the base layer by pulling out the logic related to handling call function args to a separate class. by @copybara-service in #16375
- Add subset="both" functionality to {image|text}_dataset_from_directory() by @Haaris-Rahman in #16413
- Fix non-float32 efficientnet calls by @hctomkins in #16402
- Fix prediction with structured output by @itmo153277 in #16408
- Add reference to resource variables. by @sachinprasadhs in #16409
- added audio_dataset.py by @hazemessamm in #16388
- Fix Syntax error for combined_model.compile of WideDeepModel by @gadagashwini in #16447
- Missing
f
prefix on f-strings fix by @code-review-doctor in #16459 - Update CONTRIBUTING.md by @rthadur in #15998
- adds split_dataset utility by @prakashsellathurai in #16398
- Support increasing batch size by @markus-hinsche in #16337
- Add ConvNeXt models by @sayakpaul in #16421
- Fix OrthogonalRegularizer to implement the (1,1) matrix norm by @Kiwiakos in #16521
- fix: weight keys so that imagenet init works by @sayakpaul in #16528
- Preprocess input correction by @AdityaKane2001 in #16527
- Fix typo in documentation by @sushreebarsa in #16534
- Update index_lookup.py by @tilakrayal in #16460
- update codespaces bazel install by @haifeng-jin in #16575
- reduce too long lines in engine/ by @haifeng-jin in #16579
- Fix typos by @eltociear in #16568
- Fix mixed precision serialization of group convs by @lgeiger in #16571
- reduce layers line-too-long by @haifeng-jin in #16580
- resolve line-too-long in root directory by @haifeng-jin in #16584
- resolve line-too-long in metrics by @haifeng-jin in #16586
- resolve line-too-long in optimizers by @haifeng-jin in #16587
- resolve line-too-long in distribute by @haifeng-jin in #16594
- resolve line-too-long in integration_test by @haifeng-jin in #16599
- resovle line-too-long in legacy-tf-layers by @haifeng-jin in #16600
- resolve line-too-long in initializers by @haifeng-jin in #16598
- resolve line-too-long in api by @haifeng-jin in #16592
- resolve line-too-long in benchmarks by @haifeng-jin in #16593
- resolve line-too-long in feature_column by @haifeng-jin in #16597
- resolve line-too-long in datasets by @haifeng-jin in #16591
- resolve line-too-long in dtensor by @haifeng-jin in #16595
- resolve line-too-long in estimator by @haifeng-jin in #16596
- resolve line-too-long in applications by @haifeng-jin in #16590
- resolve line-too-long in mixed_precision by @haifeng-jin in #16605
- resolve line-too-long in models by @haifeng-jin in #16606
- resolve line-too-long in premade_models by @haifeng-jin in #16608
- resolve line-too-long in tests by @haifeng-jin in #16613
- resolve line-too-long in testing_infra by @haifeng-jin in #16612
- resolve line-too-long in saving by @haifeng-jin in #16611
- resolve line-too-long in preprocessing by @haifeng-jin in #16609
- resolve line-too-long in utils by @haifeng-jin in #16614
- Optimize L2 Regularizer (use tf.nn.l2_loss) by @szutenberg in #16537
- let the linter ignore certain lines, prepare to enforce line length by @haifeng-jin in #16617
- Fix typo by @m-ahmadi in #16607
- Explicitely set
AutoShardPolicy.DATA
forTensorLike
datasets by @lgeiger in #16604 - Fix all flake8 errors by @haifeng-jin in #16621
- Update lint.yml by @haifeng-jin in #16648
- Fix typo error of tf.compat.v1.keras.experimental for export and load model by @gadagashwini in #16636
- Fix documentation in keras.datasets.imdb by @luckynozomi in #16673
- Update init.py by @Wehzie in #16557
- Fix documentation in keras.layers.attention.multi_head_attention by @balvisio in #16683
- Fix missed parameter from AUC config by @weipeilun in #16499
- Fix bug for KerasTensor._keras_mask should be None by @haifeng-jin in #16689
- Fixed some spellings by @synandi in #16693
- Fix batchnorm momentum in ResNetRS by @shkarupa-alex in #16726
- Add variable definitions in optimizer usage example by @miker2241 in #16731
- Fixed issue #16749 by @asukakenji in #16751
- Fix usage of deprecated Pillow interpolation methods by @neoaggelos in #16746
- 📝 Add typing to some callback classes by @gabrieldemarmiesse in #16692
- Add support for Keras mask & causal mask to MultiHeadAttention by @ageron in #16619
- Update standard name by @chunduriv in #16772
- Fix error when labels contains brackets when plotting model by @cBournhonesque in #16739
- Fixing the incorrect link in input_layer.py by @tilakrayal in #16767
- Formatted callback.py to render correctly by @jvishnuvardhan in #16765
- Fixed typo in docs by @ltiao in #16778
- docs: Fix a few typos by @timgates42 in #16789
- Add ignore_class to sparse crossentropy and IoU by @lucasdavid in #16712
- Updated f-string method by @cyai in #16799
- Fix NASNet input shape computation by @ianstenbit in #16818
- Fix incorrect ref. to learning_rate_schedule during module import by @lucasdavid in #16813
- Fixing the incorrect link in backend.py by @tilakrayal in #16806
- Corrected DepthwiseConv1D docstring by @AdityaKane2001 in #16807
- Typo and grammar: "recieved" by @ehrencrona in #16814
- Fix typo in doc by @DyeKuu in #16821
- Update README.md by @freddy1020 in #16823
- Updated f-string method by @cyai in #16775
- Add
is_legacy_optimizer
to optimizer config to keep saving/loading consistent. by @copybara-service in #16842 - Add
is_legacy_optimizer
to optimizer config to keep saving/loading … by @qlzh727 in #16856
New Contributors
- @copybara-service made their first contribution in #14336
- @jvishnuvardhan made their first contribution in #14760
- @amogh7joshi made their first contribution in #14642
- @DavideWalder made their first contribution in #14804
- @vinhill made their first contribution in #14817
- @fsx950223 made their first contribution in #14863
- @Llamrei made their first contribution in #14865
- @hirobf10 made their first contribution in #14901
- @SamuelMarks made their first contribution in #14900
- @Ending2015a made their first contribution in #14905
- @anth2o made their first contribution in #14917
- @guillesanbri made their first contribution in #14920
- @DanBmh made their first contribution in #14903
- @adriangb made their first contribution in #14748
- @seanmor5 made their first contribution in #14946
- @sfreilich made their first contribution in #14414
- @DachuanZhao made their first contribution in #14750
- @europeanplaice made their first contribution in #14952
- @slowy07 made their first contribution in #15008
- @old-school-kid made their first contribution in #15015
- @LeonhardFeiner made their first contribution in #14982
- @01-vyom made their first contribution in #15075
- @rthadur made their first contribution in #15176
- @YoniChechik made their first contribution in #15177
- @harupy made their first contribution in #15197
- @collinzrj made their first contribution in #15201
- @ddrakard made their first contribution in #15215
- @MohamedAliRashad made their first contribution in #15227
- @jackd made their first contribution in #15199
- @tarun-bisht made their first contribution in #15237
- @arubiales made their first contribution in #14970
- @krishrustagi made their first contribution in #15251
- @mikael-epigram made their first contribution in #15288
- @DLPerf made their first contribution in #15295
- @Rishit-dagli made their first contribution in #15321
- @FancyXun made their first contribution in #15363
- @bhack made their first contribution in #15343
- @carmineds made their first contribution in #15370
- @WingsBrokenAngel made their first contribution in #15356
- @AdityaKane2001 made their first contribution in #15315
- @cemsina made their first contribution in #15399
- @mikuh made their first contribution in #15422
- @FabianGroeger96 made their first contribution in #15423
- @diggerk made their first contribution in #15473
- @sachinprasadhs made their first contribution in #15476
- @mfidabel made their first contribution in #15459
- @sebastian-sz made their first contribution in #14935
- @kianmeng made their first contribution in #15543
- @MohamadJaber1 made their first contribution in #15626
- @sanatmpa1 made their first contribution in #15604
- @leondgarse made their first contribution in #15612
- @karlhigley made their first contribution in #15264
- @zhjunqin made their first contribution in #15520
- @kykim0 made their first contribution in #15683
- @mishc9 made their first contribution in #15720
- @aliencaocao made their first contribution in #15814
- @lgeiger made their first contribution in #15773
- @ThunderKey made their first contribution in #15817
- @Aujkst made their first contribution in #15847
- @idiomaticrefactoring made their first contribution in #15924
- @soosung80 made their first contribution in #15930
- @Cheril311 made their first contribution in #15977
- @dfossl made their first contribution in #15997
- @adrhill made their first contribution in #16005
- @shraddhazpy made their first contribution in #16012
- @hdubbs made their first contribution in #16071
- @futtetennista made their first contribution in #16082
- @RicardFos made their first contribution in #16096
- @code-review-doctor made their first contribution in #16073
- @tsheaff made their first contribution in #16198
- @atmguille made their first contribution in #16174
- @ahmedopolis made their first contribution in #16259
- @guberti made their first contribution in #16253
- @nrzimmermann made their first contribution in #16232
- @Mahrkeenerh made their first contribution in #16249
- @bmatschke made their first contribution in #16331
- @taegeonum made their first contribution in #16326
- @markub3327 made their first contribution in #16274
- @peskaf made their first contribution in #16364
- @Haaris-Rahman made their first contribution in #16413
- @hctomkins made their first contribution in #16402
- @itmo153277 made their first contribution in #16408
- @hazemessamm made their first contribution in #16388
- @prakashsellathurai made their first contribution in #16398
- @markus-hinsche made their first contribution in #16337
- @sayakpaul made their first contribution in #16421
- @Kiwiakos made their first contribution in #16521
- @sushreebarsa made their first contribution in #16534
- @tilakrayal made their first contribution in #16460
- @eltociear made their first contribution in #16568
- @szutenberg made their first contribution in #16537
- @m-ahmadi made their first contribution in #16607
- @luckynozomi made their first contribution in #16673
- @Wehzie made their first contribution in #16557
- @balvisio made their first contribution in #16683
- @weipeilun made their first contribution in #16499
- @synandi made their first contribution in #16693
- @shkarupa-alex made their first contribution in #16726
- @miker2241 made their first contribution in #16731
- @asukakenji made their first contribution in #16751
- @neoaggelos made their first contribution in #16746
- @cBournhonesque made their first contribution in #16739
- @ltiao made their first contribution in #16778
- @timgates42 made their first contribution in #16789
- @ianstenbit made their first contribution in #16818
- @ehrencrona made their first contribution in #16814
- @DyeKuu made their first contribution in #16821
- @freddy1020 made their first contribution in #16823
Full Changelog: 2.4.0...v2.10.0