struct TrainingSampleResult
    sample::TrainingSample
    outputs::Vector{SingleNetworkOutput}
end

struct TrainingSampleResultSVG
    result::TrainingSampleResult
end

svg(x::TrainingSampleResult) = TrainingSampleResultSVG(x)

function Base.show(io::IO, m::MIME"image/svg+xml", x::TrainingSampleResultSVG)
    sample = x.result.sample
    initial_grid = getinferencegrid(
        sample.image_state, 
        sample.targets[1], 
        "INITIAL INFERENCE", 
        "INPUT"
    )
    recurrent_grids = getrecurrentinfgrid(sample)
    g = Grid(
        [initial_grid, recurrent_grids...], 
        :, 
        1, 
        header=(text="TRAINING SAMPLE"),
        line_thickness=0,
        margin=15,
    )
    show(io, m, g)
end