Skip to content

Commit

Permalink
save log files
Browse files Browse the repository at this point in the history
  • Loading branch information
rcoreilly committed Nov 18, 2024
1 parent 2cf3eef commit d752eaf
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 80 deletions.
18 changes: 18 additions & 0 deletions axon/simstats.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions axon/simstats.goal
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,29 @@ import (
"cogentcore.org/core/base/timer"
"cogentcore.org/core/enums"
"cogentcore.org/core/plot"
"cogentcore.org/core/tensor"
"cogentcore.org/core/tensor/datafs"
"cogentcore.org/core/tensor/stats/stats"
"cogentcore.org/core/tensor/table"
"github.com/emer/emergent/v2/looper"
)

// LogFilename returns a standard log file name as netName_runName_logName.tsv
func LogFilename(netName, runName, logName string) string {
return netName + "_" + runName + "_" + logName + ".tsv"
}

// OpenLogFile, if on == true, sets the log file for given using given
// netName, runName, and logName in order.
func OpenLogFile(on bool, dt *table.Table, netName, runName, logName string) {
if !on {
return
}
fnm := LogFilename(netName, runName, logName)
tensor.SetPrecision(dt, 4)
dt.OpenLog(fnm, tensor.Tab)
}

// StatLoopCounters adds the counters from each stack, loop level for given
// looper Stacks to the given datafs stats. This is typically the first
// Stat to add, so these counters will be used for X axis values.
Expand Down
72 changes: 32 additions & 40 deletions examples/ra25/ra25.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

72 changes: 32 additions & 40 deletions examples/ra25/ra25.goal
Original file line number Diff line number Diff line change
Expand Up @@ -577,6 +577,7 @@ func (ss *Sim) StatsStep(lmd, ltm enums.Enum) {
return
}
ss.RunStats(mode, level, Step)
ss.StatsData(mode, level).GetDirTable(nil).WriteToLog()
}

// RunStats runs the StatFuncs for given mode, level and phase.
Expand Down Expand Up @@ -883,51 +884,42 @@ func (ss *Sim) RunGUI() {
}

func (ss *Sim) RunNoGUI() {
// if ss.Config.Params.Note != "" {
// mpi.Printf("Note: %s\n", ss.Config.Params.Note)
// }
// if ss.Config.Log.SaveWeights {
// mpi.Printf("Saving final weights per run\n")
// }
// runName := ss.Params.RunName(ss.Config.Run.Run)
// ss.Stats.SetString("RunName", runName) // used for naming logs, stats, etc
// netName := ss.Net.Name

// elog.SetLogFile(&ss.Logs, ss.Config.Log.Trial, Train, Trial, "trl", netName, runName)
// elog.SetLogFile(&ss.Logs, ss.Config.Log.Epoch, Train, Epoch, "epc", netName, runName)
// elog.SetLogFile(&ss.Logs, ss.Config.Log.Run, Train, Run, "run", netName, runName)
// elog.SetLogFile(&ss.Logs, ss.Config.Log.TestEpoch, Test, Epoch, "tst_epc", netName, runName)
// elog.SetLogFile(&ss.Logs, ss.Config.Log.TestTrial, Test, Trial, "tst_trl", netName, runName)
//
// netdata := ss.Config.Log.NetData
// if netdata {
// mpi.Printf("Saving NetView data from testing\n")
// ss.GUI.InitNetData(ss.Net, 200)
// }
//
// ss.Init()
//
// mpi.Printf("Running %d Runs starting at %d\n", ss.Config.Run.NRuns, ss.Config.Run.Run)
// ss.Loops.GetLoop(Train, Run).Counter.SetCurMaxPlusN(ss.Config.Run.Run, ss.Config.Run.NRuns)
//
// if ss.Config.Run.StartWts != "" { // this is just for testing -- not usually needed
// ss.Loops.Step(Train, 1, Trial) // get past NewRun
// ss.Net.OpenWeightsJSON(core.Filename(ss.Config.Run.StartWts))
// mpi.Printf("Starting with initial weights from: %s\n", ss.Config.Run.StartWts)
// }
if ss.Config.Params.Note != "" {
mpi.Printf("Note: %s\n", ss.Config.Params.Note)
}
if ss.Config.Log.SaveWeights {
mpi.Printf("Saving final weights per run\n")
}
runName := ss.Params.RunName(ss.Config.Run.Run)
datafs.Scalar[string](ss.Current, "RunName").SetString1D(runName, 0)
netName := ss.Net.Name

ss.Init()

axon.OpenLogFile(ss.Config.Log.Trial, ss.StatsData(Train, Trial).GetDirTable(nil), netName, runName, "trl")
axon.OpenLogFile(ss.Config.Log.Epoch, ss.StatsData(Train, Epoch).GetDirTable(nil), netName, runName, "epc")
axon.OpenLogFile(ss.Config.Log.Run, ss.StatsData(Train, Run).GetDirTable(nil), netName, runName, "run")

axon.OpenLogFile(ss.Config.Log.TestTrial, ss.StatsData(Test, Trial).GetDirTable(nil), netName, runName, "trl")
axon.OpenLogFile(ss.Config.Log.TestEpoch, ss.StatsData(Test, Epoch).GetDirTable(nil), netName, runName, "epc")

mpi.Printf("Running %d Runs starting at %d\n", ss.Config.Run.NRuns, ss.Config.Run.Run)
ss.Loops.Loop(Train, Run).Counter.SetCurMaxPlusN(ss.Config.Run.Run, ss.Config.Run.NRuns)

if ss.Config.Run.StartWts != "" { // this is just for testing -- not usually needed
ss.Loops.Step(Train, 1, Trial) // get past NewRun
ss.Net.OpenWeightsJSON(core.Filename(ss.Config.Run.StartWts))
mpi.Printf("Starting with initial weights from: %s\n", ss.Config.Run.StartWts)
}

// if ss.Config.Run.GPU {
// ss.Net.ConfigGPUnoGUI(&ss.Context)
// }
// mpi.Printf("Set NThreads to: %d\n", ss.Net.NThreads)
//
// ss.Loops.Run(Train)
//
// ss.Logs.CloseLogFiles()
//
// if netdata {
// ss.GUI.SaveNetData(ss.Stats.String("RunName"))
// }

ss.Loops.Run(Train)

ss.StatsData(Train, Epoch).GetDirTable(nil).CloseLog()

// ss.Net.GPU.Destroy() // safe even if no GPU
}

0 comments on commit d752eaf

Please sign in to comment.