Beispiel #1
0
        /// <summary>
        /// 读取PD_ZeroCopyTensor类型
        /// </summary>
        /// <param name="zeroCopyTensor"></param>
        /// <returns></returns>
        public static object GetValue(this PD_ZeroCopyTensor zeroCopyTensor)
        {
            var bs = zeroCopyTensor.Data.ReadData();

            if (zeroCopyTensor.Shape.Length > 0)
            {
                var shape     = GetInt32(zeroCopyTensor.Shape.ReadData());
                var lod       = GetInt32(zeroCopyTensor.Lod.ReadData());
                var numLength = 0;
                var length    = 0;
                switch (zeroCopyTensor.Dtype)
                {
                case PD_DataType.PD_FLOAT32:
                {
                    numLength = sizeof(float);
                    length    = bs.Length / numLength;
                    List <float> data = new List <float>();
                    for (int i = 0; i < length; i++)
                    {
                        data.Add(BitConverter.ToSingle(bs, i * numLength));
                    }
                    return(new DataRead <float>(data, shape, lod));
                }

                case PD_DataType.PD_INT32:
                {
                    numLength = sizeof(int);
                    length    = bs.Length / numLength;
                    List <int> data = new List <int>();
                    for (int i = 0; i < length; i++)
                    {
                        data.Add(BitConverter.ToInt32(bs, i * numLength));
                    }
                    return(new DataRead <int>(data, shape, lod));
                }

                case PD_DataType.PD_INT64:
                {
                    numLength = sizeof(long);
                    length    = bs.Length / numLength;
                    List <long> data = new List <long>();
                    for (int i = 0; i < length; i++)
                    {
                        data.Add(BitConverter.ToInt64(bs, i * numLength));
                    }
                    return(new DataRead <long>(data, shape, lod));
                }
                }
            }
            else
            {
                return(bs);
            }
            return(null);
        }
Beispiel #2
0
 public static extern void PD_GetZeroCopyOutput(IntPtr predictor, ref PD_ZeroCopyTensor zeroCopyTensor);