Skip to content

Commit 3571f72

Browse files
Merge remote-tracking branch 'rem/master'
2 parents 6f5a498 + 1fe3db7 commit 3571f72

File tree

1,186 files changed

+48437
-25439
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,186 files changed

+48437
-25439
lines changed

RELEASE.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,118 @@
1+
# Release 1.13.0
2+
3+
## Major Features and Improvements
4+
5+
* TensorFlow Lite has moved from contrib to core. This means that Python modules are under `tf.lite` and source code is now under `tensorflow/lite` rather than `tensorflow/contrib/lite`.
6+
* TensorFlow GPU binaries are now built against CUDA 10 and TensorRT 5.0.
7+
* Support for Python3.7 on all operating systems.
8+
* Moved NCCL to core.
9+
10+
## Behavioral changes
11+
12+
* Disallow conversion of python floating types to uint32/64 (matching behavior of other integer types) in `tf.constant`.
13+
* Make the `gain` argument of convolutional orthogonal initializers (`convolutional_delta_orthogonal`, `convolutional_orthogonal_1D`, `convolutional_orthogonal_2D`, `convolutional_orthogonal_3D`) have consistent behavior with the `tf.initializers.orthogonal` initializer, i.e. scale the output l2-norm by `gain` and NOT by `sqrt(gain)`. (Note that these functions are currently in `tf.contrib` which is not guaranteed backward compatible).
14+
15+
## Bug Fixes and Other Changes
16+
17+
* Documentation
18+
* Update the doc with the details about the rounding mode used in quantize_and_dequantize_v2.
19+
* Clarify that tensorflow::port::InitMain() _should_ be called before using the TensorFlow library. Programs failing to do this are not portable to all platforms.
20+
* Deprecations and Symbol renames.
21+
* Removing deprecations for the following endpoints: `tf.acos`, `tf.acosh`, `tf.add`, `tf.as_string`, `tf.asin`, `tf.asinh`, `tf.atan`, `tf.atan2`, `tf.atanh`, `tf.cos`, `tf.cosh`, `tf.equal`, `tf.exp`, `tf.floor`, `tf.greater`, `tf.greater_equal`, `tf.less`, `tf.less_equal`, `tf.log`, `tf.logp1`, `tf.logical_and`, `tf.logical_not`, `tf.logical_or`, `tf.maximum`, `tf.minimum`, `tf.not_equal`, `tf.sin`, `tf.sinh`, `tf.tan`
22+
* Deprecate `tf.data.Dataset.shard`.
23+
* Deprecate `saved_model.loader.load` which is replaced by `saved_model.load` and `saved_model.main_op`, which will be replaced by `saved_model.main_op` in V2.
24+
* Deprecate tf.QUANTIZED_DTYPES. The official new symbol is tf.dtypes.QUANTIZED_DTYPES.
25+
* Update sklearn imports for deprecated packages.
26+
* Deprecate `Variable.count_up_to` and `tf.count_up_to` in favor of `Dataset.range`.
27+
* Export `confusion_matrix` op as `tf.math.confusion_matrix` instead of `tf.train.confusion_matrix`.
28+
* Add `tf.dtypes.` endpoint for every constant in dtypes.py; moving endpoints in versions.py to corresponding endpoints in `tf.sysconfig.` and `tf.version.`; moving all constants under `tf.saved_model` submodules to `tf.saved_model` module. New endpoints are added in V1 and V2 but existing endpoint removals are only applied in V2.
29+
* Deprecates behavior where device assignment overrides collocation constraints inside a collocation context manager.
30+
* Keras & Python API
31+
* Add to Keras functionality analogous to `tf.register_tensor_conversion_function`.
32+
* Subclassed Keras models can now be saved through `tf.contrib.saved_model.save_keras_model`.
33+
* `LinearOperator.matmul` now returns a new `LinearOperator`.
34+
* New ops and improved op functionality
35+
* Add a Nearest Neighbor Resize op.
36+
* Add an `ignore_unknown` argument to `parse_values` which suppresses ValueError for unknown hyperparameter types. Such * Add `tf.linalg.matvec` convenience function.
37+
* `tf.einsum()`raises `ValueError` for unsupported equations like `"ii->"`.
38+
* Add DCT-I and IDCT-I in `tf.signal.dct` and `tf.signal.idct`.
39+
* Add LU decomposition op.
40+
* Add quantile loss to gradient boosted trees in estimator.
41+
* Add `round_mode` to `QuantizeAndDequantizeV2` op to select rounding algorithm.
42+
* Add `unicode_encode`, `unicode_decode`, `unicode_decode_with_offsets`, `unicode_split`, `unicode_split_with_offset`, and `unicode_transcode` ops. Amongst other things, this Op adds the ability to encode, decode, and transcode a variety of input text encoding formats into the main Unicode encodings (UTF-8, UTF-16-BE, UTF-32-BE)
43+
* Add "unit" attribute to the substr op, which allows obtaining the substring of a string containing unicode characters.
44+
* Broadcasting support for Ragged Tensors.
45+
* `SpaceToDepth` supports uint8 data type.
46+
* Support multi-label quantile regression in estimator.
47+
* We now use "div" as the default partition_strategy in `tf.nn.safe_embedding_lookup_sparse`, `tf.nn.sampled_softmax` and `tf.nn.nce_loss`.
48+
hyperparameter are ignored.
49+
* Performance
50+
* Improve performance of GPU cumsum/cumprod by up to 300x.
51+
* Added support for weight decay in most TPU embedding optimizers, including AdamW and MomentumW.
52+
* TensorFlow 2.0 Development
53+
* Add a command line tool to convert to TF2.0, tf_upgrade_v2
54+
* Merge `tf.spectral` into `tf.signal` for TensorFlow 2.0.
55+
* Change the default recurrent activation function for LSTM from 'hard_sigmoid' to 'sigmoid' in 2.0. Historically recurrent activation is 'hard_sigmoid' since it is fast than 'sigmoid'. With new unified backend between CPU and GPU mode, since the CuDNN kernel is using sigmoid, we change the default for CPU mode to sigmoid as well. With that, the default LSTM will be compatible with both CPU and GPU kernel. This will enable user with GPU to use CuDNN kernel by default and get a 10x performance boost in training. Note that this is checkpoint breaking change. If user want to use their 1.x pre-trained checkpoint, please construct the layer with LSTM(recurrent_activation='hard_sigmoid') to fallback to 1.x behavior.
56+
* TensorFlow Lite
57+
* Move from `tensorflow/contrib/lite` to `tensorflow/lite`.
58+
* Add experimental Java API for injecting TensorFlow Lite delegates
59+
* Add support for strings in TensorFlow Lite Java API.
60+
* `tf.contrib`:
61+
* Add Apache Ignite Filesystem plugin to support accessing Apache IGFS.
62+
* Dropout now takes `rate` argument, `keep_prob` is deprecated.
63+
* Estimator occurrences references `tf.contrib.estimator` were changed to `tf.estimator`:
64+
* `tf.contrib.estimator.BaselineEstimator` with `tf.estimator.BaselineEstimator`
65+
* `tf.contrib.estimator.DNNLinearCombinedEstimator` with `tf.estimator.DNNLinearCombinedEstimator`
66+
* `tf.contrib.estimator.DNNEstimator` with `tf.estimator.DNNEstimator`
67+
* `tf.contrib.estimator.LinearEstimator` with `tf.estimator.LinearEstimator`
68+
* `tf.contrib.estimator.InMemoryEvaluatorHook` and tf.estimator.experimental.InMemoryEvaluatorHook`.
69+
* `tf.contrib.estimator.make_stop_at_checkpoint_step_hook` with `tf.estimator.experimental.make_stop_at_checkpoint_step_hook`.
70+
* Expose `tf.distribute.Strategy as the new name for tf.contrib.distribute.DistributionStrategy.
71+
* Migrate linear optimizer from contrib to core.
72+
* Move `tf.contrib.signal` to `tf.signal` (preserving aliases in tf.contrib.signal).
73+
* Users of `tf.contrib.estimator.export_all_saved_models` and related should switch to `tf.estimator.Estimator.experimental_export_all_saved_models`.
74+
* tf.data:
75+
* Add `tf.data.experimental.StatsOptions()`, to configure options to collect statistics from `tf.data.Dataset` pipeline using `StatsAggregator`. Add nested option, `experimental_stats` (which takes a `tf.data.experimen tal.StatsOptions` object), to `tf.data.Options`. Deprecates `tf.data.experimental.set_stats_agregator`.
76+
* Performance optimizations:
77+
* Add `tf.data.experimental.OptimizationOptions()`, to configure options to enable `tf.data` performance optimizations. Add nested option, `experimental_optimization` (which takes a `tf.data.experimental.OptimizationOptions` object), to `tf.data.Options`. Remove performance optimization options from `tf.data.Options`, and add them under `tf.data.experimental.OptimizationOptions` instead.
78+
* Enable `map_and_batch_fusion` and `noop_elimination` optimizations by default. They can be disabled by configuring `tf.data.experimental.OptimizationOptions` to set `map_and_batch = False` or `noop_elimination = False` respectively. To disable all default optimizations, set `apply_default_optimizations = False`.
79+
* Support parallel map in `map_and_filter_fusion`.
80+
* Disable static optimizations for input pipelines that use non-resource `tf.Variable`s.
81+
* Add NUMA-aware MapAndBatch dataset.
82+
* Deprecate `tf.data.Dataset.make_one_shot_iterator()` in V1, removed it from V2, and added tf.compat.v1.data.make_one_shot_iterator()`.
83+
* Deprecate `tf.data.Dataset.make_initializable_iterator()` in V1, removed it from V2, and added `tf.compat.v1.data.make_initializable_iterator()`.
84+
* Enable nested dataset support in core `tf.data` transformations.
85+
* For `tf.data.Dataset` implementers: Added `tf.data.Dataset._element_structured property` to replace `Dataset.output_{types,shapes,classes}`.
86+
* Make `num_parallel_calls` of `tf.data.Dataset.interleave` and `tf.data.Dataset.map` work in Eager mode.
87+
* Toolchains
88+
* Fixed OpenSSL compatibility by avoiding `EVP_MD_CTX_destroy`.
89+
* Added bounds checking to printing deprecation warnings.
90+
* Upgraded CUDA dependency to 10.0
91+
* To build with Android NDK r14b, add "#include <linux/compiler.h>" to android-ndk-r14b/platforms/android-14/arch-*/usr/include/linux/futex.h
92+
* Removed `:android_tensorflow_lib_selective_registration*` targets, use `:android_tensorflow_lib_lite*` targets instead.
93+
* XLA
94+
* Move `RoundToEven` function to xla/client/lib/math.h.
95+
* A new environment variable `TF_XLA_DEBUG_OPTIONS_PASSTHROUGH` set to "1" or "true" allows the debug options passed within an XRTCompile op to be passed directly to the XLA compilation backend. If such variable is not set (service side), only a restricted set will be passed through.
96+
* Allow the XRTCompile op to return the ProgramShape resulted form the XLA compilation as a second return argument.
97+
* XLA HLO graphs can now be rendered as SVG/HTML.
98+
* Estimator
99+
* Replace all occurences of `tf.contrib.estimator.BaselineEstimator` with `tf.estimator.BaselineEstimator`
100+
* Replace all occurences of `tf.contrib.estimator.DNNLinearCombinedEstimator` with `tf.estimator.DNNLinearCombinedEstimator`
101+
* Replace all occurrences of `tf.contrib.estimator.DNNEstimator` with `tf.estimator.DNNEstimator`
102+
* Replace all occurrences of `tf.contrib.estimator.LinearEstimator` with `tf.estimator.LinearEstimator`
103+
* Users of `tf.contrib.estimator.export_all_saved_models` and related should switch to `tf.estimator.Estimator.experimental_export_all_saved_models`.
104+
* Update `regression_head` to the new Head API for Canned Estimator V2.
105+
* Switch `multi_class_head` to Head API for Canned Estimator V2.
106+
* Replace all occurences of `tf.contrib.estimator.InMemoryEvaluatorHook` and `tf.contrib.estimator.make_stop_at_checkpoint_step_hook` with `tf.estimator.experimental.InMemoryEvaluatorHook` and `tf.estimator.experimental.make_stop_at_checkpoint_step_hook`
107+
* Migrate linear optimizer from contrib to core.
108+
109+
110+
## Thanks to our Contributors
111+
112+
This release contains contributions from many people at Google, as well as:
113+
114+
Abhinav Upadhyay, Ag Ramesh, akikaaa, Alexis Louis, Anders Huss, Andreas Madsen, Andrew Banchich, Andy Craze, Anton Dmitriev, Artem Malykh, Avijit-Nervana, Balint Cristian, Benjamin Tan Wei Hao, Bhavani Subramanian, Brendan Finan, Brian Nemsick, Bryan Cutler, By Shen, Cao Zongyan, Castiel, Chris Antaki, Christian Goll, Cibifang, Clayne Robison, Codrut Grosu, Cong Xu, Dalmo Cirne, Daniel Hunter, Dougal J. Sutherland, Edvard Fagerholm, EFanZh, Erik Smistad, Evgeniy Polyakov, Feiyang Chen, franklin5, Fred Reiss, Gautam, gehring, Geoffrey Irving, George Sterpu, Gitea, Grzegorz George Pawelczak, Guozhong Zhuang, himkt, Hoeseong Kim, Huan Li (李卓桓), HuiyangFei, hyunyoung, Isaac Burbank, jackonan, Jacky Ko, Jason Furmanek, Jason Zaman, Javier Luraschi, Jiang,Zhoulong, joaak, John Lin, Jonathan Wyatt Hoech, josephyearsley, Josh Gordon, Julian Niedermeier, Karl Lessard, Keno Fischer, lanhin, Leon Graser, leondgarse, Li, Guizi, Li, Yiqiang, lxl910915, Mahmoud Abuzaina, manhyuk, Marcela Morales Quispe, margaretmz, Matt Conley, Max Pumperla, mbhuiyan, mdfaijul, Meng, Peng, Michael, Michael Gielda, mrTsjolder, Muhammad Wildan, neargye, Nehal J Wani, NEWPLAN, Niranjan Hasabnis, Nutti, olicht, Pan Daoxin, Pedro Monreal, Peng Yu, pillarpond, Pooya Davoodi, qiezi, Rholais Lii, Richard Yu, Rin Arakaki, Roger Iyengar, sahilbadyal, Sami Kama, Sandip Giri, Scott Leishman, Serge Panev, Seunghoon Park, Shafi Dayatar, shengfuintel, Shimin Guo, Siju, silent567, Stefan Dyulgerov, steven, Tao Wei, Thor Johnsen, Tingbo Lu, tomguluson92, Tongxuan Liu, Trevor Morris, Ubuntu, Vadim Borisov, vanderliang, wangsiyu, Wen Yun, Wen-Heng (Jack) Chung, wenxizhu, William D. Irons, Xiaoming (Jason) Cui, Yan Facai (颜发才), Yanbo Liang, Yaniv Blumenfeld, Yash Gaurkar, Yicheng Fan, Yong Tang, Yongjoon Lee, Yuan (Terry) Tang, Yuxin Wu, zldrobit
115+
1116
# Release 1.12.0
2117

3118
## Major Features and Improvements

WORKSPACE

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,47 @@ remote_config_workspace()
4343
# Apple and Swift rules.
4444
http_archive(
4545
name = "build_bazel_rules_apple",
46-
sha256 = "73b4980a318d203d3307f850e27e66ec5cc8d223147a3475a6f11597eb6438a5",
47-
strip_prefix = "rules_apple-0.13.0",
48-
urls = ["https://github.com/bazelbuild/rules_apple/archive/0.13.0.tar.gz"],
46+
sha256 = "4b90786009fa8df25230442244bad2832ba8d6bc4987f68150a7de59c8827e90",
47+
strip_prefix = "rules_apple-0.14.0",
48+
urls = ["https://github.com/bazelbuild/rules_apple/archive/0.14.0.tar.gz"],
4949
)
5050
http_file(
5151
name = "xctestrunner",
5252
executable = 1,
5353
urls = ["https://github.com/google/xctestrunner/releases/download/0.2.6/ios_test_runner.par"],
5454
)
55-
load("@build_bazel_rules_apple//apple:repositories.bzl", "apple_rules_dependencies")
56-
apple_rules_dependencies()
55+
56+
http_archive(
57+
name = "bazel_skylib",
58+
sha256 = "2c62d8cd4ab1e65c08647eb4afe38f51591f43f7f0885e7769832fa137633dcb",
59+
strip_prefix = "bazel-skylib-0.7.0",
60+
urls = ["https://github.com/bazelbuild/bazel-skylib/archive/0.7.0.tar.gz"],
61+
)
62+
63+
http_archive(
64+
name = "build_bazel_apple_support",
65+
sha256 = "835663c4bb02f4bf01dce8a2a176df7fa682dbb867d3698ae12258c1628bb8f0",
66+
strip_prefix = "apple_support-0.5.0",
67+
urls = ["https://github.com/bazelbuild/apple_support/archive/0.5.0.tar.gz"],
68+
)
69+
70+
http_archive(
71+
name = "build_bazel_rules_swift",
72+
sha256 = "32d124878cd49775d84f59ba90440c8b23b7c775aec8fec1978f751c76ddee8a",
73+
strip_prefix = "rules_swift-0.7.0",
74+
urls = ["https://github.com/bazelbuild/rules_swift/archive/0.7.0.tar.gz"],
75+
)
76+
77+
http_archive(
78+
name = "com_github_apple_swift_swift_protobuf",
79+
type = "zip",
80+
strip_prefix = "swift-protobuf-1.2.0/",
81+
urls = ["https://github.com/apple/swift-protobuf/archive/1.2.0.zip"],
82+
)
83+
84+
# Use swift_rules_dependencies to fetch the tolchains.
85+
# Since we defined all the "git_repository" rules above, the following call will
86+
# skip redefining them.
5787
load("@build_bazel_rules_swift//swift:repositories.bzl", "swift_rules_dependencies")
5888
swift_rules_dependencies()
5989

configure.py

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
_TF_BAZELRC_FILENAME = '.tf_configure.bazelrc'
5151
_TF_WORKSPACE_ROOT = ''
5252
_TF_BAZELRC = ''
53+
_TF_CURRENT_BAZEL_VERSION = None
5354

5455
NCCL_LIB_PATHS = [
5556
'lib64/', 'lib/powerpc64le-linux-gnu/', 'lib/x86_64-linux-gnu/', ''
@@ -337,8 +338,8 @@ def get_var(environ_cp,
337338
'Environment variable %s must be set as a boolean indicator.\n'
338339
'The following are accepted as TRUE : %s.\n'
339340
'The following are accepted as FALSE: %s.\n'
340-
'Current value is %s.' % (var_name, ', '.join(true_strings),
341-
', '.join(false_strings), var))
341+
'Current value is %s.' %
342+
(var_name, ', '.join(true_strings), ', '.join(false_strings), var))
342343

343344
while var is None:
344345
user_input_origin = get_input(question)
@@ -771,11 +772,12 @@ def check_ndk_level(android_ndk_home_path):
771772
else:
772773
raise Exception('Unable to parse NDK revision.')
773774
if int(ndk_api_level) not in _SUPPORTED_ANDROID_NDK_VERSIONS:
774-
print('WARNING: The API level of the NDK in %s is %s, which is not '
775-
'supported by Bazel (officially supported versions: %s). Please use '
776-
'another version. Compiling Android targets may result in confusing '
777-
'errors.\n' % (android_ndk_home_path, ndk_api_level,
778-
_SUPPORTED_ANDROID_NDK_VERSIONS))
775+
print(
776+
'WARNING: The API level of the NDK in %s is %s, which is not '
777+
'supported by Bazel (officially supported versions: %s). Please use '
778+
'another version. Compiling Android targets may result in confusing '
779+
'errors.\n' %
780+
(android_ndk_home_path, ndk_api_level, _SUPPORTED_ANDROID_NDK_VERSIONS))
779781
return ndk_api_level
780782

781783

@@ -1230,8 +1232,8 @@ def set_tf_nccl_install_path(environ_cp):
12301232
# Reset and Retry
12311233
print(
12321234
'Invalid path to NCCL %s toolkit, %s or %s not found. Please use the '
1233-
'O/S agnostic package of NCCL 2' % (tf_nccl_version, nccl_lib_path,
1234-
nccl_hdr_path))
1235+
'O/S agnostic package of NCCL 2' %
1236+
(tf_nccl_version, nccl_lib_path, nccl_hdr_path))
12351237

12361238
environ_cp['TF_NCCL_VERSION'] = ''
12371239
else:
@@ -1305,11 +1307,14 @@ def set_tf_cuda_compute_capabilities(environ_cp):
13051307
all_valid = False
13061308
else:
13071309
ver = float(m.group(0))
1308-
if ver < 3.5:
1309-
print('ERROR: TensorFlow only supports CUDA compute capabilities 3.5 '
1310+
if ver < 3.0:
1311+
print('ERROR: TensorFlow only supports CUDA compute capabilities 3.0 '
13101312
'and higher. Please re-specify the list of compute '
13111313
'capabilities excluding version %s.' % ver)
13121314
all_valid = False
1315+
if ver < 3.5:
1316+
print('WARNING: XLA does not support CUDA compute capabilities '
1317+
'lower than 3.5. Disable XLA when running on older GPUs.')
13131318

13141319
if all_valid:
13151320
break
@@ -1495,6 +1500,7 @@ def set_other_mpi_vars(environ_cp):
14951500
'Cannot find the MPI library file in %s/lib or %s/lib64 or %s/lib32' %
14961501
(mpi_home, mpi_home, mpi_home))
14971502

1503+
14981504
def system_specific_test_config(env):
14991505
"""Add default test flags required for TF tests to bazelrc."""
15001506
write_to_bazelrc('test --flaky_test_attempts=3')
@@ -1503,7 +1509,7 @@ def system_specific_test_config(env):
15031509
'test --test_tag_filters=-benchmark-test,-no_oss,-oss_serial')
15041510
write_to_bazelrc('test --build_tag_filters=-benchmark-test,-no_oss')
15051511
if is_windows():
1506-
if env.get('TF_NEED_CUDA', None) == 1:
1512+
if env.get('TF_NEED_CUDA', None) == '1':
15071513
write_to_bazelrc(
15081514
'test --test_tag_filters=-no_windows,-no_windows_gpu,-no_gpu')
15091515
write_to_bazelrc(
@@ -1515,7 +1521,7 @@ def system_specific_test_config(env):
15151521
write_to_bazelrc('test --test_tag_filters=-gpu,-nomac,-no_mac')
15161522
write_to_bazelrc('test --build_tag_filters=-gpu,-nomac,-no_mac')
15171523
elif is_linux():
1518-
if env.get('TF_NEED_CUDA', None) == 1:
1524+
if env.get('TF_NEED_CUDA', None) == '1':
15191525
write_to_bazelrc('test --test_tag_filters=-no_gpu')
15201526
write_to_bazelrc('test --build_tag_filters=-no_gpu')
15211527
write_to_bazelrc('test --test_env=LD_LIBRARY_PATH')
@@ -1590,11 +1596,15 @@ def configure_apple_bazel_rules():
15901596
existing_filepath = os.path.join(_TF_WORKSPACE_ROOT, filepath + '.apple')
15911597
renamed_filepath = os.path.join(_TF_WORKSPACE_ROOT, filepath)
15921598
os.rename(existing_filepath, renamed_filepath)
1599+
if _TF_CURRENT_BAZEL_VERSION is None or _TF_CURRENT_BAZEL_VERSION < 23000:
1600+
print(
1601+
'Building Bazel rules on Apple platforms requires Bazel 0.23 or later.')
15931602

15941603

15951604
def main():
15961605
global _TF_WORKSPACE_ROOT
15971606
global _TF_BAZELRC
1607+
global _TF_CURRENT_BAZEL_VERSION
15981608

15991609
parser = argparse.ArgumentParser()
16001610
parser.add_argument(
@@ -1611,7 +1621,8 @@ def main():
16111621
# environment variables.
16121622
environ_cp = dict(os.environ)
16131623

1614-
check_bazel_version('0.19.0', '0.23.0')
1624+
current_bazel_version = check_bazel_version('0.19.0', '0.23.2')
1625+
_TF_CURRENT_BAZEL_VERSION = convert_version_to_int(current_bazel_version)
16151626

16161627
reset_tf_configure_bazelrc()
16171628

tensorflow/api_template_v1.__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
For more information, please see:
5151
* https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md
5252
* https://github.com/tensorflow/addons
53+
* https://github.com/tensorflow/io (for I/O related ops)
5354
If you depend on functionality not listed there, please file an issue.
5455
"""
5556
contrib = LazyLoader('contrib', globals(), 'tensorflow.contrib',

0 commit comments

Comments
 (0)