# Summary Operations

The following ops output Summary protocol buffers as serialized string tensors.

You can fetch the output of a summary op in a session, and pass it to a SummaryWriter to append it to an event file. Event files contain Event protos that can contain Summary protos along with the timestamp and step. You can then use TensorBoard to visualize the contents of the event files. See TensorBoard and Summaries for more details.

### tf.scalar_summary(tags, values, collections=None, name=None)

Outputs a Summary protocol buffer with scalar values.

The input tags and values must have the same shape. The generated summary has a summary value for each tag-value pair in tags and values.

##### Args:
• tags: A string Tensor. Tags for the summaries.
• values: A real numeric Tensor. Values for the summaries.
• collections: Optional list of graph collections keys. The new summary op is added to these collections. Defaults to [GraphKeys.SUMMARIES].
• name: A name for the operation (optional).
##### Returns:

A scalar Tensor of type string. The serialized Summary protocol buffer.

### tf.image_summary(tag, tensor, max_images=3, collections=None, name=None)

Outputs a Summary protocol buffer with images.

The summary has up to max_images summary values containing images. The images are built from tensor which must be 4-D with shape [batch_size, height, width, channels] and where channels can be:

• 1: tensor is interpreted as Grayscale.
• 3: tensor is interpreted as RGB.
• 4: tensor is interpreted as RGBA.

The images have the same number of channels as the input tensor. For float input, the values are normalized one image at a time to fit in the range [0, 255]. uint8 values are unchanged. The op uses two different normalization algorithms:

• If the input values are all positive, they are rescaled so the largest one is 255.

• If any input value is negative, the values are shifted so input value 0.0 is at 127. They are then rescaled so that either the smallest value is 0, or the largest one is 255.

The tag argument is a scalar Tensor of type string. It is used to build the tag of the summary values:

• If max_images is 1, the summary value tag is 'tag/image'.
• If max_images is greater than 1, the summary value tags are generated sequentially as 'tag/image/0', 'tag/image/1', etc.
##### Args:
• tag: A scalar Tensor of type string. Used to build the tag of the summary values.
• tensor: A 4-D uint8 or float32 Tensor of shape [batch_size, height, width, channels] where channels is 1, 3, or 4.
• max_images: Max number of batch elements to generate images for.
• collections: Optional list of ops.GraphKeys. The collections to add the summary to. Defaults to [ops.GraphKeys.SUMMARIES]
• name: A name for the operation (optional).
##### Returns:

A scalar Tensor of type string. The serialized Summary protocol buffer.

### tf.audio_summary(tag, tensor, sample_rate, max_outputs=3, collections=None, name=None)

Outputs a Summary protocol buffer with audio.

The summary has up to max_outputs summary values containing audio. The audio is built from tensor which must be 3-D with shape [batch_size, frames, channels] or 2-D with shape [batch_size, frames]. The values are assumed to be in the range of [-1.0, 1.0] with a sample rate of sample_rate.

The tag argument is a scalar Tensor of type string. It is used to build the tag of the summary values:

• If max_outputs is 1, the summary value tag is 'tag/audio'.
• If max_outputs is greater than 1, the summary value tags are generated sequentially as 'tag/audio/0', 'tag/audio/1', etc.
##### Args:
• tag: A scalar Tensor of type string. Used to build the tag of the summary values.
• tensor: A 3-D float32 Tensor of shape [batch_size, frames, channels] or a 2-D float32 Tensor of shape [batch_size, frames].
• sample_rate: The sample rate of the signal in hertz.
• max_outputs: Max number of batch elements to generate audio for.
• collections: Optional list of ops.GraphKeys. The collections to add the summary to. Defaults to [ops.GraphKeys.SUMMARIES]
• name: A name for the operation (optional).
##### Returns:

A scalar Tensor of type string. The serialized Summary protocol buffer.

### tf.histogram_summary(tag, values, collections=None, name=None)

Outputs a Summary protocol buffer with a histogram.

The generated Summary has one summary value containing a histogram for values.

This op reports an InvalidArgument error if any value is not finite.

##### Args:
• tag: A string Tensor. 0-D. Tag to use for the summary value.
• values: A real numeric Tensor. Any shape. Values to use to build the histogram.
• collections: Optional list of graph collections keys. The new summary op is added to these collections. Defaults to [GraphKeys.SUMMARIES].
• name: A name for the operation (optional).
##### Returns:

A scalar Tensor of type string. The serialized Summary protocol buffer.

### tf.nn.zero_fraction(value, name=None)

Returns the fraction of zeros in value.

If value is empty, the result is nan.

This is useful in summaries to measure and report sparsity. For example,

z = tf.Relu(...)
summ = tf.scalar_summary('sparsity', tf.nn.zero_fraction(z))

##### Args:
• value: A tensor of numeric type.
• name: A name for the operation (optional).
##### Returns:

The fraction of zeros in value, with type float32.

### tf.merge_summary(inputs, collections=None, name=None)

Merges summaries.

This op creates a Summary protocol buffer that contains the union of all the values in the input summaries.

When the Op is run, it reports an InvalidArgument error if multiple values in the summaries to merge use the same tag.

##### Args:
• inputs: A list of string Tensor objects containing serialized Summary protocol buffers.
• collections: Optional list of graph collections keys. The new summary op is added to these collections. Defaults to [GraphKeys.SUMMARIES].
• name: A name for the operation (optional).
##### Returns:

A scalar Tensor of type string. The serialized Summary protocol buffer resulting from the merging.

### tf.merge_all_summaries(key='summaries')

Merges all summaries collected in the default graph.

##### Args:
• key: GraphKey used to collect the summaries. Defaults to GraphKeys.SUMMARIES.
##### Returns:

If no summaries were collected, returns None. Otherwise returns a scalar Tensor of type string containing the serialized Summary protocol buffer resulting from the merging.