Open rcoreilly opened 1 year ago
useful for testing noise params etc. test case was in obelisk -- very out of date -- easier to maintain within axon when doing mass updates. start with ra25 and add these specializations:
// ConfigPats used to configure patterns func (ss *Sim) ConfigPats() { dt := ss.Pats dt.SetMetaData("name", "TrainPats") dt.SetMetaData("desc", "Training patterns") sch := etable.Schema{ {Name: "Name", Type: etensor.STRING, CellShape: nil, DimNames: nil}, {Name: "Input", Type: etensor.FLOAT32, CellShape: []int{5, 5}, DimNames: []string{"Y", "X"}}, {Name: "Output", Type: etensor.FLOAT32, CellShape: []int{5, 5}, DimNames: []string{"Y", "X"}}, } dt.SetFromSchema(sch, ss.NInputs*ss.NOutputs) patgen.PermutedBinaryMinDiff(dt.Cols[1].(*etensor.Float32), 6, 1, 0, 3) patgen.PermutedBinaryMinDiff(dt.Cols[2].(*etensor.Float32), 6, 1, 0, 3) for i := 0; i < ss.NInputs; i++ { for j := 0; j < ss.NOutputs; j++ { dt.SetCellTensor("Input", i*ss.NOutputs+j, dt.CellTensor("Input", i*ss.NOutputs)) dt.SetCellString("Name", i*ss.NOutputs+j, fmt.Sprintf("%d", i)) } } dt.SaveCSV("random_5x5_25_gen.tsv", etable.Tab, etable.Headers) }
// TrialStats computes the trial-level statistics. // Aggregation is done directly from log data. func (ss *Sim) TrialStats() { out := ss.Net.LayerByName("Output").(axon.AxonLayer).AsAxon() ss.Stats.SetFloat("TrlCorSim", float64(out.Vals[0].CorSim.Cor)) ss.Stats.SetFloat("TrlUnitErr", out.PctUnitErr(&ss.Context)[0]) _, cor, cnm := ss.Stats.ClosestPat(ss.Net, "Output", "ActM", 0, ss.Pats, "Output", "Name") //For each name, record map of closest rows that are predicted //For each name, record rows associated with ss.Stats.SetString("TrlClosest", cnm) ss.Stats.SetFloat("TrlCorrel", float64(cor)) ev := ss.Envs[ss.Context.Mode.String()].(*env.FixedTable) tnm := ev.TrialName.Cur if cnm == tnm { ss.Stats.SetFloat("TrlErr", 0) } else { ss.Stats.SetFloat("TrlErr", 1) } }
useful for testing noise params etc. test case was in obelisk -- very out of date -- easier to maintain within axon when doing mass updates. start with ra25 and add these specializations: