CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-tensorboardx

TensorBoardX lets you watch Tensors Flow without Tensorflow

Overview
Eval results
Files

file-writer.mddocs/

File Writer

Low-level writer for protocol buffers to event files, providing fine-grained control over TensorBoard event file creation and management. Used internally by SummaryWriter but available for direct use when manual event handling is needed.

Capabilities

Initialization

Creates a FileWriter for direct protocol buffer event file management with configurable queue and flush settings.

class FileWriter:
    def __init__(
        self,
        logdir: str,
        max_queue: int = 10,
        flush_secs: int = 120,
        filename_suffix: str = ''
    ):
        """
        Creates a FileWriter for protocol buffer event files.

        Parameters:
        - logdir: Directory where event files will be written
        - max_queue: Maximum number of pending events and summaries before flush (default: 10)
        - flush_secs: Seconds between automatic flushes to disk (default: 120)
        - filename_suffix: Suffix added to all event filenames in logdir
        """

Directory Management

Access and manage the log directory for the writer.

def get_logdir(self) -> str:
    """
    Returns the directory where event files will be written.

    Returns:
    str: The log directory path
    """

Event Management

Add raw events and summaries directly to the event file with precise control over timing and metadata.

def add_event(
    self,
    event,
    step: Optional[int] = None,
    walltime: Optional[float] = None
):
    """
    Add a raw event to the event file.

    Parameters:
    - event: Protocol buffer Event object
    - step: Global step value (uses event.step if None)
    - walltime: Timestamp (uses current time if None)
    """

def add_summary(
    self,
    summary,
    global_step: Optional[int] = None,
    walltime: Optional[float] = None
):
    """
    Add a summary protocol buffer to the event file.

    Parameters:
    - summary: Protocol buffer Summary object
    - global_step: Global step value for the summary
    - walltime: Timestamp (uses current time if None)
    """

Graph Management

Add computational graphs directly as protocol buffers to the event file.

def add_graph(
    self,
    graph_profile,
    walltime: Optional[float] = None
):
    """
    Add graph and step stats to the event file.

    Parameters:
    - graph_profile: Graph protocol buffer or RunMetadata
    - walltime: Timestamp (uses current time if None)
    """

def add_onnx_graph(
    self,
    graph,
    walltime: Optional[float] = None
):
    """
    Add ONNX graph to TensorBoard.

    Parameters:
    - graph: ONNX graph protocol buffer
    - walltime: Timestamp (uses current time if None)
    """

def add_openvino_graph(
    self,
    graph,
    walltime: Optional[float] = None
):
    """
    Add OpenVINO graph to TensorBoard.

    Parameters:
    - graph: OpenVINO graph protocol buffer
    - walltime: Timestamp (uses current time if None)
    """

File Control

Manage file flushing, closing, and reopening for precise control over event file lifecycle.

def flush(self):
    """
    Flush pending events and summaries to disk.
    Call this method to ensure all pending events are written.
    """

def close(self):
    """
    Flush all data to disk and close the event file.
    Call when no longer need the writer.
    """

def reopen(self):
    """
    Reopen the EventFileWriter after closing.
    Can be called after close() to add more events in the same directory.
    Events will go into a new event file.
    Does nothing if the writer was not closed.
    """

Metadata Management

Set default metadata for multiple operations using context managers.

def use_metadata(self, *, global_step=None, walltime=None):
    """
    Context manager to temporarily set default metadata for enclosed add_event calls.

    Parameters:
    - global_step: Default global step value for enclosed operations
    - walltime: Default walltime for enclosed operations (uses time.time() if None)

    Returns:
    Context manager that sets default metadata
    """

Usage Examples

Direct Event Creation

from tensorboardX import FileWriter
from tensorboardX.proto import event_pb2, summary_pb2
import time

# Create writer
writer = FileWriter('logs/direct_events')

# Create custom event
event = event_pb2.Event()
event.wall_time = time.time()
event.step = 100

# Create custom summary
summary = summary_pb2.Summary()
value = summary.value.add()
value.tag = 'custom_metric'
value.simple_value = 42.0

# Add to event file
writer.add_summary(summary, global_step=100)
writer.flush()
writer.close()

Using Context Manager

from tensorboardX import FileWriter

# Context manager usage
with FileWriter('logs/context') as writer:
    # Set default metadata for multiple operations
    with writer.use_metadata(global_step=50):
        # Add multiple events with the same step
        writer.add_event(custom_event1)
        writer.add_event(custom_event2)
        writer.add_event(custom_event3)

Manual File Lifecycle Management

from tensorboardX import FileWriter

writer = FileWriter('logs/manual_control', max_queue=5, flush_secs=60)

# Add events manually
for i in range(100):
    writer.add_summary(create_summary(i), global_step=i)
    
    # Force flush every 10 steps
    if i % 10 == 0:
        writer.flush()

# Close and reopen for new data
writer.close()
writer.reopen()

# Add more events to new file
for i in range(100, 200):
    writer.add_summary(create_summary(i), global_step=i)

writer.close()

Error Handling

FileWriter operations can raise exceptions for invalid paths, permission errors, and protocol buffer issues:

from tensorboardX import FileWriter
import os

try:
    # May fail if directory doesn't exist or no write permissions
    writer = FileWriter('/invalid/path')
except OSError as e:
    print(f"Failed to create writer: {e}")

try:
    # Ensure directory exists
    os.makedirs('logs/safe_path', exist_ok=True)
    writer = FileWriter('logs/safe_path')
    
    # Use writer safely
    writer.add_summary(summary, global_step=0)
    
finally:
    writer.close()

Cloud Storage Support

FileWriter supports writing directly to cloud storage with appropriate URLs:

# S3 storage (requires boto3)
writer = FileWriter('s3://mybucket/tensorboard-logs/experiment1')

# Google Cloud Storage (requires google-cloud-storage)  
writer = FileWriter('gs://mybucket/tensorboard-logs/experiment1')

Install with Tessl CLI

npx tessl i tessl/pypi-tensorboardx

docs

file-writer.md

global-writer.md

index.md

record-writer.md

summary-writer.md

torchvis.md

utilities.md

tile.json