private static void loadBatch(DataBatchArgs e, List <Tuple <byte[], int> > rgData, ref int nIdx) { string strData; List <int> rgDataDim = e.GetInputAt(0, out strData); string strLabel; List <int> rgLabelDim = e.GetInputAt(1, out strLabel); float[] rgRawData = new float[rgData[0].Item1.Length * e.BatchSize]; float[] rgRawLabels = new float[e.BatchSize * rgLabelDim[0]]; List <int> rgDimData = new List <int>() { e.BatchSize }; List <int> rgDimLabels = new List <int>() { e.BatchSize }; int nDataOffset = 0; int nLabelOffset = 0; rgDimData.AddRange(rgDataDim); rgDimLabels.AddRange(rgLabelDim); for (int i = 0; i < e.BatchSize; i++) { int nLabel = rgData[nIdx].Item2; rgRawLabels[nLabelOffset + nLabel] = 1; for (int j = 0; j < rgData[nIdx].Item1.Length; j++) { float fVal = rgData[nIdx].Item1[j]; // Binarize data if (fVal > 0) { fVal = 1.0f; } rgRawData[nDataOffset + j] = fVal; } nDataOffset += rgData[nIdx].Item1.Length; nLabelOffset += 10; nIdx++; if (nIdx == rgData.Count) { nIdx = 0; } } DenseTensor <float> tensorData = new DenseTensor <float>(rgRawData, rgDimData.ToArray()); DenseTensor <float> tensorLabels = new DenseTensor <float>(rgRawLabels, rgDimLabels.ToArray()); e.Values.Add(NamedOnnxValue.CreateFromTensor <float>(strData, tensorData)); e.Values.Add(NamedOnnxValue.CreateFromTensor <float>(strLabel, tensorLabels)); }
private static void OnGetTrainingDataBatch(object sender, DataBatchArgs e) { loadBatch(e, m_rgTestingData, ref m_nTestingDataIdx); }