Пример #1
0
        public static float[] ToArray(this MPSVector vector)
        {
            var ar = new float[vector.Length];

            Marshal.Copy(vector.Data.Contents, ar, 0, ar.Length);
            return(ar);
        }
        NetworkData.Vector GetVectorData(MPSVector vector)
        {
            var v = new NetworkData.Vector();

            v.Values.AddRange(vector.ToArray());
            return(v);
        }
 public OptimizableVector(IMTLDevice device, MPSVectorDescriptor descriptor, float initialValue)
 {
     VectorLength     = (int)descriptor.Length;
     VectorByteSize   = descriptor.GetByteSize();
     VectorDescriptor = descriptor;
     Value            = Vector(device, descriptor, initialValue);
     Momentum         = Vector(device, descriptor, 0.0f);
     Velocity         = Vector(device, descriptor, 0.0f);
     ValuePointer     = Value.Data.Contents;
 }
Пример #4
0
        public static MPSVector Vector(IMTLDevice device, MPSVectorDescriptor descriptor, float initialValue)
        {
            var v = new MPSVector(device, descriptor);
            var vectorByteSize = GetByteSize(descriptor);

            unsafe {
                float biasInit    = initialValue;
                var   biasInitPtr = (IntPtr)(float *)&biasInit;
                memset_pattern4(v.Data.Contents, biasInitPtr, vectorByteSize);
            }
            return(v);
        }
Пример #5
0
        public static bool IsValid(this MPSVector vector)
        {
            var ar = vector.ToArray();

            for (var i = 0; i < ar.Length; i++)
            {
                var v = ar[i];
                if (float.IsNaN(v))
                {
                    return(false);
                }
                if (float.IsInfinity(v))
                {
                    return(false);
                }
                if (float.IsNegativeInfinity(v))
                {
                    return(false);
                }
            }
            return(true);
        }
        bool SetVectorData(MPSVector vector, NetworkData.Vector data)
        {
            if (data == null)
            {
                return(false);
            }

            var vs = data.Values;
            var n  = (int)vector.Length;

            if (n != vs.Count)
            {
                return(false);
            }

            unsafe {
                var p = (float *)vector.Data.Contents;
                for (var i = 0; i < n; i++)
                {
                    *p++ = vs[i];
                }
            }
            return(true);
        }