sparseml.tensorflow_v1.utils package¶
Submodules¶
sparseml.tensorflow_v1.utils.exporter module¶
Export TensorFlow models to the local device
-
class
sparseml.tensorflow_v1.utils.exporter.
GraphExporter
(output_dir: str)[source]¶ Bases:
object
An exporter for exporting TensorFlow graphs and sessions into ONNX format as well as numpy arrays for the intput and output tensors
- Parameters
output_dir – the directory to save the exports to
-
property
checkpoint_path
¶
-
export_checkpoint
(saver: Optional[tensorflow.python.training.saver.Saver] = None, sess: Optional[tensorflow.python.client.session.Session] = None)[source]¶ Export a checkpoint for the current TensorFlow graph and session.
- Parameters
saver – the saver instance to use to save the current session, if not supplied will create a new one using TRAINABLE_VARIABLES
sess – the current session to export a checkpoint for, if not supplied will use get_default_session()
-
export_named_samples
(inp_dict: Dict[Union[str, tensorflow.python.framework.ops.Tensor], numpy.ndarray], out_dict: Dict[Union[str, tensorflow.python.framework.ops.Tensor], numpy.ndarray])[source]¶ Export sample inputs and outputs for the model to the local system.
- Parameters
inp_dict – the inputs to save
out_dict – the outputs to save
-
export_onnx
(inputs: List[Union[str, tensorflow.python.framework.ops.Tensor]], outputs: List[Union[str, tensorflow.python.framework.ops.Tensor]], opset: int = 9, custom_op_handlers=None, extra_opset=None, shape_override: Optional[Dict[str, List]] = None)[source]¶ Export an ONNX format for the graph from the PB format. Should not be called within an active graph or session.
- Parameters
inputs – the inputs the graph should be created for, can be either a list of names or a list of tensors
outputs – the outputs the graph should be created for, can be either a list of names or a list of tensors
opset – ONNX opset
custom_op_handlers – dictionary of custom op handlers
extra_opset – list of extra opset’s
shape_override – new shape to override
-
export_pb
(outputs: List[Union[str, tensorflow.python.framework.ops.Tensor]], graph: Optional[tensorflow.python.framework.ops.Graph] = None, sess: Optional[tensorflow.python.client.session.Session] = None)[source]¶ Export a serialized pb version of the a graph and session.
- Parameters
outputs – the list of outputs the graph should be created for (used to determine the scope of the graph to export), can be either a list of names or a list of tensors
graph – the graph to export to a pb format, if not supplied will use get_default_graph()
sess – the session to export to a pb format, if not supplied will use get_default_session()
-
export_samples
(inp_tensors: List[tensorflow.python.framework.ops.Tensor], inp_vals: List[numpy.ndarray], out_tensors: List[tensorflow.python.framework.ops.Tensor], sess: tensorflow.python.client.session.Session) → List[tensorflow.python.framework.ops.Tensor][source]¶ Export sample tensors for the model to the local system. Executes the inputs through the model using a session to get the outputs.
- Parameters
inp_tensors – the input tensors to feed through the model
inp_vals – the input values to feed through the model and save
out_tensors – the output tensors to load values from the model for saving
sess – the session to export to a pb format, if not supplied will use get_default_session()
-
property
onnx_path
¶
-
property
pb_path
¶
-
static
pb_to_onnx
(inputs: List[Union[str, tensorflow.python.framework.ops.Tensor]], outputs: List[Union[str, tensorflow.python.framework.ops.Tensor]], pb_path: str, onnx_path: str, opset: int = 9, custom_op_handlers=None, extra_opset=None, shape_override: Optional[Dict[str, List]] = None)[source]¶ Export an ONNX format for the graph from PB format. Should not be called within an active graph or session.
- Parameters
inputs – the inputs the graph should be created for, can be either a list of names or a list of tensors
outputs – the outputs the graph should be created for, can be either a list of names or a list of tensors
pb_path – path to the existing PB file
onnx_path – path to the output ONNX file
opset – ONNX opset
custom_op_handlers – dictionary of custom op handlers
extra_opset – list of extra opset’s
shape_override – new shape to override
-
property
sample_inputs_path
¶
-
property
sample_outputs_path
¶
-
property
tensorflow_path
¶
sparseml.tensorflow_v1.utils.helpers module¶
-
sparseml.tensorflow_v1.utils.helpers.
tf_compat_div
(x, y, name=None)¶ Computes Python style division of x by y.
For example:
>>> x = tf.constant([16, 12, 11]) >>> y = tf.constant([4, 6, 2]) >>> tf.divide(x,y) <tf.Tensor: shape=(3,), dtype=float64, numpy=array([4. , 2. , 5.5])>
- Parameters
x – A Tensor
y – A Tensor
name – A name for the operation (optional).
- Returns
A Tensor with same shape as input
sparseml.tensorflow_v1.utils.loss module¶
-
sparseml.tensorflow_v1.utils.loss.
accuracy
(logits: tensorflow.python.framework.ops.Tensor, labels: tensorflow.python.framework.ops.Tensor, index: int = 1) → tensorflow.python.framework.ops.Tensor[source]¶ Standard evaluation for accuracy.
- Parameters
logits – the logits from the model to use
labels – the labels to compare the logits to
index – the index in the tensors to compare against
- Returns
the accuracy
-
sparseml.tensorflow_v1.utils.loss.
batch_cross_entropy_loss
(logits: tensorflow.python.framework.ops.Tensor, labels: tensorflow.python.framework.ops.Tensor) → tensorflow.python.framework.ops.Tensor[source]¶ Standard cross entropy loss that reduces across the batch dimension.
- Parameters
logits – the logits from the model to use
labels – the labels to compare the logits to
- Returns
the cross entropy loss
sparseml.tensorflow_v1.utils.nets_utils module¶
Utility functions for working with tensorflow_v1 slim’s nets_factory
-
sparseml.tensorflow_v1.utils.nets_utils.
get_gan_network_fn
(name: str, is_training: bool = False)[source]¶ Returns network_fn for a GAN sub-model
- Parameters
name – The name of the network.
is_training – True if the model is being used for training otherwise False
- Return network_fn
Function that will run a gan sub-model
- Raises
ValueError – If network name is not recognized.
-
sparseml.tensorflow_v1.utils.nets_utils.
get_model_scope
(model_name: str, arg_scope_vars: Optional[Dict] = None)[source]¶ - Parameters
model_name – name of the model to create an arg scope for
arg_scope_vars –
- Returns
arg_scope_vars to be passed to the slim arg_scope
-
sparseml.tensorflow_v1.utils.nets_utils.
get_network_fn
(name: str, num_classes: int, weight_decay: float = 0.0, is_training: bool = False, arg_scope_vars: Optional[Dict] = None)[source]¶ Modified from slim/nets/nets_factory Returns a network_fn such as logits, end_points = network_fn(images).
- Parameters
name – The name of the network.
num_classes – The number of classes to use for classification. If 0 or None, the logits layer is omitted and its input features are returned instead.
weight_decay – The l2 coefficient for the model weights.
is_training – True if the model is being used for training otherwise False
arg_scope_vars – arg_scope_vars to be passed to the slim arg_scope
- Return network_fn
A function that applies the model to a batch of images. It has the following signature: net, end_points = network_fn(images) The images input is a tensor of shape [batch_size, height, width, 3 or 1] with height = width = network_fn.default_image_size. (The permissibility and treatment of other sizes depends on the network_fn.) The returned end_points are a dictionary of intermediate activations. The returned net is the topmost layer, depending on num_classes: If num_classes was a non-zero integer, net is a logits tensor of shape [batch_size, num_classes]. If num_classes was 0 or None, net is a tensor with the input to the logits layer of shape [batch_size, 1, 1, num_features] or [batch_size, num_features]. Dropout has not been applied to this (even if the network’s original classification does); it remains for the caller to do this or not.
- Raises
ValueError – If network name is not recognized.
-
sparseml.tensorflow_v1.utils.nets_utils.
mobilenet_v1_arg_scope
(is_training: bool = True, weight_decay: float = 4e-05, stddev: float = 0.09, regularize_depthwise: bool = False, batch_norm_decay: float = 0.9997, batch_norm_epsilon: float = 0.001, batch_norm_updates_collections: tensorflow.python.framework.ops.GraphKeys = 'update_ops', normalizer_fn: Optional[Callable] = None)[source]¶ Adapted from slim to allow for Xavier initializer Defines the default MobilenetV1 arg scope.
- Parameters
is_training – Whether or not we’re training the model. If this is set to None, the parameter is not added to the batch_norm arg_scope.
weight_decay – The weight decay to use for regularizing the model.
stddev – The standard deviation of the trunctated normal weight initializer.
regularize_depthwise – Whether or not apply regularization on depthwise.
batch_norm_decay – Decay for batch norm moving average.
batch_norm_epsilon – Small float added to variance to avoid dividing by zero in batch norm.
batch_norm_updates_collections – Collection for the update ops for batch norm.
normalizer_fn – Normalization function to apply after convolution.
- Returns
An arg_scope to use for the mobilenet v1 model.
sparseml.tensorflow_v1.utils.summary module¶
Convenience functions for tensorboard and writing summaries to it
-
sparseml.tensorflow_v1.utils.summary.
write_simple_summary
(writer: tensorflow.python.summary.writer.writer.FileWriter, tag: str, val: Any, step: int)[source]¶ Write a simple value summary to a writer
- Parameters
writer – the writer to write the summary to
tag – the tag to write the value under
val – the value to write
step – the current global step to write the value at
sparseml.tensorflow_v1.utils.variable module¶
-
sparseml.tensorflow_v1.utils.variable.
any_str_or_regex_matches_tensor_name
(tensor_name: str, name_or_regex_patterns: List[str])[source]¶ - Parameters
tensor_name – The name of a tensor
name_or_regex_patterns – List of full tensor names to match to the input or regex patterns to match with that should be prefixed with ‘re:’
- Returns
True if any given str or regex pattern matches the given name
-
sparseml.tensorflow_v1.utils.variable.
clean_tensor_name
(var_tens: Union[str, tensorflow.python.framework.ops.Tensor]) → str[source]¶ - Parameters
var_tens – the tensor to get a variable for
- Returns
the cleaned version of the name for a variable tensor (removes read and indices at the end)
-
sparseml.tensorflow_v1.utils.variable.
eval_tensor_density
(tens: tensorflow.python.framework.ops.Tensor, sess: Optional[tensorflow.python.client.session.Session] = None) → float[source]¶ Get the density (fraction of non zero values) in a tensor
- Parameters
tens – the tensor to get the density for
sess – the session to use for evaluating the tensor, if not supplied will use the default session
- Returns
the density of the tensor
-
sparseml.tensorflow_v1.utils.variable.
eval_tensor_sparsity
(tens: tensorflow.python.framework.ops.Tensor, sess: Optional[tensorflow.python.client.session.Session] = None) → float[source]¶ Get the sparsity (fraction of zero values) in a tensor
- Parameters
tens – the tensor to get the sparsity for
sess – the session to use for evaluating the tensor, if not supplied will use the default session
- Returns
the sparsity of the tensor
-
sparseml.tensorflow_v1.utils.variable.
get_op_input_var
(operation: tensorflow.python.framework.ops.Operation, var_index: Union[str, int] = 'from_trainable') → tensorflow.python.framework.ops.Tensor[source]¶ Get the input variable for an operation. Ex: the weight for a conv operator. See @get_op_var_index for proper values for var_index.
- Parameters
operation – the operation to get the input variable for
var_index – the index to guide which input to grab from the operation
- Returns
the tensor input that represents the variable input for the operation
-
sparseml.tensorflow_v1.utils.variable.
get_op_var_index
(var_index: Union[str, int], op_inputs: None) → int[source]¶ Get the index of the variable input to an operation. Ex: getting the index of the weight for a convolutional operator.
There are a few different modes that this can work as for var_index value:- int given, treats this as the desired index of the weight- string given equal to VAR_INDEX_FROM_TRAINABLE, picks the most likely inputbased on finding the first trainable variable that is an input.Defaults to the last input (all convs have input as last and most matmuls)- string given, attempts to match the string in any of the inputs name.Uses the first one found, raises an exception if one couldn’t be found- Parameters
var_index – the index to use for figuring out the proper input
op_inputs – inputs to the operator from graph editor
- Returns
the integer representing the index of the desired variable
-
sparseml.tensorflow_v1.utils.variable.
get_ops_and_inputs_by_name_or_regex
(var_names: List[str], graph: Optional[tensorflow.python.framework.ops.Graph] = None) → List[Tuple[tensorflow.python.framework.ops.Operation, tensorflow.python.framework.ops.Tensor]][source]¶ Get tuples of operations and the inputs for inputs of operations that match a regex pattern in the list params.
- Parameters
var_names – List of full names or regex patterns to match variable names by.
graph – the graph to get the prunable operations from. If not supplied, then will use the default graph
- Returns
a list of (operation, parameter) pairs for parameters that match a regex pattern in var_names. If the wildcards ‘.’ or ‘.*’ are provided as regex patterns, then will match on all prunable layers and return variables using get_op_input_var
-
sparseml.tensorflow_v1.utils.variable.
get_prunable_ops
(graph: Optional[tensorflow.python.framework.ops.Graph] = None) → List[Tuple[str, tensorflow.python.framework.ops.Operation]][source]¶ Get the prunable operations from a TensorFlow graph.
- Parameters
graph – the graph to get the prunable operations from. If not supplied, then will use the default graph
- Returns
a list containing the names and ops of the prunable operations (MatMul, Conv1D, Conv2D, Conv3D)
-
sparseml.tensorflow_v1.utils.variable.
get_tensor_var
(tens: tensorflow.python.framework.ops.Tensor) → tensorflow.python.ops.variables.VariableV1[source]¶ Get the variable associated with a given tensor. Raises a ValueError if not found
- Parameters
tens – the tensor to find a variable for
- Returns
the found variable matching the given tensor
Module contents¶
Generic code used as utilities and helpers for TensorFlow