예제 #1
0
func TestExecute(t *testing.T) {
	PngBefore = "Before.png"
	PngAfter = "After.png"
	Filename = "Food.txt"
	ValidFilename := "Food.txt"
	Train = true
	Normalize = true

	somf.Gridsize = 25
	somf.Dimensions = 3
	somf.Interactions = 5000
	somf.TxVar = 0.5

	patterns, _, labels := somf.LoadFile(ValidFilename)

	Execute()

	for i := 0; i < len(patterns); i++ {
		Weights, label := somf.Koh.Test(patterns[i])

		if labels[i] != label {
			err := errors.New("Erro: Resposta errada!")
			t.Fatal(err)
		}

		if int(Weights[i]*100) < 99 {
			err := errors.New("Porcentagem menor que 99%")
			t.Fatal(err)
		}
	}
}
예제 #2
0
func Execute() {
	ShowParams()
	var patterns [][]float64
	var out [][]float64
	var labels []string

	// faz a leitura dos dados de treinamento
	if Loadtype == 0 {
		patterns, out, labels = somf.LoadFile(Filename)
	}
	if Loadtype == 1 {
		patterns, out, labels = somf.LoadKDDCup()
		Normalize = false
	}
	if Loadtype == 2 {
		somf.Koh = somf.LoadJson(Filename)
	} else {
		somf.Koh.Patterns = patterns
		somf.Koh.NumReg = len(patterns)
		somf.Koh.DimensionsOut = len(labels)
		somf.Koh.Labels = labels
		somf.Koh.Result = out

		somf.Koh = somf.Koh.Create(somf.Gridsize, somf.Dimensions, somf.Interactions, somf.TxVar)
	}

	if somf.Koh.Empty() {
		return
	}

	// Desenha o estado atual da grade antes do treino
	somf.Koh.Draw(PngBefore)

	if Normalize {
		somf.Koh = somf.Koh.NormalisePatterns()
	}

	if Train {
		// faz o treinamento da base de dados
		somf.Koh = somf.Koh.Train()
	}
	// Desenha o estado atual da grade depois do treino
	somf.Koh.Draw(PngAfter)

	// verifica se deve salvar o treinamento
	if Saved {
		somf.SaveJson(Savename)
	}
}