361 lines
10 KiB
Python
361 lines
10 KiB
Python
# Description:
|
|
# Utilities that perform useful transformations on graphs
|
|
|
|
load(
|
|
"//tensorflow:tensorflow.bzl",
|
|
"if_not_windows",
|
|
"tf_cc_binary",
|
|
"tf_cc_test",
|
|
"tf_copts",
|
|
"tf_py_test",
|
|
)
|
|
load("//tensorflow:tensorflow.bzl", "get_compatible_with_cloud")
|
|
|
|
package(
|
|
default_visibility = ["//visibility:public"],
|
|
licenses = ["notice"], # Apache 2.0
|
|
)
|
|
|
|
cc_library(
|
|
name = "transform_utils",
|
|
srcs = [
|
|
"transform_utils.cc",
|
|
],
|
|
hdrs = [
|
|
"transform_utils.h",
|
|
],
|
|
compatible_with = get_compatible_with_cloud(),
|
|
copts = tf_copts(),
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:lib_internal",
|
|
"//tensorflow/core:protos_all_cc",
|
|
],
|
|
)
|
|
|
|
tf_cc_test(
|
|
name = "transform_utils_test",
|
|
size = "small",
|
|
srcs = ["transform_utils_test.cc"],
|
|
deps = [
|
|
":transform_utils",
|
|
"//tensorflow/cc:cc_ops",
|
|
"//tensorflow/core:core_cpu_base",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core:tensorflow",
|
|
"//tensorflow/core:test",
|
|
"//tensorflow/core:test_main",
|
|
"//tensorflow/core:testlib",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "file_utils",
|
|
srcs = [
|
|
"file_utils.cc",
|
|
],
|
|
hdrs = [
|
|
"file_utils.h",
|
|
],
|
|
copts = tf_copts(),
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
],
|
|
)
|
|
|
|
tf_cc_test(
|
|
name = "file_utils_test",
|
|
size = "small",
|
|
srcs = ["file_utils_test.cc"],
|
|
deps = [
|
|
":file_utils",
|
|
"//tensorflow/cc:cc_ops",
|
|
"//tensorflow/core:core_cpu",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:test",
|
|
"//tensorflow/core:test_main",
|
|
"//tensorflow/core:testlib",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "transforms_lib",
|
|
srcs = [
|
|
"add_default_attributes.cc",
|
|
"backports.cc",
|
|
"flatten_atrous.cc",
|
|
"fold_batch_norms.cc",
|
|
"fold_constants_lib.cc",
|
|
"fold_old_batch_norms.cc",
|
|
"freeze_requantization_ranges.cc",
|
|
"fuse_convolutions.cc",
|
|
"inline_partitionedcall.cc",
|
|
"insert_logging.cc",
|
|
"obfuscate_names.cc",
|
|
"quantize_nodes.cc",
|
|
"quantize_weights.cc",
|
|
"remove_attribute.cc",
|
|
"remove_control_dependencies.cc",
|
|
"remove_device.cc",
|
|
"remove_nodes.cc",
|
|
"rename_attribute.cc",
|
|
"rename_node.cc",
|
|
"rename_op.cc",
|
|
"round_weights.cc",
|
|
"set_device.cc",
|
|
"sort_by_execution_order.cc",
|
|
"sparsify_gather.cc",
|
|
"strip_unused_nodes.cc",
|
|
],
|
|
hdrs = [
|
|
"fold_constants_lib.h",
|
|
],
|
|
copts = tf_copts(),
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":transform_utils",
|
|
"@com_google_absl//absl/container:flat_hash_map",
|
|
"@com_google_absl//absl/strings",
|
|
"@com_google_absl//absl/algorithm:container",
|
|
"//tensorflow/c:checkpoint_reader",
|
|
"//tensorflow/core/util/tensor_bundle",
|
|
"//tensorflow/core:core_cpu",
|
|
"//tensorflow/core:core_cpu_internal",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:graph",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core:tensorflow",
|
|
"//tensorflow/core/kernels:quantization_utils",
|
|
] + if_not_windows([
|
|
"//tensorflow/core/kernels:remote_fused_graph_rewriter_transform",
|
|
"//tensorflow/core/kernels/hexagon:hexagon_rewriter_transform",
|
|
"//tensorflow/core:sparse_ops_op_lib",
|
|
"//tensorflow/core:parsing_ops_op_lib",
|
|
"//tensorflow/core:sendrecv_ops_op_lib",
|
|
"//tensorflow/core:io_ops_op_lib",
|
|
"//tensorflow/core:logging_ops_op_lib",
|
|
"//tensorflow/core:lookup_ops_op_lib",
|
|
"//tensorflow/core:data_flow_ops_op_lib",
|
|
"//tensorflow/core:no_op_op_lib",
|
|
"//tensorflow/core:state_ops_op_lib",
|
|
"//tensorflow/core:user_ops_op_lib",
|
|
"//tensorflow/core:training_ops_op_lib",
|
|
"//tensorflow/core:string_ops_op_lib",
|
|
"//tensorflow/core:remote_fused_graph_ops_op_lib",
|
|
"//tensorflow/core:random_ops_op_lib",
|
|
"//tensorflow/core:rnn_ops_op_lib",
|
|
"//tensorflow/core:nn_ops_op_lib",
|
|
"//tensorflow/core:math_ops_op_lib",
|
|
"//tensorflow/core:manip_ops_op_lib",
|
|
"//tensorflow/core:list_ops_op_lib",
|
|
"//tensorflow/core:functional_ops_op_lib",
|
|
"//tensorflow/core:control_flow_ops_op_lib",
|
|
"//tensorflow/core:candidate_sampling_ops_op_lib",
|
|
"//tensorflow/core:array_ops_op_lib",
|
|
]),
|
|
alwayslink = 1,
|
|
)
|
|
|
|
tf_cc_test(
|
|
name = "transforms_test",
|
|
size = "small",
|
|
srcs = [
|
|
"add_default_attributes_test.cc",
|
|
"backports_test.cc",
|
|
"flatten_atrous_test.cc",
|
|
"fold_batch_norms_test.cc",
|
|
"fold_constants_test.cc",
|
|
"fold_old_batch_norms_test.cc",
|
|
"freeze_requantization_ranges_test.cc",
|
|
"fuse_convolutions_test.cc",
|
|
"inline_partitionedcall_test.cc",
|
|
"insert_logging_test.cc",
|
|
"obfuscate_names_test.cc",
|
|
"quantize_nodes_test.cc",
|
|
"quantize_weights_test.cc",
|
|
"remove_attribute_test.cc",
|
|
"remove_device_test.cc",
|
|
"remove_nodes_test.cc",
|
|
"rename_attribute_test.cc",
|
|
"rename_node_test.cc",
|
|
"rename_op_test.cc",
|
|
"round_weights_test.cc",
|
|
"set_device_test.cc",
|
|
"sort_by_execution_order_test.cc",
|
|
"sparsify_gather_test.cc",
|
|
"strip_unused_nodes_test.cc",
|
|
],
|
|
deps = [
|
|
":transform_utils",
|
|
":transforms_lib",
|
|
"//tensorflow/cc:cc_ops",
|
|
"//tensorflow/cc:sendrecv_ops",
|
|
"//tensorflow/core:bitwise_ops_op_lib",
|
|
"//tensorflow/core:core_cpu",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core:test",
|
|
"//tensorflow/core:test_main",
|
|
"//tensorflow/core:testlib",
|
|
"//tensorflow/core/kernels:quantization_utils",
|
|
"//tensorflow/core/kernels:quantized_ops",
|
|
"//tensorflow/core/util/tensor_bundle",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "transform_graph_hdrs",
|
|
srcs = [
|
|
"transform_graph.h",
|
|
"transform_utils.h",
|
|
],
|
|
visibility = [
|
|
"//tensorflow/core:__pkg__",
|
|
"//tensorflow/python:__pkg__",
|
|
"//tensorflow/python/util:__pkg__",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "transform_graph_lib",
|
|
srcs = ["transform_graph.cc"],
|
|
hdrs = ["transform_graph.h"],
|
|
copts = tf_copts(),
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":file_utils",
|
|
":transform_utils",
|
|
":transforms_lib",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:lib_internal",
|
|
"//tensorflow/core:protos_all_cc",
|
|
],
|
|
alwayslink = 1,
|
|
)
|
|
|
|
# This library includes a main function, to make it easy to create other
|
|
# versions of the tool linked against different operator libs.
|
|
cc_library(
|
|
name = "transform_graph_main_lib",
|
|
srcs = ["transform_graph_main.cc"],
|
|
copts = tf_copts(),
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":transform_graph_lib",
|
|
":transforms_lib",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:lib",
|
|
],
|
|
)
|
|
|
|
tf_cc_binary(
|
|
name = "transform_graph",
|
|
copts = tf_copts(),
|
|
linkstatic = 1,
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":transform_graph_main_lib",
|
|
],
|
|
)
|
|
|
|
tf_cc_test(
|
|
name = "transform_graph_test",
|
|
size = "medium",
|
|
srcs = ["transform_graph_test.cc"],
|
|
deps = [
|
|
":transform_graph_lib",
|
|
":transform_utils",
|
|
"//tensorflow/cc:cc_ops",
|
|
"//tensorflow/cc:sendrecv_ops",
|
|
"//tensorflow/core:core_cpu",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"//tensorflow/core:test",
|
|
"//tensorflow/core:test_main",
|
|
"//tensorflow/core:testlib",
|
|
],
|
|
)
|
|
|
|
# This library includes a main function, to make it easy to create other
|
|
# versions of the tool linked against different operator libs.
|
|
cc_library(
|
|
name = "summarize_graph_main_lib",
|
|
srcs = ["summarize_graph_main.cc"],
|
|
copts = tf_copts(),
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":file_utils",
|
|
":transform_utils",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
],
|
|
)
|
|
|
|
tf_cc_binary(
|
|
name = "summarize_graph",
|
|
copts = tf_copts(),
|
|
linkstatic = 1,
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":summarize_graph_main_lib",
|
|
],
|
|
)
|
|
|
|
tf_cc_binary(
|
|
name = "compare_graphs",
|
|
srcs = ["compare_graphs.cc"],
|
|
copts = tf_copts(),
|
|
linkstatic = 1,
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":file_utils",
|
|
":transform_utils",
|
|
"//tensorflow/core:core_cpu_internal",
|
|
"//tensorflow/core:framework_internal",
|
|
"//tensorflow/core:lib",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "transform_graph_py",
|
|
srcs = ["__init__.py"],
|
|
srcs_version = "PY3",
|
|
deps = [
|
|
"//tensorflow/core:protos_all_py",
|
|
"//tensorflow/python:errors",
|
|
"//tensorflow/python:util",
|
|
"//tensorflow/python/util:_pywrap_transform_graph",
|
|
],
|
|
)
|
|
|
|
tf_py_test(
|
|
name = "transform_graph_py_test",
|
|
size = "small",
|
|
srcs = ["python/transform_graph_test.py"],
|
|
main = "python/transform_graph_test.py",
|
|
tags = ["v1only"],
|
|
deps = [
|
|
":transform_graph_py",
|
|
"//tensorflow/core:protos_all_py",
|
|
"//tensorflow/python:client_testlib",
|
|
"//tensorflow/python:framework_for_generated_wrappers",
|
|
"//tensorflow/python:math_ops",
|
|
"//tensorflow/python:variables",
|
|
],
|
|
)
|