コード例 #1
0
ファイル: main.go プロジェクト: unixpickle/weakai
func main() {
	training := mnist.LoadTrainingDataSet()
	samples := make([][]bool, len(training.Samples))
	for i, sample := range training.Samples {
		samples[i] = make([]bool, len(sample.Intensities))
		for j, x := range sample.Intensities {
			if x > 0.5 {
				samples[i][j] = true
			}
		}
	}

	layers := buildLayers()
	trainer := rbm.Trainer{
		GibbsSteps: GibbsSteps,
		StepSize:   BigStepSize,
		Epochs:     BigEpochs,
		BatchSize:  runtime.GOMAXPROCS(0),
	}
	log.Println("Training...")
	trainer.TrainDeep(layers, samples[:1000])
	trainer.StepSize = SmallStepSize
	trainer.Epochs = SmallEpochs
	trainer.TrainDeep(layers, samples[:1000])
	log.Println("Generating outputs...")

	testingSamples := mnist.LoadTestingDataSet()

	mnist.SaveReconstructionGrid("output.png", func(img []float64) []float64 {
		return reconstruct(layers, img)
	}, testingSamples, ReconstructionGridSize, ReconstructionGridSize)
}
コード例 #2
0
ファイル: main.go プロジェクト: unixpickle/weakai
func pretrainedClassifier(d [][]bool) neuralnet.Network {
	log.Println("Pre-training with DBN...")

	trainer := rbm.Trainer{
		GibbsSteps: BoltzmannGibbsSteps,
		StepSize:   BoltzmannStepSize,
		Epochs:     BoltzmannEpochs,
		BatchSize:  runtime.GOMAXPROCS(0),
	}
	layers := createDBN()
	trainer.TrainDeep(layers, d[:BoltzmannSamples])

	classifier := layers.BuildANN()
	outputLayer := &neuralnet.DenseLayer{
		InputCount:  LayerSizes[len(LayerSizes)-1],
		OutputCount: DigitCount,
	}
	outputLayer.Randomize()
	classifier = append(classifier, outputLayer, neuralnet.Sigmoid{})

	return classifier
}