public static void LoadData()
        {
            Downloader.DownloadSample(SampleDataset.MNIST);
            var samplePath = Downloader.GetSamplePath(SampleDataset.MNIST);

            train = new DataFrameList <float>(DataFrame <float> .LoadBinary(samplePath.TrainX, 60000, imgDim), DataFrame <float> .LoadBinary(samplePath.TrainY, 60000, labelDim));
            test  = new DataFrameList <float>(DataFrame <float> .LoadBinary(samplePath.TestX, 10000, imgDim), DataFrame <float> .LoadBinary(samplePath.TestY, 10000, labelDim));
        }
Exemplo n.º 2
0
        protected override void AgentReplay(
            int batchSize,
            OptimizerBase optimizer,
            MetricFunction lossMetric,
            bool shuffle)
        {
            var batch = shuffle ? ReplayMemory.ToShuffledBatch(batchSize) : ReplayMemory.ToRandomBatch(batchSize);

            var states       = new DataFrame <float>(StateShape);
            var statesTarget = new DataFrame <float>(StateShape);

            foreach (var sample in batch)
            {
                states.Add(sample.Item1);
                statesTarget.Add(sample.Item4 ?? new float[StateShape.TotalSize]);
            }

            var prediction = Model.Predict(states);
            var predictionOfTargetStates = Model.Predict(statesTarget);
            var predictionTarget         = TargetModel.Predict(statesTarget);

            var data = new DataFrameList <float>(StateShape, ActionShape);

            for (var i = 0; i < batch.Length; i++)
            {
                var sample = batch[i];

                var t = prediction[i];

                if (sample.Item4 == null)
                {
                    t[sample.Item2] = sample.Item3;
                }
                else
                {
                    var lastValue  = float.MinValue;
                    var valueIndex = 0;

                    for (var j = 0; j < predictionOfTargetStates[i].Length; j++)
                    {
                        if (predictionOfTargetStates[i][j] > lastValue)
                        {
                            lastValue  = predictionOfTargetStates[i][j];
                            valueIndex = j;
                        }
                    }

                    t[sample.Item2] = (float)(sample.Item3 + DiscountFactor * predictionTarget[i][valueIndex]);
                }

                data.AddFrame(sample.Item1, t);
            }

            Model.Fit(data, 1, batch.Length, optimizer, lossMetric);
        }
Exemplo n.º 3
0
        public static void LoadData()
        {
            CsvDataFrame <float> frame = new CsvDataFrame <float>();

            Downloader.DownloadSample(SampleDataset.HousingRegression);
            var samplePath = Downloader.GetSamplePath(SampleDataset.HousingRegression);

            frame.ReadCsv(samplePath.Train, true);
            DataFrame <float> trainX = frame[1, 13];
            DataFrame <float> trainY = frame[14, 1];

            trainData = new DataFrameList <float>(trainX, trainY);
        }
Exemplo n.º 4
0
        public static void LoadData()
        {
            featureShape = new Shape(2);
            labelShape   = new Shape(1);
            DataFrame frameX = new DataFrame(featureShape);
            DataFrame frameY = new DataFrame(labelShape);

            /*
             * //One approach of building dataset
             * trainData.Add(new List<float>() { 0, 0 }, 0);
             * trainData.Add(new List<float>() { 0, 1 }, 1);
             * trainData.Add(new List<float>() { 1, 0 }, 1);
             * trainData.Add(new List<float>() { 1, 1 }, 0);
             * trainData.YFrame.OneHotEncode();
             */

            //Second approach
            frameX.Add(0, 0); frameY.Add(0);
            frameX.Add(0, 1); frameY.Add(1);
            frameX.Add(1, 0); frameY.Add(1);
            frameX.Add(1, 1); frameY.Add(0);

            trainData = new DataFrameList(frameX, frameY);
        }