Skip to content

Update tensorflow to 2.11.0#284

Open
pyup-bot wants to merge 1 commit into
masterfrom
pyup-update-tensorflow-2.5.0-to-2.11.0
Open

Update tensorflow to 2.11.0#284
pyup-bot wants to merge 1 commit into
masterfrom
pyup-update-tensorflow-2.5.0-to-2.11.0

Conversation

@pyup-bot
Copy link
Copy Markdown
Contributor

This PR updates tensorflow from 2.5.0 to 2.11.0.

Changelog

2.11

which means `tf.keras.optimizers.Optimizer` will be an alias of
 `tf.keras.optimizers.experimental.Optimizer`. The current
 `tf.keras.optimizers.Optimizer` will continue to be supported as
 `tf.keras.optimizers.legacy.Optimizer`,
 e.g.,`tf.keras.optimizers.legacy.Adam`. Most users won't be affected by this
 change, but please check the
 [API doc](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/experimental)
 if any API used in your workflow is changed or deprecated, and make
 adaptations. If you decide to keep using the old optimizer, please
 explicitly change your optimizer to `tf.keras.optimizers.legacy.Optimizer`.
*   RNG behavior change for `tf.keras.initializers`. Keras initializers will now
 use stateless random ops to generate random numbers.
 *   Both seeded and unseeded initializers will always generate the same
     values every time they are called (for a given variable shape). For
     unseeded initializers (`seed=None`), a random seed will be created and
     assigned at initializer creation (different initializer instances get
     different seeds).
 *   An unseeded initializer will raise a warning if it is reused (called)
     multiple times. This is because it would produce the same values each
     time, which may not be intended.
*   API changes under `tf.experimental.dtensor`:
 *   New API for initialization of CPU/GPU/TPU in dtensor.
     `dtensor.initialize_accelerator_system` and
     `dtensor.shutdown_accelerator_system`.
 *   The following existing API will be removed:
     `dtensor.initialize_multi_client`, `dtensor.initialize_tpu_system`, and
     `dtensor.shutdown_tpu_system`.

Deprecations

*   The C++ `tensorflow::Code` and `tensorflow::Status` will become aliases of
 respectively `absl::StatusCode` and `absl::Status` in some future release.
 *   Use `tensorflow::OkStatus()` instead of `tensorflow::Status::OK()`.
 *   Stop constructing `Status` objects from `tensorflow::error::Code`.
 *   One MUST NOT access `tensorflow::errors::Code` fields. Accessing
     `tensorflow::error::Code` fields is fine.
     *   Use the constructors such as `tensorflow::errors:InvalidArgument` to
         create status using an error code without accessing it.
     *   Use the free functions such as
         `tensorflow::errors::IsInvalidArgument` if needed.
     *   In the last resort, use
         e.g.`static_cast<tensorflow::errors::Code>(error::Code::INVALID_ARGUMENT)`
         or `static_cast<int>(code)` for comparisons.
*   `tensorflow::StatusOr` will also become in the future an alias to
 `absl::StatusOr`, so use `StatusOr::value` instead of
 `StatusOr::ConsumeValueOrDie`.

Major Features and Improvements

*   `tf.lite`:

 *   New operations supported:
     *   tflite SelectV2 now supports 5D.
     *   `tf.einsum` is supported with multiple unknown shapes.
     *   `tf.unsortedsegmentprod` op is supported.
     *   `tf.unsortedsegmentmax` op is supported.
     *   `tf.unsortedsegmentsum` op is supported.
 *   Updates to existing operations:
     *   `tfl.scatter_nd` now supports I1 for the `update` arg.
 *   Upgrade Flatbuffers v2.0.5 from v1.12.0

