public static void SoftmaxForward(DNNSoftmaxAlgorithm algorithm, DNNSoftmaxMode mode, Tensor x, Tensor y) { using (var dnn = CudaHelpers.TSContextForTensor(x).DNNForTensor(x)) { using (var xPtr = GetDeviceVar(x)) using (var yPtr = GetDeviceVar(y)) using (var xDesc = GetDescriptor(x)) using (var yDesc = GetDescriptor(y)) { dnn.Value.SoftmaxForward((cudnnSoftmaxAlgorithm)algorithm, (cudnnSoftmaxMode)mode, 1, xDesc, xPtr, 0, yDesc, yPtr); } } }
public static void SoftmaxBackward(DNNSoftmaxAlgorithm algorithm, DNNSoftmaxMode mode, Tensor y, Tensor dx, Tensor dy) { using (var dnn = CudaHelpers.TSContextForTensor(y).DNNForTensor(y)) { using (var yPtr = GetDeviceVar(y)) using (var dxPtr = GetDeviceVar(dx)) using (var dyPtr = GetDeviceVar(dy)) using (var yDesc = GetDescriptor(y)) using (var dxDesc = GetDescriptor(dx)) using (var dyDesc = GetDescriptor(dy)) { dnn.Value.SoftmaxBackward((cudnnSoftmaxAlgorithm)algorithm, (cudnnSoftmaxMode)mode, 1, yDesc, yPtr, dyDesc, dyPtr, 0, dxDesc, dxPtr); } } }