estats

package
v1.1.52 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2022 License: BSD-3-Clause Imports: 9 Imported by: 25

README

Docs: GoDoc

estats.Stats provides maps for storing statistics as named scalar and tensor values. These stats are available in the elog.Context for use during logging -- see elog Docs.

To make relevant stats visible to users, call the Print function with a list of stat names -- this can be passed to the Netview Record method to show these stats at the bottom of the network view, and / or displayed in a Sims field.

There are 3 main data types supported: Float (float64), String, and Int. The Float interface to Tables uses float64 so for simple scalar values, it is simpler to just use the float64 instead of also supporting float32. However, for Tensor data, network data is often float32 so we have F32Tensor and F64Tensor for float32 and float64 respectively.

There are also various utility functions for computing various useful statistics.

Examples

A common use-case for example is to use F32Tensor to manage a tensor that is reused every time you need to access values on a given layer (this was commonly named ValsTsr in existing Sims):

    ly := ctxt.Net.LayerByName(lnm)
    tsr := ctxt.Stats.F32TEnsorr(lnm)
    ly.UnitValsTensor(tsr, "Act")
    // tsr now has the "Act" values from given layer -- can be logged, computed on, etc..

The above also now available as a convenience function named SetLayerTensor (also present in elog.Context).

Stats functions

  • SetLayerTensor does the above storing of unit values to a tensor.

  • ClosestPat finds the closest pattern in given column of given table of possible patterns, based on unit layer activations from SetLayerTensor

  • PCAStats computes PCA (principal components analysis) statistics on activity patterns in a table -- Helpful for measuring the overall information (variance) in the representations, to detect a common failure mode where a few patterns dominate over everything ("hogs").

  • Raster functions store raster-based tensor data with X axis = time and Y axis = unit values.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var PCAStrongThr = 0.01

PCAStrongThr is the threshold for counting PCA eigenvalues as "strong"

Functions

This section is empty.

Types

type Stats

type Stats struct {
	Floats     map[string]float64
	Strings    map[string]string
	Ints       map[string]int
	F32Tensors map[string]*etensor.Float32 `desc:"float32 tensor used for grabbing values from layers"`
	F64Tensors map[string]*etensor.Float64 `desc:"float64 tensor as needed for other computations"`
	SimMats    map[string]*simat.SimMat    `desc:"similarity matrix for comparing pattern similarities"`
	PCA        pca.PCA                     `desc:"one PCA object can be reused for all PCA computations"`
	Timers     map[string]*timer.Time      `desc:"named timers available for timing how long different computations take (wall-clock time)"`
}

Stats provides maps for storing statistics as named scalar and tensor values. These stats are available in the elog.Context for use during logging.

func (*Stats) ClosestPat

func (st *Stats) ClosestPat(net emer.Network, layNm, unitVar string, pats *etable.Table, colnm, namecol string) (int, float32, string)

ClosestStat finds the closest pattern in given column of given table of possible patterns, compared to layer activation pattern using given variable. Returns the row number, correlation value, and value of a column named namecol for that row if non-empty. Column must be etensor.Float32

func (*Stats) ConfigRasters

func (st *Stats) ConfigRasters(net emer.Network, layers []string)

ConfigRasters configures spike rasters

func (*Stats) F32Tensor

func (st *Stats) F32Tensor(name string) *etensor.Float32

F32Tensor returns a float32 tensor of given name, creating if not yet made

func (*Stats) F64Tensor

func (st *Stats) F64Tensor(name string) *etensor.Float64

F64Tensor returns a float64 tensor of given name, creating if not yet made

func (*Stats) Float

func (st *Stats) Float(name string) float64

func (*Stats) Init

func (st *Stats) Init()

Init must be called before use to create all the maps

func (*Stats) Int

func (st *Stats) Int(name string) int

func (*Stats) PCAStats

func (st *Stats) PCAStats(ix *etable.IdxView, varNm string, layers []string)

PCAStats computes PCA statistics on recorded hidden activation patterns on given log table (IdxView), and given list of layer names and variable name -- columns named "layer_var". Helpful for measuring the overall information (variance) in the representations to detect a common failure mode where a few patterns dominate over everything ("hogs"). Records Float stats as: layer_PCA_NStrong: number of eigenvalues above the PCAStrongThr threshold layer_PCA_Top5: average strength of top 5 eigenvalues layer_PCA_Next5: average strength of next 5 eigenvalues layer_PCA_Rest: average strength of remaining eigenvalues (if more than 10 total eigens)

func (*Stats) Print

func (st *Stats) Print(stats []string) string

Print returns a formatted Name: Value string of stat values, suitable for displaying at the bottom of the NetView or otherwise printing. Looks for names of stats in order of fields in Stats object (Floats, Strings, Ints)

func (*Stats) RasterRec

func (st *Stats) RasterRec(net emer.Network, cyc int, varNm string, layers []string)

RasterRec records data from given layers, variable name to raster for given cycle number (X axis index)

func (*Stats) ResetStartTimer

func (st *Stats) ResetStartTimer(name string) *timer.Time

ResetStartTimer resets then starts given named timer

func (*Stats) ResetTimer

func (st *Stats) ResetTimer(name string) *timer.Time

ResetTimer resets given named timer

func (*Stats) SetFloat

func (st *Stats) SetFloat(name string, value float64)

func (*Stats) SetInt

func (st *Stats) SetInt(name string, value int)

func (*Stats) SetLayerTensor

func (st *Stats) SetLayerTensor(net emer.Network, layNm, unitVar string) *etensor.Float32

SetLayerTensor sets tensor of Unit values on a layer for given variable to a F32Tensor with name = layNm

func (*Stats) SetRasterCol

func (st *Stats) SetRasterCol(sr, tsr *etensor.Float32, col int)

SetRasterCol sets column of given raster from data

func (*Stats) SetString

func (st *Stats) SetString(name string, value string)

func (*Stats) SimMat

func (st *Stats) SimMat(name string) *simat.SimMat

SimMat returns a SimMat similarity matrix of given name, creating if not yet made

func (*Stats) StartTimer

func (st *Stats) StartTimer(name string) *timer.Time

StartTimer starts given named timer

func (*Stats) StopTimer

func (st *Stats) StopTimer(name string) *timer.Time

StopTimer stops given timer

func (*Stats) String

func (st *Stats) String(name string) string

func (*Stats) Timer

func (st *Stats) Timer(name string) *timer.Time

Timer returns timer of given name, creating if not yet made

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL