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