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)); }
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); }
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); }
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); }