*   `tf.keras`:

 *   `EinsumDense` layer is moved from experimental to core. Its import path
     is moved from `tf.keras.layers.experimental.EinsumDense` to
     `tf.keras.layers.EinsumDense`.
 *   Added `tf.keras.utils.audio_dataset_from_directory` utility to easily
     generate audio classification datasets from directories of `.wav` files.
 *   Added `subset="both"` support in
     `tf.keras.utils.image_dataset_from_directory`,`tf.keras.utils.text_dataset_from_directory`,
     and `audio_dataset_from_directory`, to be used with the
     `validation_split` argument, for returning both dataset splits at once,
     as a tuple.
 *   Added `tf.keras.utils.split_dataset` utility to split a `Dataset` object
     or a list/tuple of arrays into two `Dataset` objects (e.g. train/test).
 *   Added step granularity to `BackupAndRestore` callback for handling
     distributed training failures & restarts. The training state can now be
     restored at the exact epoch and step at which it was previously saved
     before failing.
 *   Added
     [`tf.keras.dtensor.experimental.optimizers.AdamW`](https://www.tensorflow.org/api_docs/python/tf/keras/dtensor/experimental/optimizers/AdamW).
     This optimizer is similar to the existing
     [`keras.optimizers.experimental.AdamW`](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/experimental/AdamW),
     and works in the DTensor training use case.
 *   Improved masking support for
     [`tf.keras.layers.MultiHeadAttention`](https://www.tensorflow.org/api_docs/python/tf/keras/layers/MultiHeadAttention).
     *   Implicit masks for `query`, `key` and `value` inputs will
         automatically be used to compute a correct attention mask for the
         layer. These padding masks will be combined with any
         `attention_mask` passed in directly when calling the layer. This can
         be used with
         [`tf.keras.layers.Embedding`](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Embedding)
         with `mask_zero=True` to automatically infer a correct padding mask.
     *   Added a `use_causal_mask` call time argument to the layer. Passing
         `use_causal_mask=True` will compute a causal attention mask, and
         optionally combine it with any `attention_mask` passed in directly
         when calling the layer.
 *   Added `ignore_class` argument in the loss
     `SparseCategoricalCrossentropy` and metrics `IoU` and `MeanIoU`, to
     specify a class index to be ignored during loss/metric computation (e.g.
     a background/void class).
 *   Added
     [`tf.keras.models.experimental.SharpnessAwareMinimization`](https://www.tensorflow.org/api_docs/python/tf/keras/models/experimental/SharpnessAwareMinimization).
     This class implements the sharpness-aware minimization technique, which
     boosts model performance on various tasks, e.g., ResNet on image
     classification.

*   `tf.data`:

 *   Added support for cross-trainer data caching in tf.data service. This
     saves computation resources when concurrent training jobs train from the
     same dataset. See
     (https://www.tensorflow.org/api_docs/python/tf/data/experimental/service#sharing_tfdata_service_with_concurrent_trainers)
     for more details.
 *   Added `dataset_id` to `tf.data.experimental.service.register_dataset`.
     If provided, `tf.data` service will use the provided ID for the dataset.
     If the dataset ID already exists, no new dataset will be registered.
     This is useful if multiple training jobs need to use the same dataset
     for training. In this case, users should call `register_dataset` with
     the same `dataset_id`.
 *   Added a new field, `inject_prefetch`, to
     `tf.data.experimental.OptimizationOptions`. If it is set to
     `True`,`tf.data` will now automatically add a `prefetch` transformation
     to datasets that end in synchronous transformations. This enables data
     generation to be overlapped with data consumption. This may cause a
     small increase in memory usage due to buffering. To enable this
     behavior, set `inject_prefetch=True` in
     `tf.data.experimental.OptimizationOptions`.
 *   Added a new value to `tf.data.Options.autotune.autotune_algorithm`:
     `STAGE_BASED`. If the autotune algorithm is set to `STAGE_BASED`, then
     it runs a new algorithm that can get the same performance with lower
     CPU/memory usage.
 *   Added
     [`tf.data.experimental.from_list`](https://www.tensorflow.org/api_docs/python/tf/data/experimental/from_list),
     a new API for creating `Dataset`s from lists of elements.
 *   Graduated experimental APIs:
     *   [`tf.data.Dataset.counter`](https://www.tensorflow.org/api_docs/python/tf/data/Dataset/#counter),
         which creates `Dataset`s of indefinite sequences of numbers.
     *   [`tf.data.Dataset.ignore_errors`](https://www.tensorflow.org/api_docs/python/tf/data/Dataset/#ignore_errors),
         which drops erroneous elements from `Dataset`s.
 *   Added
     [`tf.data.Dataset.rebatch`](https://www.tensorflow.org/api_docs/python/tf/data/Dataset#rebatch),
     a new API for rebatching the elements of a dataset.

*   `tf.distribute`:

 *   Added
     [`tf.distribute.experimental.PreemptionCheckpointHandler`](https://www.tensorflow.org/api_docs/python/tf/distribute/experimental/PreemptionCheckpointHandler)
     to handle worker preemption/maintenance and cluster-wise consistent
     error reporting for `tf.distribute.MultiWorkerMirroredStrategy`.
     Specifically, for the type of interruption with advance notice, it
     automatically saves a checkpoint, exits the program without raising an
     unrecoverable error, and restores the progress when training restarts.

*   `tf.math`:

 *   Added `tf.math.approx_max_k` and `tf.math.approx_min_k` which are the
     optimized alternatives to `tf.math.top_k` on TPU. The performance
     difference ranges from 8 to 100 times depending on the size of k. When
     running on CPU and GPU, a non-optimized XLA kernel is used.

*   `tf.train`:

 *   Added `tf.train.TrackableView` which allows users to inspect the
     TensorFlow Trackable object (e.g. `tf.Module`, Keras Layers and models).

*   `tf.vectorized_map`:

 *   Added an optional parameter: `warn`. This parameter controls whether or
     not warnings will be printed when operations in the provided `fn` fall
     back to a while loop.

*   XLA:

 *   `tf.distribute.MultiWorkerMirroredStrategy` is now compilable with XLA.
 *   [Compute Library for the Arm® Architecture (ACL)](https://github.com/ARM-software/ComputeLibrary)
     is supported for aarch64 CPU XLA runtime

*   CPU performance optimizations:

 *   **x86 CPUs**:
     [oneDNN](https://github.com/tensorflow/community/blob/master/rfcs/20210930-enable-onednn-ops.md)
     bfloat16 auto-mixed precision grappler graph optimization pass has been
     renamed from `auto_mixed_precision_mkl` to
     `auto_mixed_precision_onednn_bfloat16`. See example usage
     [here](https://www.intel.com/content/www/us/en/developer/articles/guide/getting-started-with-automixedprecisionmkl.html).
 *   **aarch64 CPUs:** Experimental performance optimizations from
     [Compute Library for the Arm® Architecture (ACL)](https://github.com/ARM-software/ComputeLibrary)
     are available through oneDNN in the default Linux aarch64 package (`pip
     install tensorflow`).
     *   The optimizations are disabled by default.
     *   Set the environment variable `TF_ENABLE_ONEDNN_OPTS=1` to enable the
         optimizations. Setting the variable to 0 or unsetting it will
         disable the optimizations.
     *   These optimizations can yield slightly different numerical results
         from when they are off due to floating-point round-off errors from
         different computation approaches and orders.
     *   To verify that the optimizations are on, look for a message with
         "*oneDNN custom operations are on*" in the log. If the exact phrase
         is not there, it means they are off.

Bug Fixes and Other Changes

*   New argument `experimental_device_ordinal` in `LogicalDeviceConfiguration`
 to control the order of logical devices (GPU only).

*   `tf.keras`:

 *   Changed the TensorBoard tag names produced by the
     `tf.keras.callbacks.TensorBoard` callback, so that summaries logged
     automatically for model weights now include either a `/histogram` or
     `/image` suffix in their tag names, in order to prevent tag name
     collisions across summary types.

*   When running on GPU (with cuDNN version 7.6.3 or
 later),`tf.nn.depthwise_conv2d` backprop to `filter` (and therefore also
 `tf.keras.layers.DepthwiseConv2D`) now operate deterministically (and
 `tf.errors.UnimplementedError` is no longer thrown) when op-determinism has
 been enabled via `tf.config.experimental.enable_op_determinism`. This closes
 issue [47174](https://github.com/tensorflow/tensorflow/issues/47174).

*   `tf.random`

 *   Added `tf.random.experimental.stateless_shuffle`, a stateless version of
     `tf.random.shuffle`.

Security

*   Fixes a `CHECK` failure in tf.reshape caused by overflows ([CVE-2022-35934](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35934))
*   Fixes a `CHECK` failure in `SobolSample` caused by missing validation ([CVE-2022-35935](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35935))
*   Fixes an OOB read in `Gather_nd` op in TF Lite ([CVE-2022-35937](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35937))
*   Fixes a `CHECK` failure in `TensorListReserve` caused by missing validation ([CVE-2022-35960](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35960))
*   Fixes an OOB write in `Scatter_nd` op in TF Lite ([CVE-2022-35939](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35939))
*   Fixes an integer overflow in `RaggedRangeOp` ([CVE-2022-35940](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35940))
*   Fixes a `CHECK` failure in `AvgPoolOp` ([CVE-2022-35941](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35941))
*   Fixes a `CHECK` failures in `UnbatchGradOp` ([CVE-2022-35952](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35952))
*   Fixes a segfault TFLite converter on per-channel quantized transposed convolutions ([CVE-2022-36027](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36027))
*   Fixes a `CHECK` failures in `AvgPool3DGrad` ([CVE-2022-35959](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35959))
*   Fixes a `CHECK` failures in `FractionalAvgPoolGrad` ([CVE-2022-35963](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35963))
*   Fixes a segfault in `BlockLSTMGradV2` ([CVE-2022-35964](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35964))
*   Fixes a segfault in `LowerBound` and `UpperBound` ([CVE-2022-35965](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35965))
*   Fixes a segfault in `QuantizedAvgPool` ([CVE-2022-35966](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35966))
*   Fixes a segfault in `QuantizedAdd` ([CVE-2022-35967](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35967))
*   Fixes a `CHECK` fail in `AvgPoolGrad` ([CVE-2022-35968](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35968))
*   Fixes a `CHECK` fail in `Conv2DBackpropInput` ([CVE-2022-35969](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35969))
*   Fixes a segfault in `QuantizedInstanceNorm` ([CVE-2022-35970](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35970))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVars` ([CVE-2022-35971](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35971))
*   Fixes a segfault in `Requantize` ([CVE-2022-36017](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36017))
*   Fixes a segfault in `QuantizedBiasAdd` ([CVE-2022-35972](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35972))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVarsPerChannel` ([CVE-2022-36019](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36019))
*   Fixes a segfault in `QuantizedMatMul` ([CVE-2022-35973](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35973))
*   Fixes a segfault in `QuantizeDownAndShrinkRange` ([CVE-2022-35974](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35974))
*   Fixes segfaults in `QuantizedRelu` and `QuantizedRelu6` ([CVE-2022-35979](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35979))
*   Fixes a `CHECK` fail in `FractionalMaxPoolGrad` ([CVE-2022-35981](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35981))
*   Fixes a `CHECK` fail in `RaggedTensorToVariant` ([CVE-2022-36018](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36018))
*   Fixes a `CHECK` fail in `QuantizeAndDequantizeV3` ([CVE-2022-36026](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36026))
*   Fixes a segfault in `SparseBincount` ([CVE-2022-35982](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35982))
*   Fixes a `CHECK` fail in `Save` and `SaveSlices` ([CVE-2022-35983](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35983))
*   Fixes a `CHECK` fail in `ParameterizedTruncatedNormal` ([CVE-2022-35984](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35984))
*   Fixes a `CHECK` fail in `LRNGrad` ([CVE-2022-35985](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35985))
*   Fixes a segfault in `RaggedBincount` ([CVE-2022-35986](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35986))
*   Fixes a `CHECK` fail in `DenseBincount` ([CVE-2022-35987](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35987))
*   Fixes a `CHECK` fail in `tf.linalg.matrix_rank` ([CVE-2022-35988](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35988))
*   Fixes a `CHECK` fail in `MaxPool` ([CVE-2022-35989](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35989))
*   Fixes a `CHECK` fail in `Conv2DBackpropInput` ([CVE-2022-35999](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35999))
*   Fixes a `CHECK` fail in `EmptyTensorList` ([CVE-2022-35998](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35998))
*   Fixes a `CHECK` fail in `tf.sparse.cross` ([CVE-2022-35997](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35997))
*   Fixes a floating point exception in `Conv2D` ([CVE-2022-35996](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35996))
*   Fixes a `CHECK` fail in `AudioSummaryV2` ([CVE-2022-35995](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35995))
*   Fixes a `CHECK` fail in `CollectiveGather` ([CVE-2022-35994](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35994))
*   Fixes a `CHECK` fail in `SetSize` ([CVE-2022-35993](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35993))
*   Fixes a `CHECK` fail in `TensorListFromTensor` ([CVE-2022-35992](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35992))
*   Fixes a `CHECK` fail in `TensorListScatter` and `TensorListScatterV2` ([CVE-2022-35991](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35991))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVarsPerChannelGradient` ([CVE-2022-35990](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35990))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVarsGradient` ([CVE-2022-36005](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36005))
*   Fixes a `CHECK` fail in `tf.random.gamma` ([CVE-2022-36004](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36004))
*   Fixes a `CHECK` fail in `RandomPoissonV2` ([CVE-2022-36003](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36003))
*   Fixes a `CHECK` fail in `Unbatch` ([CVE-2022-36002](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36002))
*   Fixes a `CHECK` fail in `DrawBoundingBoxes` ([CVE-2022-36001](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36001))
*   Fixes a `CHECK` fail in `Eig` ([CVE-2022-36000](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36000))
*   Fixes a null dereference on MLIR on empty function attributes ([CVE-2022-36011](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36011))
*   Fixes an assertion failure on MLIR empty edge names ([CVE-2022-36012](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36012))
*   Fixes a null-dereference in `mlir::tfg::GraphDefImporter::ConvertNodeDef` ([CVE-2022-36013](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36013))
*   Fixes a null-dereference in `mlir::tfg::TFOp::nameAttr` ([CVE-2022-36014](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36014))
*   Fixes an integer overflow in math ops ([CVE-2022-36015](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36015))
*   Fixes a `CHECK`-fail in `tensorflow::full_type::SubstituteFromAttrs` ([CVE-2022-36016](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36016))
*   Fixes an OOB read in `Gather_nd` op in TF Lite Micro ([CVE-2022-35938](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35938))

Thanks to our Contributors

This release contains contributions from many people at Google, as well as:

Abolfazl Shahbazi, Adam Lanicek, Amin Benarieb, andreii, Andrew Fitzgibbon, Andrew Goodbody, angerson, Ashiq Imran, Aurélien Geron, Banikumar Maiti (Intel Aipg), Ben Barsdell, Ben Mares, bhack, Bhavani Subramanian, Bill Schnurr, Byungsoo Oh, Chandra Sr Potula, Chengji Yao, Chris Carpita, Christopher Bate, chunduriv, Cliff Woolley, Cliffs Dover, Cloud Han, Code-Review-Doctor, DEKHTIARJonathan, Deven Desai, Djacon, Duncan Riach, fedotoff, fo40225, Frederic Bastien, gadagashwini, Gauri1 Deshpande, guozhong.zhuang, Hui Peng, James Gerity, Jason Furmanek, Jonathan Dekhtiar, Jueon Park, Kaixi Hou, Kanvi Khanna, Keith Smiley, Koan-Sin Tan, Kulin Seth, kushanam, Learning-To-Play, Li-Wen Chang, lipracer, liuyuanqiang, Louis Sugy, Lucas David, Lukas Geiger, Mahmoud Abuzaina, Marius Brehler, Maxiwell S. Garcia, mdfaijul, Meenakshi Venkataraman, Michal Szutenberg, Michele Di Giorgio, Mickaël Salamin, Nathan John Sircombe, Nathan Luehr, Neil Girdhar, Nils Reichardt, Nishidha Panpaliya, Nobuo Tsukamoto, Om Thakkar, Patrice Vignola, Philipp Hack, Pooya Jannaty, Prianka Liz Kariat, pshiko, Rajeshwar Reddy T, rdl4199, Rohit Santhanam, Rsanthanam-Amd, Sachin Muradi, Saoirse Stewart, Serge Panev, Shu Wang, Srinivasan Narayanamoorthy, Stella Stamenova, Stephan Hartmann, Sunita Nadampalli, synandi, Tamas Bela Feher, Tao Xu, Thibaut Goetghebuer-Planchon, Trevor Morris, Xiaoming (Jason) Cui, Yimei Sun, Yong Tang, Yuanqiang Liu, Yulv-Git, Zhoulong Jiang, ZihengJiang

2.11.0

<INSERT SMALL BLURB ABOUT RELEASE FOCUS AREA AND POTENTIAL TOOLCHAIN CHANGES>

* `StatusOr::ConsumeValueOrDie` and `StatusOr::ValueOrDie`, both deprecated in
TF 2.10 has been removed.
* `Status::OK` static constructor has been removed. Use `OkStatus()` or
`Status()` (backward compatible) instead.


Breaking Changes
*   `tf.keras.optimizers.Optimizer` now points to the new Keras optimizer, and
 old optimizers have moved to the `tf.keras.optimizers.legacy` namespace.
 If you find your workflow failing due to this change,
 you may be facing one of the following issues:

 *   **Checkpoint loading failure.** The new optimizer handles optimizer
     state differently from the old optimizer, which simplies the logic of
     checkpoint saving/loading, but at the cost of breaking checkpoint
     backward compatibility in some cases. If you want to keep using an old
     checkpoint, please change your optimizer to
     `tf.keras.optimizers.legacy.XXX` (e.g.
     `tf.keras.optimizers.legacy.Adam`).
 *   **TF1 compatibility.** The new optimizer does not support TF1 any more,
     so please use the legacy optimizer `tf.keras.optimizer.legacy.XXX`.
     We highly recommend to migrate your workflow to TF2 for stable
     support and new features.
 *   **API not found.** The new optimizer has a different set of public APIs
     from the old optimizer. These API changes are mostly related to
     getting rid of slot variables and TF1 support. Please check the API
     documentation to find alternatives to the missing API. If you must
     call the deprecated API, please change your optimizer to the legacy
     optimizer.
 *   **Learning rate schedule access.** When using a `LearningRateSchedule`,
     The new optimizer's `learning_rate` property returns the
     current learning rate value instead of a `LearningRateSchedule` object
     as before. If you need to access the `LearningRateSchedule` object,
     please use `optimizer._learning_rate`.
 *   **You implemented a custom optimizer based on the old optimizer.**
     Please set your optimizer to subclass
     `tf.keras.optimizer.legacy.XXX`. If you want to migrate to the new
     optimizer and find it does not support your optimizer, please file
     an issue in the Keras GitHub repo.
 *   **Error such as `Cannot recognize variable...`.** The new optimizer
     requires all optimizer variables to be created at the first
     `apply_gradients()` or `minimize()` call. If your workflow calls
     optimizer to update different parts of model in multiple stages,
     please call `optimizer.build(model.trainable_variables)` before the
     training loop.
 *   **Performance regression on `ParameterServerStrategy`.** This could be
     significant if you have many PS servers. We are aware of this issue and
     working on fixes, for now we suggest using the legacy optimizers when
     using `ParameterServerStrategy`.
 *   **Timeout or performance loss.** We don't anticipate this to happen, but
     if you see such issues, please use the legacy optimizer, and file
     an issue in the Keras GitHub repo.

 The old Keras optimizer will never be deleted, but will not see any
 new feature additions.
 New optimizers (e.g., `Adafactor`) will
 only be implemented based on `tf.keras.optimizers.Optimizer`, the new
 base class.

Known Caveats

* <CAVEATS REGARDING THE RELEASE (BUT NOT BREAKING CHANGES).>
* <ADDING/BUMPING DEPENDENCIES SHOULD GO HERE>
* <KNOWN LACK OF SUPPORT ON SOME PLATFORM, SHOULD GO HERE>

Major Features and Improvements

*   `tf.lite`:

 *   New operations supported:
       * tf.unsortedsegmentmin op is supported.
       * tf.atan2 op is supported.
       * tf.sign op is supported.
 *   Updates to existing operations:
       * tfl.mul now supports complex32 inputs.

*   `tf.experimental.StructuredTensor`

 *   Introduced `tf.experimental.StructuredTensor`, which provides a flexible
     and Tensorflow-native way to encode structured data such as protocol
     buffers or pandas dataframes.

*   `tf.keras`:

 *   Added method `get_metrics_result()` to `tf.keras.models.Model`.
     *   Returns the current metrics values of the model as a dict.
 *   Added group normalization layer `tf.keras.layers.GroupNormalization`.
 *   Added weight decay support for all Keras optimizers.
 *   Added Adafactor optimizer `tf.keras.optimizers.Adafactor`.
 *   Added `warmstart_embedding_matrix` to `tf.keras.utils`.
     This utility can be used to warmstart an embeddings matrix so you
     reuse previously-learned word embeddings when working with a new set
     of words which may include previously unseen words (the embedding
     vectors for unseen words will be randomly initialized).

*   `tf.Variable`:

 *   Added `CompositeTensor` as a baseclass to `ResourceVariable`. This
     allows `tf.Variable`s to be nested in `tf.experimental.ExtensionType`s.
 *   Added a new constructor argument `experimental_enable_variable_lifting`
     to `tf.Variable`, defaulting to True. When it's `False`, the variable
     won't be lifted out of `tf.function`, thus it can be used as a
     `tf.function`-local variable: during each execution of the
     `tf.function`, the variable will be created and then disposed, similar
     to a local (i.e. stack-allocated) variable in C/C++. Currently
     `experimental_enable_variable_lifting=False` only works on non-XLA
     devices (e.g. under `tf.function(jit_compile=False)`).

*   TF SavedModel:
 *   Added `fingerprint.pb` to the SavedModel directory. The `fingerprint.pb`
     file is a protobuf containing the "fingerprint" of the SavedModel. See
     the [RFC](https://github.com/tensorflow/community/pull/415) for more
     details regarding its design and properties.

*   `tf.data`:
 *   Graduated experimental APIs:
     * [`tf.data.Dataset.ragged_batch`](https://www.tensorflow.org/api_docs/python/tf/data/Dataset/#ragged_batch), which batches elements of `tf.data.Dataset`s into `tf.RaggedTensor`s.
     * [`tf.data.Dataset.sparse_batch`](https://www.tensorflow.org/api_docs/python/tf/data/Dataset/#sparse_batch), which batches elements of `tf.data.Dataset`s into `tf.sparse.SparseTensor`s.

Bug Fixes and Other Changes

*   `tf.image`
 *   Added an optional parameter `return_index_map` to `tf.image.ssim` which
     causes the returned value to be the local SSIM map instead of the global
     mean.

*   TF Core:

 *   `tf.custom_gradient` can now be applied to functions that accept
     "composite" tensors, such as `tf.RaggedTensor`, as inputs.
 *   Fix device placement issues related to datasets with ragged tensors of
     strings (i.e. variant encoded data with types not supported on GPU).
 *   'experimental_follow_type_hints' for tf.function has been deprecated.
     Please use input_signature or reduce_retracing to minimize retracing.

*   `tf.SparseTensor`:
 *   Introduced `set_shape`, which sets the static dense shape of the sparse tensor and has the same semantics as `tf.Tensor.set_shape`.

Thanks to our Contributors

This release contains contributions from many people at Google, as well as:

<INSERT>, <NAME>, <HERE>, <USING>, <GITHUB>, <HANDLE>

2.10.0

Breaking Changes

*   Causal attention in `keras.layers.Attention` and
 `keras.layers.AdditiveAttention` is now specified in the `call()` method via
 the `use_causal_mask` argument (rather than in the constructor), for
 consistency with other layers.
*   Some files in `tensorflow/python/training` have been moved to
 `tensorflow/python/tracking` and `tensorflow/python/checkpoint`. Please
 update your imports accordingly, the old files will be removed in Release
 2.11.

2.9.2

This releases introduces several vulnerability fixes:

*   Fixes a `CHECK` failure in tf.reshape caused by overflows ([CVE-2022-35934](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35934))
*   Fixes a `CHECK` failure in `SobolSample` caused by missing validation ([CVE-2022-35935](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35935))
*   Fixes an OOB read in `Gather_nd` op in TF Lite ([CVE-2022-35937](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35937))
*   Fixes a `CHECK` failure in `TensorListReserve` caused by missing validation ([CVE-2022-35960](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35960))
*   Fixes an OOB write in `Scatter_nd` op in TF Lite ([CVE-2022-35939](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35939))
*   Fixes an integer overflow in `RaggedRangeOp` ([CVE-2022-35940](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35940))
*   Fixes a `CHECK` failure in `AvgPoolOp` ([CVE-2022-35941](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35941))
*   Fixes a `CHECK` failures in `UnbatchGradOp` ([CVE-2022-35952](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35952))
*   Fixes a segfault TFLite converter on per-channel quantized transposed convolutions ([CVE-2022-36027](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36027))
*   Fixes a `CHECK` failures in `AvgPool3DGrad` ([CVE-2022-35959](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35959))
*   Fixes a `CHECK` failures in `FractionalAvgPoolGrad` ([CVE-2022-35963](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35963))
*   Fixes a segfault in `BlockLSTMGradV2` ([CVE-2022-35964](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35964))
*   Fixes a segfault in `LowerBound` and `UpperBound` ([CVE-2022-35965](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35965))
*   Fixes a segfault in `QuantizedAvgPool` ([CVE-2022-35966](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35966))
*   Fixes a segfault in `QuantizedAdd` ([CVE-2022-35967](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35967))
*   Fixes a `CHECK` fail in `AvgPoolGrad` ([CVE-2022-35968](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35968))
*   Fixes a `CHECK` fail in `Conv2DBackpropInput` ([CVE-2022-35969](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35969))
*   Fixes a segfault in `QuantizedInstanceNorm` ([CVE-2022-35970](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35970))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVars` ([CVE-2022-35971](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35971))
*   Fixes a segfault in `Requantize` ([CVE-2022-36017](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36017))
*   Fixes a segfault in `QuantizedBiasAdd` ([CVE-2022-35972](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35972))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVarsPerChannel` ([CVE-2022-36019](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36019))
*   Fixes a segfault in `QuantizedMatMul` ([CVE-2022-35973](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35973))
*   Fixes a segfault in `QuantizeDownAndShrinkRange` ([CVE-2022-35974](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35974))
*   Fixes segfaults in `QuantizedRelu` and `QuantizedRelu6` ([CVE-2022-35979](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35979))
*   Fixes a `CHECK` fail in `FractionalMaxPoolGrad` ([CVE-2022-35981](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35981))
*   Fixes a `CHECK` fail in `RaggedTensorToVariant` ([CVE-2022-36018](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36018))
*   Fixes a `CHECK` fail in `QuantizeAndDequantizeV3` ([CVE-2022-36026](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36026))
*   Fixes a segfault in `SparseBincount` ([CVE-2022-35982](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35982))
*   Fixes a `CHECK` fail in `Save` and `SaveSlices` ([CVE-2022-35983](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35983))
*   Fixes a `CHECK` fail in `ParameterizedTruncatedNormal` ([CVE-2022-35984](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35984))
*   Fixes a `CHECK` fail in `LRNGrad` ([CVE-2022-35985](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35985))
*   Fixes a segfault in `RaggedBincount` ([CVE-2022-35986](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35986))
*   Fixes a `CHECK` fail in `DenseBincount` ([CVE-2022-35987](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35987))
*   Fixes a `CHECK` fail in `tf.linalg.matrix_rank` ([CVE-2022-35988](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35988))
*   Fixes a `CHECK` fail in `MaxPool` ([CVE-2022-35989](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35989))
*   Fixes a `CHECK` fail in `Conv2DBackpropInput` ([CVE-2022-35999](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35999))
*   Fixes a `CHECK` fail in `EmptyTensorList` ([CVE-2022-35998](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35998))
*   Fixes a `CHECK` fail in `tf.sparse.cross` ([CVE-2022-35997](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35997))
*   Fixes a floating point exception in `Conv2D` ([CVE-2022-35996](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35996))
*   Fixes a `CHECK` fail in `AudioSummaryV2` ([CVE-2022-35995](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35995))
*   Fixes a `CHECK` fail in `CollectiveGather` ([CVE-2022-35994](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35994))
*   Fixes a `CHECK` fail in `SetSize` ([CVE-2022-35993](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35993))
*   Fixes a `CHECK` fail in `TensorListFromTensor` ([CVE-2022-35992](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35992))
*   Fixes a `CHECK` fail in `TensorListScatter` and `TensorListScatterV2` ([CVE-2022-35991](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35991))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVarsPerChannelGradient` ([CVE-2022-35990](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35990))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVarsGradient` ([CVE-2022-36005](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36005))
*   Fixes a `CHECK` fail in `tf.random.gamma` ([CVE-2022-36004](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36004))
*   Fixes a `CHECK` fail in `RandomPoissonV2` ([CVE-2022-36003](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36003))
*   Fixes a `CHECK` fail in `Unbatch` ([CVE-2022-36002](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36002))
*   Fixes a `CHECK` fail in `DrawBoundingBoxes` ([CVE-2022-36001](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36001))
*   Fixes a `CHECK` fail in `Eig` ([CVE-2022-36000](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36000))
*   Fixes a null dereference on MLIR on empty function attributes ([CVE-2022-36011](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36011))
*   Fixes an assertion failure on MLIR empty edge names ([CVE-2022-36012](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36012))
*   Fixes a null-dereference in `mlir::tfg::GraphDefImporter::ConvertNodeDef` ([CVE-2022-36013](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36013))
*   Fixes a null-dereference in `mlir::tfg::TFOp::nameAttr` ([CVE-2022-36014](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36014))
*   Fixes an integer overflow in math ops ([CVE-2022-36015](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36015))
*   Fixes a `CHECK`-fail in `tensorflow::full_type::SubstituteFromAttrs` ([CVE-2022-36016](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36016))
*   Fixes an OOB read in `Gather_nd` op in TF Lite Micro ([CVE-2022-35938](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35938))

2.9.1

Add an upper bound for `protobuf` in `setup.py` since `protobuf` after version 3.20 is currently incompatible with TensorFlow. See https://github.com/tensorflow/tensorflow/issues/53234, https://github.com/protocolbuffers/protobuf/issues/9954 and https://github.com/tensorflow/tensorflow/issues/56077.

2.9.0

Breaking Changes

*   Due to security issues in TF 2.8, all boosted trees code has now been removed (after being deprecated in TF 2.8). Users should switch to [TensorFlow Decision Forests](https://github.com/tensorflow/decision-forests).
*   Build, Compilation and Packaging
 * TensorFlow is now compiled with `_GLIBCXX_USE_CXX11_ABI=1`. Downstream projects that encounter `std::__cxx11` or `[abi:cxx11]` linker errors will need to adopt this compiler option. See [the GNU C++ Library docs on Dual ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html).
 * TensorFlow Python wheels now specifically conform to [manylinux2014](https://peps.python.org/pep-0599/), an upgrade from manylinux2010. The minimum Pip version supporting manylinux2014 is Pip 19.3 (see [pypa/manylinux](https://github.com/pypa/manylinux). This change may affect you if you have been using TensorFlow on a very old platform equivalent to CentOS 6, as manylinux2014 targets CentOS 7 as a compatibility base. Note that TensorFlow does not officially support either platform.
 * Discussion for these changes can be found on SIG Build's [TensorFlow Community Forum thread](https://discuss.tensorflow.org/t/tensorflow-linux-wheels-are-being-upgraded-to-manylinux2014/8339)
*   The `tf.keras.mixed_precision.experimental` API has been removed. The non-experimental symbols under `tf.keras.mixed_precision` have been available since TensorFlow 2.4 and should be used instead.
 * The non-experimental API has some minor differences from the experimental API. In most cases, you only need to make three minor changes:
   * Remove the word "experimental" from `tf.keras.mixed_precision` symbols. E.g., replace `tf.keras.mixed_precision.experimental.global_policy` with `tf.keras.mixed_precision.global_policy`.
   * Replace `tf.keras.mixed_precision.experimental.set_policy` with `tf.keras.mixed_precision.set_global_policy`. The experimental symbol `set_policy` was renamed to `set_global_policy` in the non-experimental API.
   * Replace `LossScaleOptimizer(opt, "dynamic")` with `LossScaleOptimizer(opt)`. If you pass anything other than `"dynamic"` to the second argument, see (1) of the next section.
 * In the following rare cases, you need to make more changes when switching to the non-experimental API:
   * If you passed anything other than `"dynamic"` to the `loss_scale` argument (the second argument) of `LossScaleOptimizer`:
       * The LossScaleOptimizer constructor takes in different arguments. See the [TF 2.7 documentation of tf.keras.mixed_precision.experimental.LossScaleOptimizer](https://www.tensorflow.org/versions/r2.7/api_docs/python/tf/keras/mixed_precision/experimental/LossScaleOptimizer) for details on the differences, which has examples on how to convert to the non-experimental LossScaleOptimizer.
   * If you passed a value to the `loss_scale` argument (the second argument) of `Policy`:
       * The experimental version of `Policy` optionally took in a `tf.compat.v1.mixed_precision.LossScale` in the constructor, which defaulted to a dynamic loss scale for the `"mixed_float16"` policy and no loss scale for other policies. In `Model.compile`, if the model's policy had a loss scale, the optimizer would be wrapped with a `LossScaleOptimizer`. With the non-experimental `Policy`, there is no loss scale associated with the `Policy`, and `Model.compile` wraps the optimizer with a `LossScaleOptimizer` if and only if the policy is a `"mixed_float16"` policy. If you previously passed a `LossScale` to the experimental `Policy`, consider just removing it, as the default loss scaling behavior is usually what you want. If you really want to customize the loss scaling behavior, you can wrap your optimizer with a `LossScaleOptimizer` before passing it to `Model.compile`.
   * If you use the very rarely-used function `tf.keras.mixed_precision.experimental.get_layer_policy`:
       * Replace `tf.keras.mixed_precision.experimental.get_layer_policy(layer)` with `layer.dtype_policy`.
* `tf.mixed_precision.experimental.LossScale` and its subclasses have been removed from the TF2 namespace. This symbols were very rarely used and were only useful in TF2 for use in the now-removed `tf.keras.mixed_precision.experimental` API. The symbols are still available under `tf.compat.v1.mixed_precision`.
* The `experimental_relax_shapes` heuristic for `tf.function` has been deprecated and replaced with `reduce_retracing` which encompasses broader heuristics to reduce the number of retraces (see below)

Major Features and Improvements

*   `tf.keras`:

 *   Added `tf.keras.applications.resnet_rs` models. This includes the
     `ResNetRS50`, `ResNetRS101`, `ResNetRS152`, `ResNetRS200`,
     `ResNetRS270`, `ResNetRS350` and `ResNetRS420` model architectures. The
     ResNetRS models are based on the architecture described in
     [Revisiting ResNets: Improved Training and Scaling Strategies](https://arxiv.org/pdf/2103.07579.pdf)
 *   Added `tf.keras.optimizers.experimental.Optimizer`. The reworked
     optimizer gives more control over different phases of optimizer calls,
     and is easier to customize. We provide Adam, SGD, Adadelta, AdaGrad and
     RMSprop optimizers based on
     `tf.keras.optimizers.experimental.Optimizer`. Generally the new
     optimizers work in the same way as the old ones, but support new
     constructor arguments. In the future, the symbols
     `tf.keras.optimizers.Optimizer`/`Adam`/etc will point to the new
     optimizers, and the previous generation of optimizers will be moved to
     `tf.keras.optimizers.legacy.Optimizer`/`Adam`/etc.
 *   Added L2 unit normalization layer `tf.keras.layers.UnitNormalization`.
 *   Added `tf.keras.regularizers.OrthogonalRegularizer`, a new regularizer
     that encourages orthogonality between the rows (or columns) or a weight
     matrix.
 *   Added `tf.keras.layers.RandomBrightness` layer for image preprocessing.
 *   Added APIs for switching between interactive logging and absl logging.
     By default, Keras always writes the logs to stdout. However, this is not
     optimal in a non-interactive environment, where you don't have access to
     stdout, but can only view the logs. You can use
     `tf.keras.utils.disable_interactive_logging()` to write the logs to ABSL
     logging. You can also use `tf.keras.utils.enable_interactive_logging()`
     to change it back to stdout, or
     `tf.keras.utils.is_interactive_logging_enabled()` to check if
     interactive logging is enabled.
 *   Changed default value for the `verbose` argument of `Model.evaluate()`
     and `Model.predict()` to `"auto"`, which defaults to `verbose=1` for
     most cases and defaults to `verbose=2` when used with
     `ParameterServerStrategy` or with interactive logging disabled.
 *   Argument `jit_compile` in `Model.compile()` now applies to
     `Model.evaluate()` and `Model.predict()`. Setting `jit_compile=True` in
     `compile()` compiles the model's training, evaluation, and inference
     steps to [XLA](https://www.tensorflow.org/xla). Note that
     `jit_compile=True` may not necessarily work for all models.
 *   Added DTensor-related Keras APIs under `tf.keras.dtensor` namespace. The
     APIs are still classified as experimental. You are welcome to try it
     out. Please check the tutorial and guide on https://www.tensorflow.org/
     for more details about DTensor.

*   `tf.lite`:

 *   Added TFLite builtin op support for the following TF ops:
     *   `tf.math.argmin`/`tf.math.argmax` for input data type `tf.bool` on
         CPU.
     *   `tf.nn.gelu` op for output data type `tf.float32` and quantization
         on CPU.
 *   Add nominal support for unsigned 16-bit integer tensor types. Note that
     very few TFLite kernels support this type natively, so its use in mobile
     ML authoring is generally discouraged.
 *   Add support for unsigned 16-bit integer tensor types in cast op.
 *   Experimental support for lowering `list_ops.tensor_list_set_item` with
     `DynamicUpdateSlice`.
 *   Enabled a new MLIR-based dynamic range quantization backend by default
     *   The new backend is used for post-training int8 dynamic range
         quantization and post-training float16 quantization.
     *   Set `experimental_new_dynamic_range_quantizer` in
         tf.lite.TFLiteConverter to False to disable this change
 *   Native TF Lite variables are now enabled during conversion by default on
     all v2 TfLiteConverter entry points.
     `experimental_enable_resource_variables` on tf.lite.TFLiteConverter is
     now True by default and will be removed in the future.

*   `tf.function`:

 *   Custom classes used as arguments for `tf.function` can now specify rules
     regarding when retracing needs to occur by implementing the Tracing
     Protocol available through
     `tf.types.experimental.SupportsTracingProtocol`.
 *   `TypeSpec` classes (as associated with `ExtensionTypes`) also implement
     the Tracing Protocol which can be overridden if necessary.
 *   The newly introduced `reduce_retracing` option also uses the Tracing
     Protocol to proactively generate generalized traces similar to
     `experimental_relax_shapes` (which has now been deprecated).

*   Unified eager and `tf.function` execution:

 *   Eager mode can now execute each op as a `tf.function`, allowing for more
     consistent feature support in future releases.
 *   It is available for immediate use.
     *   See the `TF_RUN_EAGER_OP_AS_FUNCTION` environment variable in
         [eager context](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/eager/context.py).
     *   Eager performance should be similar with this feature enabled.
         *   A roughly 5us per-op overhead may be observed when running many
             small functions.
         *   Note a
             [known issue](https://github.com/tensorflow/tensorflow/issues/55414)
             with GPU performance.
     *   The behavior of `tf.function` itself is unaffected.
 *   Note: This feature will be enabled by default in an upcoming version of
     TensorFlow.

*   `tf.experimental.dtensor`: Added DTensor, an extension to TensorFlow for
 large-scale modeling with minimal changes to user code. You are welcome to
 try it out, though be aware that the DTensor API is experimental and up-to
 backward-incompatible changes. DTensor and Keras integration is published
 under `tf.keras.dtensor` in this release (refer to the `tf.keras` entry).
 The tutoral and guide for DTensor will be published on
 https://www.tensorflow.org/. Please stay tuned.

*   [oneDNN CPU performance optimizations](https://github.com/tensorflow/community/blob/master/rfcs/20210930-enable-onednn-ops.md)
 are available in Linux x86, Windows x86, and Linux aarch64 packages.

 *   **Linux x86 packages:**
     *   oneDNN optimizations are *enabled by default* on CPUs with
         neural-network-focused hardware features such as AVX512_VNNI,
         AVX512_BF16, AMX, etc.
         ([Intel Cascade Lake](https://www.intel.com/content/www/us/en/products/platforms/details/cascade-lake.html)
         and newer CPUs.)
         *   [Example performance speedups.](https://medium.com/intel-analytics-software/leverage-intel-deep-learning-optimizations-in-tensorflow-129faa80ee07)
     *   For older CPUs, oneDNN optimizations are disabled by default.
 *   **Windows x86 package:** oneDNN optimizations are disabled by default.
 *   **Linux aach64 (`--config=mkl_aarch64`) package:**
     *   Experimental oneDNN optimizations are disabled by default.
     *   If you experience issues with oneDNN optimizations on, we recommend
         turning them off.
 *   To explicitly enable or disable oneDNN optimizations, set the
     environment variable `TF_ENABLE_ONEDNN_OPTS` to `1` (enable) or `0`
     (disable) before running TensorFlow. (The variable is checked during
     `import tensorflow`.) To fall back to default settings, unset the
     environment variable.
 *   These optimizations can yield slightly different numerical results from
     when they are off due to floating-point round-off errors from different
     computation approaches and orders.
 *   To verify that the optimizations are on, look for a message with
     *"oneDNN custom operations are on"* in the log. If the exact phrase is
     not there, it means they are off.

Bug Fixes and Other Changes

*   `tf.data`:
 *   Fixed bug in `tf.data.experimental.parse_example_dataset` when `tf.io.RaggedFeatures` would specify `value_key` but no `partitions`. Before the fix, setting `value_key` but no `partitions` would result in the feature key being replaced by the value key, e.g. `{'value_key': <RaggedTensor>}` instead of `{'key': <RaggedTensor>}`. Now the correct feature key will be used. This aligns the behavior of `tf.data.experimental.parse_example_dataset` to match the behavior of `tf.io.parse_example`.
 *   Added a new field, `filter_parallelization`, to `tf.data.experimental.OptimizationOptions`. If it is set to `True`, tf.data will run `Filter` transformation with multiple threads. Its default value is `False` if not specified.

*   `tf.keras`:
 *   Fixed bug in optimizers that prevented them from properly checkpointing slot variables when they are `ShardedVariable`s (used for training with `tf.distribute.experimental.ParameterServerStrategy`).

*   `tf.random`:
 * Added `tf.random.experimental.index_shuffle`, for shuffling a sequence without materializing the sequence in memory.

*   `tf.RaggedTensor`:
 *   Introduced `tf.experimental.RowPartition`, which encodes how one dimension in a RaggedTensor relates to another, into the public API.
 *   Introduced `tf.experimental.DynamicRaggedShape`, which represents the shape of a RaggedTensor.

Security

*   Fixes a code injection in `saved_model_cli` ([CVE-2022-29216](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29216))
*   Fixes a missing validation which causes `TensorSummaryV2` to crash ([CVE-2022-29193](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29193))
*   Fixes a missing validation which crashes `QuantizeAndDequantizeV4Grad` ([CVE-2022-29192](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29192))
*   Fixes a missing validation which causes denial of service via `DeleteSessionTensor` ([CVE-2022-29194](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29194))
*   Fixes a missing validation which causes denial of service via `GetSessionTensor` ([CVE-2022-29191](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29191))
*   Fixes a missing validation which causes denial of service via `StagePeek` ([CVE-2022-29195](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29195))
*   Fixes a missing validation which causes denial of service via `UnsortedSegmentJoin` ([CVE-2022-29197](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29197))
*   Fixes a missing validation which causes denial of service via `LoadAndRemapMatrix` ([CVE-2022-29199](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29199))
*   Fixes a missing validation which causes denial of service via `SparseTensorToCSRSparseMatrix` ([CVE-2022-29198](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29198))
*   Fixes a missing validation which causes denial of service via `LSTMBlockCell` ([CVE-2022-29200](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29200))
*   Fixes a missing validation which causes denial of service via `Conv3DBackpropFilterV2` ([CVE-2022-29196](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29196))
*   Fixes a `CHECK` failure in depthwise ops via overflows ([CVE-2021-41197](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41197))
*   Fixes issues arising from undefined behavior stemming from users supplying invalid resource handles ([CVE-2022-29207](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29207))
*   Fixes a segfault due to missing support for quantized types ([CVE-2022-29205](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29205))
*   Fixes a missing validation which results in undefined behavior in `SparseTensorDenseAdd` ([CVE-2022-29206](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29206))
*   Fixes a missing validation which results in undefined behavior in `QuantizedConv2D` ([CVE-2022-29201](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29201))
*   Fixes an integer overflow in `SpaceToBatchND` ([CVE-2022-29203](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29203))
*   Fixes a segfault and OOB write due to incomplete validation in `EditDistance` ([CVE-2022-29208](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29208))
*   Fixes a missing validation which causes denial of service via `Conv3DBackpropFilterV2` ([CVE-2022-29204](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29204))
*   Fixes a denial of service in `tf.ragged.constant` due to lack of validation ([CVE-2022-29202](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29202))
*   Fixes a segfault when `tf.histogram_fixed_width` is called with NaN values ([CVE-2022-29211](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29211))
*   Fixes a core dump when loading TFLite models with quantization ([CVE-2022-29212](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29212))
*   Fixes crashes stemming from incomplete validation in signal ops ([CVE-2022-29213](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29213))
*   Fixes a type confusion leading to `CHECK`-failure based denial of service ([CVE-2022-29209](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29209))
*   Fixes a heap buffer overflow due to incorrect hash function ([CVE-2022-29210](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-29210))
*   Updates `curl` to `7.83.1` to handle ([CVE-2022-22576](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-22576), ([CVE-2022-27774](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27774), ([CVE-2022-27775](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27775), ([CVE-2022-27776](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27776), ([CVE-2022-27778](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27778), ([CVE-2022-27779](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27779), ([CVE-2022-27780](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27780), ([CVE-2022-27781](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27781), ([CVE-2022-27782](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-27782) and ([CVE-2022-30115](https://cve.mitre.org/cgi-bin/cvename.cgi?name=VE-2022-30115)
*   Updates `zlib` to `1.2.12` after `1.2.11` was pulled due to [security issue](https://www.openwall.com/lists/oss-security/2022/03/28/1)

Thanks to our Contributors

This release contains contributions from many people at Google, as well as:

Aaron Debattista, Abel Soares Siqueira, Abhishek Varma, Andrei Ivanov, andreii, Andrew Goodbody, apeltop, Arnab Dutta, Ashiq Imran, Banikumar Maiti (Intel Aipg), Ben Greiner, Benjamin Peterson, bhack, Christopher Bate, chunduriv, Copybara-Service, DEKHTIARJonathan, Deven Desai, Duncan Riach, Eric Kunze, Everton Constantino, Faruk D, Fredrik Knutsson, gadagashwini, Gauri1 Deshpande, gtiHibGele, Guozhong Zhuang, Islem-Esi, Ivanov Viktor, Jason Furmanek, Jason Zaman, Jim, Jinzhe Zeng, John Laxson, Jonas Eschle, Jonas Eschle 'Mayou36, Jonathan Dekhtiar, Kaixi Hou, Kanvi Khanna, KaurkerDevourer, Koan-Sin Tan, kushanam, Laramie Leavitt, Li-Wen Chang, lipracer, Louis Sugy, Lu Teng, Mahmoud Abuzaina, Malcolm Slaney, Malik Shahzad Muzaffar, Marek Šuppa, Matt Conley, Michael Melesse, Milos Puzovic, mohantym, Nathan John Sircombe, Nathan Luehr, Nilesh Agarwalla, Patrice Vignola, peterjc123, Philip Turner, Rajeshwar Reddy T, Robert Kalmar, Rodrigo Formigone, Rohit Santhanam, rui, Sachin Muradi, Saduf2019, sandip, Scott Leishman, Serge Panev, Shi,Guangyong, Srinivasan Narayanamoorthy, stanley, Steven I Reeves, stevenireeves, sushreebarsa, Tamas Bela Feher, Tao He, Thomas Schmeyer, Tiago Almeida, Trevor Morris, Uday Bondhugula, Uwe L. Korn, Varghese, Jojimon, Vishnuvardhan Janapati, William Muir, William Raveane, xutianming, Yasuhiro Matsumoto, Yimei Sun, Yong Tang, Yu Feng, Yuriy Chernyshov, zhaozheng09

2.8.3

This releases introduces several vulnerability fixes:
*   Fixes a `CHECK` failure in tf.reshape caused by overflows ([CVE-2022-35934](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35934))
*   Fixes a `CHECK` failure in `SobolSample` caused by missing validation ([CVE-2022-35935](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35935))
*   Fixes an OOB read in `Gather_nd` op in TF Lite ([CVE-2022-35937](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35937))
*   Fixes a `CHECK` failure in `TensorListReserve` caused by missing validation ([CVE-2022-35960](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35960))
*   Fixes an OOB write in `Scatter_nd` op in TF Lite ([CVE-2022-35939](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35939))
*   Fixes an integer overflow in `RaggedRangeOp` ([CVE-2022-35940](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35940))
*   Fixes a `CHECK` failure in `AvgPoolOp` ([CVE-2022-35941](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35941))
*   Fixes a `CHECK` failures in `UnbatchGradOp` ([CVE-2022-35952](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35952))
*   Fixes a segfault TFLite converter on per-channel quantized transposed convolutions ([CVE-2022-36027](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36027))
*   Fixes a `CHECK` failures in `AvgPool3DGrad` ([CVE-2022-35959](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35959))
*   Fixes a `CHECK` failures in `FractionalAvgPoolGrad` ([CVE-2022-35963](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35963))
*   Fixes a segfault in `BlockLSTMGradV2` ([CVE-2022-35964](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35964))
*   Fixes a segfault in `LowerBound` and `UpperBound` ([CVE-2022-35965](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35965))
*   Fixes a segfault in `QuantizedAvgPool` ([CVE-2022-35966](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35966))
*   Fixes a segfault in `QuantizedAdd` ([CVE-2022-35967](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35967))
*   Fixes a `CHECK` fail in `AvgPoolGrad` ([CVE-2022-35968](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35968))
*   Fixes a `CHECK` fail in `Conv2DBackpropInput` ([CVE-2022-35969](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35969))
*   Fixes a segfault in `QuantizedInstanceNorm` ([CVE-2022-35970](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35970))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVars` ([CVE-2022-35971](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35971))
*   Fixes a segfault in `Requantize` ([CVE-2022-36017](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36017))
*   Fixes a segfault in `QuantizedBiasAdd` ([CVE-2022-35972](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35972))
*   Fixes a `CHECK` fail in `FakeQuantWithMinMaxVarsPerChannel` ([CVE-2022-36019](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36019))
*   Fixes a segfault in `QuantizedMatMul` ([CVE-2022-35973](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35973))
*   Fixes a segfault in `QuantizeDownAndShrinkRange` ([CVE-2022-35974](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35974))
*   Fixes segfaults in `QuantizedRelu` and `QuantizedRelu6` ([CVE-2022-35979](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35979))
*   Fixes a `CHECK` fail in `FractionalMaxPoolGrad` ([CVE-2022-35981](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35981))
*   Fixes a `CHECK` fail in `RaggedTensorToVariant` ([CVE-2022-36018](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36018))
*   Fixes a `CHECK` fail in `QuantizeAndDequantizeV3` ([CVE-2022-36026](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-36026))
*   Fixes a segfault in `SparseBincount` ([CVE-2022-35982](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35982))
*   Fixes a `CHECK` fail in `Save` and `SaveSlices` ([CVE-2022-35983](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35983))
*   Fixes a `CHECK` fail in `ParameterizedTruncatedNormal` ([CVE-2022-35984](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35984))
*   Fixes a `CHECK` fail in `LRNGrad` ([CVE-2022-35985](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35985))
*   Fixes a segfault in `RaggedBincount` ([CVE-2022-35986](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35986))
*   Fixes a `CHECK` fail in `DenseBincount` ([CVE-2022-35987](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35987))
*   Fixes a `CHECK` fail in `tf.linalg.matrix_rank` ([CVE-2022-35988](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35988))
*   Fixes a `CHECK` fail in `MaxPool` ([CVE-2022-35989](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35989))
*   Fixes a `CHECK` fail in `Conv2DBackpropInput` ([CVE-2022-35999](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35999))
*   Fixes a `CHECK` fail in `EmptyTensorList` ([CVE-2022-35998](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35998))
*   Fixes a `CHECK` fail in `tf.sparse.cross` ([CVE-2022-35997](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35997))
*   Fixes a floating point exception in `Conv2D` ([CVE-2022-35996](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35996))
*   Fixes a `CHECK` fail in `AudioSummaryV2` ([CVE-2022-35995](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35995))
*   Fixes a `CHECK` fail in `CollectiveGather` ([CVE-2022-35994](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35994))
*   Fixes a `CHECK` fail in `SetSize` ([CVE-2022-35993](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35993))
*   Fixes a `CHECK` fai

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant