Esempio n. 1
0
        public async Task <List <Word> > GetWords(int count, LearningStatus status)
        {
            var words = new List <Word>();

            var allWords = await _db.GetWordsWithStatus(status);

            if (allWords.Count == 0)
            {
                return(null);
            }

            var wordsEstimates = allWords.ToDictionary(x => x, x => x.CalculateEstimation());


            for (var i = 0; i < count; i++)
            {
                var wordsProbabilities = wordsEstimates.GetProbabilities();

                var randomValue = Rand.NextDouble();
                var value       = 0d;
                foreach (var(word, p) in wordsProbabilities)
                {
                    value += p;
                    if (randomValue <= value)
                    {
                        words.Add(word);
                        wordsEstimates.Remove(word);
                        break;
                    }
                }
            }

            return(words);
        }
Esempio n. 2
0
        public async Task <List <Word> > GetWordsWithStatus(LearningStatus status)
        {
            using var db = Con;
            var words = await db.QueryAsync <Word>(Sql.SelectWordsWithStatus, new { status });

            return(words.ToList());
        }
        public StudentXRoadStep(Student student, RoadStep roadStep, LearningStatus learningStatus)
        {
            RoadStep       = roadStep;
            Student        = student;
            CreateDate     = DateTime.Now;
            LearningStatus = learningStatus;

            StudentResourceRatings = new List <StudentResourceRating>();
        }
Esempio n. 4
0
        void StartLearning()
        {
            var result = _learningService.SetupAndGetFirstQuestion(_questions);

            _currentState    = StatesTypeEnum.Answer;
            _currentQuestion = result.NextQuestion;
            _status          = result.Status;

            SetDialog();
        }
Esempio n. 5
0
        // again clicked
        private void Button3_Click(object sender, EventArgs e)
        {
            var result = _learningService.ProcessResultAndGetNextQuestion(_currentQuestion, QuestionResult.Again);

            _currentQuestion = result.NextQuestion;
            _status          = result.Status;
            _currentState    = StatesTypeEnum.Answer;

            SetDialog();
        }
Esempio n. 6
0
        private void startButton_Click(object sender, EventArgs e)
        {
            saveLayerActivationCheckBox.Enabled = false;
            saveWeightCheckBox.Enabled          = false;

            learningStatus      = LearningStatus.Training;
            startButton.Enabled = false;
            pauseButton.Enabled = true;
            exitButton.Enabled  = false;


            processThread        = new Thread(new ThreadStart(ProcessThread));
            controlRefreshThread = new Thread(new ThreadStart(ControlRefreshThread));
            processThread.Start();
            controlRefreshThread.Start();
        }
Esempio n. 7
0
        // memorized clicked
        private void Button1_Click(object sender, EventArgs e)
        {
            var result = _learningService.ProcessResultAndGetNextQuestion(_currentQuestion, QuestionResult.Memorized);


            _currentQuestion = result.NextQuestion;
            _status          = result.Status;


            if (result.Status.IsAnythingToLearn)
            {
                _currentState = StatesTypeEnum.Answer;
            }
            else
            {
                _currentState = StatesTypeEnum.NothingElseToLearn;
            }

            SetDialog();
        }
Esempio n. 8
0
 private void LoadWordsWithStatus(LearningStatus status)
 {
     _db.GetWordsWithStatus(status).ContinueWith(InitWordsPage);
 }
Esempio n. 9
0
        private void ProcessThread()
        {
            for (int batchIndex = currentBathDataIndex; batchIndex < batchDataList.Count; batchIndex++)
            {
                learningStatus = LearningStatus.Training;

                currentBathDataIndex = batchIndex;

                simulator         = batchDataList[batchIndex].Simulator;
                learningSetupList = batchDataList[batchIndex].LearningSetupList;

                simulator.UseActivationInformation = saveLayerActivationCheckBox.Checked;
                simulator.UseWeightInformation     = saveWeightCheckBox.Checked;

                this.Invoke(new MethodInvoker(delegate
                {
                    BatchListBoxRefresh();
                    TestDisplayRefresh();
                }));

                for (int learningSetupIndex = currentLearningSetupIndex; learningSetupIndex < learningSetupList.Count; learningSetupIndex++)
                {
                    totalEpoch = 0;
                    for (int i = 0; i < learningSetupIndex; i++)
                    {
                        totalEpoch += learningSetupList[i].TrainingEpoch;
                    }

                    currentLearningSetupIndex = learningSetupIndex;
                    List <MatchingInformation> currentTrainingMatchingInformationList = learningSetupList[learningSetupIndex].TrainingMatchingInformationList;
                    List <MatchingInformation> currentTestMatchingInformationList     = learningSetupList[learningSetupIndex].TestMatchingInformationList;

                    List <TrialInformation> testMatrixTrialInformationList = new List <TrialInformation>();
                    foreach (MatchingInformation testMatchingInformation in currentTestMatchingInformationList)
                    {
                        bool isSRN = false;
                        foreach (Order order in simulator.ProcessDictionary[testMatchingInformation.ProcessName])
                        {
                            if (order.Code == OrderCode.SRNTraining || order.Code == OrderCode.SRNTest)
                            {
                                isSRN = true;
                            }
                        }

                        List <StimuliMatrix> stimuliMatrixList;
                        if (isSRN && learningSetupList[learningSetupIndex].MatrixCalculationSize == 1)
                        {
                            stimuliMatrixList = simulator.StimuliPackDictionary[testMatchingInformation.StimuliPackName].GetMatrixStimuliData(true, true, 1);
                        }
                        else
                        {
                            stimuliMatrixList = simulator.StimuliPackDictionary[testMatchingInformation.StimuliPackName].GetMatrixStimuliData(false, false, simulator.StimuliPackDictionary[testMatchingInformation.StimuliPackName].Count);
                        }
                        foreach (StimuliMatrix stimuliMatrix in stimuliMatrixList)
                        {
                            TrialInformation newTestTrialInformation = new TrialInformation();
                            newTestTrialInformation.Process       = simulator.ProcessDictionary[testMatchingInformation.ProcessName];
                            newTestTrialInformation.PatternSetup  = testMatchingInformation.PatternSetup;
                            newTestTrialInformation.StimuliMatrix = stimuliMatrix;

                            testMatrixTrialInformationList.Add(newTestTrialInformation);
                        }
                    }

                    if (currentEpoch == 0)
                    {
                        learningStatus = LearningStatus.Test;
                        if (simulator.UseWeightInformation)
                        {
                            simulator.WeightInformationReader(totalEpoch + 0);
                        }
                        for (int testIndex = 0; testIndex < testMatrixTrialInformationList.Count; testIndex++)
                        {
                            simulator.Process(testMatrixTrialInformationList[testIndex], totalEpoch + 0);
                        }
                    }

                    for (int epochIndex = currentEpoch; epochIndex < learningSetupList[learningSetupIndex].TrainingEpoch; epochIndex++)
                    {
                        learningStatus = LearningStatus.Training;

                        currentTick = DateTime.Now.Ticks;

                        currentEpoch = epochIndex;

                        List <TrialInformation> trainingMatrixTrialInformationList = new List <TrialInformation>();
                        foreach (MatchingInformation trainingMatchingInformation in currentTrainingMatchingInformationList)
                        {
                            List <StimuliMatrix> stimuliMatrixList = new List <StimuliMatrix>();
                            switch (learningSetupList[learningSetupIndex].TrainingProcessMode)
                            {
                            case ProcessMode.RandomAll:
                            case ProcessMode.RandomInStimuliPack:
                                stimuliMatrixList = simulator.StimuliPackDictionary[trainingMatchingInformation.StimuliPackName].GetMatrixStimuliData(true, true, learningSetupList[learningSetupIndex].MatrixCalculationSize);
                                break;

                            case ProcessMode.SequentialAll:
                            case ProcessMode.SequentialinStimuliPack:
                                stimuliMatrixList = simulator.StimuliPackDictionary[trainingMatchingInformation.StimuliPackName].GetMatrixStimuliData(true, false, learningSetupList[learningSetupIndex].MatrixCalculationSize);
                                break;
                            }

                            foreach (StimuliMatrix stimuliMatrix in stimuliMatrixList)
                            {
                                TrialInformation newTrainingTrialInformation = new TrialInformation();
                                newTrainingTrialInformation.Process       = simulator.ProcessDictionary[trainingMatchingInformation.ProcessName];
                                newTrainingTrialInformation.PatternSetup  = trainingMatchingInformation.PatternSetup;
                                newTrainingTrialInformation.StimuliMatrix = stimuliMatrix;

                                trainingMatrixTrialInformationList.Add(newTrainingTrialInformation);
                            }
                        }

                        switch (learningSetupList[learningSetupIndex].TrainingProcessMode)
                        {
                        case ProcessMode.RandomAll:
                        case ProcessMode.SequentialinStimuliPack:
                            trainingMatrixTrialInformationList = trainingMatrixTrialInformationList.OrderBy(x => (SimulatorAccessor.random.Next())).ToList();
                            break;
                        }

                        currentTrialInformationCount = trainingMatrixTrialInformationList.Count;
                        for (int trainingIndex = 0; trainingIndex < trainingMatrixTrialInformationList.Count; trainingIndex++)
                        {
                            currentProcessName     = trainingMatrixTrialInformationList[trainingIndex].Process.Name;
                            currentStimuliPackName = trainingMatrixTrialInformationList[trainingIndex].StimuliMatrix.PackName;
                            simulator.Process(trainingMatrixTrialInformationList[trainingIndex], totalEpoch + epochIndex + 1);
                            currentTrainingIndex = trainingIndex;
                        }

                        if ((epochIndex + 1) % learningSetupList[learningSetupIndex].TestTiming == 0)
                        {
                            learningStatus = LearningStatus.Test;
                            if (simulator.UseWeightInformation)
                            {
                                simulator.WeightInformationReader(totalEpoch + epochIndex + 1);
                            }
                            for (int testIndex = 0; testIndex < testMatrixTrialInformationList.Count; testIndex++)
                            {
                                simulator.Process(testMatrixTrialInformationList[testIndex], totalEpoch + epochIndex + 1);
                            }

                            try { this.Invoke(new MethodInvoker(delegate { TestDisplayRefresh(); })); }
                            catch { }
                        }

                        if (learningStatus == LearningStatus.Pausing)
                        {
                            currentEpoch = epochIndex + 1;
                            break;
                        }

                        currentTick = DateTime.Now.Ticks;
                    }

                    if (learningStatus == LearningStatus.Pausing)
                    {
                        if (currentEpoch >= learningSetupList[learningSetupIndex].TrainingEpoch)
                        {
                            currentEpoch = 0;
                            currentLearningSetupIndex = learningSetupIndex + 1;
                        }
                        if (currentLearningSetupIndex >= learningSetupList.Count)
                        {
                            currentLearningSetupIndex = 0;
                            currentBathDataIndex      = batchIndex + 1;
                        }
                        break;
                    }
                    else
                    {
                        string resultPath = simulator.OutputResult();
                        simulator.WeightSave(resultPath + "Status.WDATA");

                        currentLearningSetupIndex = 0;
                        currentEpoch = 0;
                        totalEpoch   = 0;
                    }
                }
                if (learningStatus == LearningStatus.Pausing)
                {
                    learningStatus = LearningStatus.Paused;
                    break;
                }
            }
            if (learningStatus == LearningStatus.Training || learningStatus == LearningStatus.Test)
            {
                learningStatus = LearningStatus.End;
            }
        }
Esempio n. 10
0
 private void pauseButton_Click(object sender, EventArgs e)
 {
     learningStatus      = LearningStatus.Pausing;
     pauseButton.Enabled = false;
 }
Esempio n. 11
0
        private void startButton_Click(object sender, EventArgs e)
        {
            saveLayerActivationCheckBox.Enabled = false;
            saveWeightCheckBox.Enabled = false;

            learningStatus = LearningStatus.Training;
            startButton.Enabled = false;
            pauseButton.Enabled = true;
            exitButton.Enabled = false;

            processThread = new Thread(new ThreadStart(ProcessThread));
            controlRefreshThread = new Thread(new ThreadStart(ControlRefreshThread));
            processThread.Start();
            controlRefreshThread.Start();
        }
Esempio n. 12
0
        private void ProcessThread()
        {
            for (int batchIndex = currentBathDataIndex; batchIndex < batchDataList.Count; batchIndex++)
            {
                learningStatus = LearningStatus.Training;

                currentBathDataIndex = batchIndex;

                simulator = batchDataList[batchIndex].Simulator;
                learningSetupList = batchDataList[batchIndex].LearningSetupList;

                simulator.UseActivationInformation = saveLayerActivationCheckBox.Checked;
                simulator.UseWeightInformation = saveWeightCheckBox.Checked;

                this.Invoke(new MethodInvoker(delegate
                {
                    BatchListBoxRefresh();
                    TestDisplayRefresh();
                }));

                for (int learningSetupIndex = currentLearningSetupIndex; learningSetupIndex < learningSetupList.Count; learningSetupIndex++)
                {
                    totalEpoch = 0;
                    for (int i = 0; i < learningSetupIndex; i++) totalEpoch += learningSetupList[i].TrainingEpoch;

                    currentLearningSetupIndex = learningSetupIndex;
                    List<MatchingInformation> currentTrainingMatchingInformationList = learningSetupList[learningSetupIndex].TrainingMatchingInformationList;
                    List<MatchingInformation> currentTestMatchingInformationList = learningSetupList[learningSetupIndex].TestMatchingInformationList;

                    List<TrialInformation> testMatrixTrialInformationList = new List<TrialInformation>();
                    foreach (MatchingInformation testMatchingInformation in currentTestMatchingInformationList)
                    {
                        bool isSRN = false;
                        foreach (Order order in simulator.ProcessDictionary[testMatchingInformation.ProcessName])
                        {
                            if (order.Code == OrderCode.SRNTraining || order.Code == OrderCode.SRNTest) isSRN = true;
                        }

                        List<StimuliMatrix> stimuliMatrixList;
                        if (isSRN && learningSetupList[learningSetupIndex].MatrixCalculationSize == 1) stimuliMatrixList = simulator.StimuliPackDictionary[testMatchingInformation.StimuliPackName].GetMatrixStimuliData(true, true, 1);
                        else stimuliMatrixList = simulator.StimuliPackDictionary[testMatchingInformation.StimuliPackName].GetMatrixStimuliData(false, false, simulator.StimuliPackDictionary[testMatchingInformation.StimuliPackName].Count);
                        foreach (StimuliMatrix stimuliMatrix in stimuliMatrixList)
                        {
                            TrialInformation newTestTrialInformation = new TrialInformation();
                            newTestTrialInformation.Process = simulator.ProcessDictionary[testMatchingInformation.ProcessName];
                            newTestTrialInformation.PatternSetup = testMatchingInformation.PatternSetup;
                            newTestTrialInformation.StimuliMatrix = stimuliMatrix;

                            testMatrixTrialInformationList.Add(newTestTrialInformation);
                        }
                    }

                    if (currentEpoch == 0)
                    {
                        learningStatus = LearningStatus.Test;
                        if (simulator.UseWeightInformation) simulator.WeightInformationReader(totalEpoch + 0);
                        for (int testIndex = 0; testIndex < testMatrixTrialInformationList.Count; testIndex++)
                        {
                            simulator.Process(testMatrixTrialInformationList[testIndex], totalEpoch + 0);
                        }

                    }

                    for (int epochIndex = currentEpoch; epochIndex < learningSetupList[learningSetupIndex].TrainingEpoch; epochIndex++)
                    {
                        learningStatus = LearningStatus.Training;

                        currentTick = DateTime.Now.Ticks;

                        currentEpoch = epochIndex;

                        List<TrialInformation> trainingMatrixTrialInformationList = new List<TrialInformation>();
                        foreach (MatchingInformation trainingMatchingInformation in currentTrainingMatchingInformationList)
                        {
                            List<StimuliMatrix> stimuliMatrixList = new List<StimuliMatrix>();
                            switch (learningSetupList[learningSetupIndex].TrainingProcessMode)
                            {
                                case ProcessMode.RandomAll:
                                case ProcessMode.RandomInStimuliPack:
                                    stimuliMatrixList = simulator.StimuliPackDictionary[trainingMatchingInformation.StimuliPackName].GetMatrixStimuliData(true, true, learningSetupList[learningSetupIndex].MatrixCalculationSize);
                                    break;
                                case ProcessMode.SequentialAll:
                                case ProcessMode.SequentialinStimuliPack:
                                    stimuliMatrixList = simulator.StimuliPackDictionary[trainingMatchingInformation.StimuliPackName].GetMatrixStimuliData(true, false, learningSetupList[learningSetupIndex].MatrixCalculationSize);
                                    break;
                            }

                            foreach (StimuliMatrix stimuliMatrix in stimuliMatrixList)
                            {
                                TrialInformation newTrainingTrialInformation = new TrialInformation();
                                newTrainingTrialInformation.Process = simulator.ProcessDictionary[trainingMatchingInformation.ProcessName];
                                newTrainingTrialInformation.PatternSetup = trainingMatchingInformation.PatternSetup;
                                newTrainingTrialInformation.StimuliMatrix = stimuliMatrix;

                                trainingMatrixTrialInformationList.Add(newTrainingTrialInformation);
                            }
                        }

                        switch (learningSetupList[learningSetupIndex].TrainingProcessMode)
                        {
                            case ProcessMode.RandomAll:
                            case ProcessMode.SequentialinStimuliPack:
                                trainingMatrixTrialInformationList = trainingMatrixTrialInformationList.OrderBy(x => (SimulatorAccessor.random.Next())).ToList();
                                break;
                        }

                        currentTrialInformationCount = trainingMatrixTrialInformationList.Count;
                        for (int trainingIndex = 0; trainingIndex < trainingMatrixTrialInformationList.Count; trainingIndex++)
                        {
                            currentProcessName = trainingMatrixTrialInformationList[trainingIndex].Process.Name;
                            currentStimuliPackName = trainingMatrixTrialInformationList[trainingIndex].StimuliMatrix.PackName;
                            simulator.Process(trainingMatrixTrialInformationList[trainingIndex], totalEpoch + epochIndex + 1);
                            currentTrainingIndex = trainingIndex;
                        }

                        if ((epochIndex + 1) % learningSetupList[learningSetupIndex].TestTiming == 0)
                        {
                            learningStatus = LearningStatus.Test;
                            if (simulator.UseWeightInformation) simulator.WeightInformationReader(totalEpoch + epochIndex + 1);
                            for (int testIndex = 0; testIndex < testMatrixTrialInformationList.Count; testIndex++)
                            {
                                simulator.Process(testMatrixTrialInformationList[testIndex], totalEpoch + epochIndex + 1);
                            }

                            try { this.Invoke(new MethodInvoker(delegate { TestDisplayRefresh(); })); }
                            catch { }
                        }

                        if (learningStatus == LearningStatus.Pausing)
                        {
                            currentEpoch = epochIndex + 1;
                            break;
                        }

                        currentTick = DateTime.Now.Ticks;
                    }

                    if (learningStatus == LearningStatus.Pausing)
                    {
                        if (currentEpoch >= learningSetupList[learningSetupIndex].TrainingEpoch)
                        {
                            currentEpoch = 0;
                            currentLearningSetupIndex = learningSetupIndex + 1;
                        }
                        if(currentLearningSetupIndex >= learningSetupList.Count)
                        {
                            currentLearningSetupIndex = 0;
                            currentBathDataIndex = batchIndex + 1;
                        }
                        break;
                    }
                    else
                    {
                        string resultPath = simulator.OutputResult();
                        simulator.WeightSave(resultPath + "Status.WDATA");

                        currentLearningSetupIndex = 0;
                        currentEpoch = 0;
                        totalEpoch = 0;
                    }
                }
                if (learningStatus == LearningStatus.Pausing)
                {
                    learningStatus = LearningStatus.Paused;
                    break;
                }
            }
            if (learningStatus == LearningStatus.Training || learningStatus == LearningStatus.Test) learningStatus = LearningStatus.End;
        }
Esempio n. 13
0
 private void pauseButton_Click(object sender, EventArgs e)
 {
     learningStatus = LearningStatus.Pausing;
     pauseButton.Enabled = false;
 }