.TH "MPSMatrixNeuron" 3 "Mon Jul 9 2018" "Version MetalPerformanceShaders-119.3" "MetalPerformanceShaders.framework" \" -*- nroff -*- .ad l .nh .SH NAME MPSMatrixNeuron .SH SYNOPSIS .br .PP .PP \fC#import \fP .PP Inherits \fBMPSMatrixUnaryKernel\fP\&. .SS "Instance Methods" .in +1c .ti -1c .RI "(void) \- \fBsetNeuronType:parameterA:parameterB:parameterC:\fP" .br .ti -1c .RI "(\fBMPSCNNNeuronType\fP) \- \fBneuronType\fP" .br .ti -1c .RI "(float) \- \fBneuronParameterA\fP" .br .ti -1c .RI "(float) \- \fBneuronParameterB\fP" .br .ti -1c .RI "(float) \- \fBneuronParameterC\fP" .br .ti -1c .RI "(void) \- \fBsetNeuronToPReLUWithParametersA:\fP" .br .ti -1c .RI "(nonnull instancetype) \- \fBinitWithDevice:\fP" .br .ti -1c .RI "(void) \- \fBencodeToCommandBuffer:inputMatrix:biasVector:resultMatrix:\fP" .br .ti -1c .RI "(nullable instancetype) \- \fBinitWithCoder:device:\fP" .br .ti -1c .RI "(nonnull instancetype) \- \fBcopyWithZone:device:\fP" .br .in -1c .SS "Properties" .in +1c .ti -1c .RI "NSUInteger \fBsourceNumberOfFeatureVectors\fP" .br .ti -1c .RI "NSUInteger \fBsourceInputFeatureChannels\fP" .br .ti -1c .RI "double \fBalpha\fP" .br .in -1c .SS "Additional Inherited Members" .SH "Detailed Description" .PP \fBMPSMatrixNeuron\&.h\fP MetalPerformanceShaders\&.framework .PP \fBCopyright:\fP .RS 4 Copyright (c) 2018 Apple Inc\&. All rights reserved\&. MPSMatrices fused with neurons .RE .PP This depends on Metal\&.framework\&. .PP \fBA\fP neuron activation kernel that operates on matrices\&. .PP \fBA\fP \fBMPSMatrixNeuron\fP object computes: .PP .nf y = neuron(alpha * x + bias) y is the output matrix, x is the input matrix corresponding to a collection of input vectors and bias is a vector which is broadcast and accumulated to each row of the intermediate result. alpha is a scale factor applied to the input. neuron() defines the pointwise function that is applied to the intermediate result. Note: This function computes the same result as MPSMatrixFullyConnected that has unit weight matrix. .fi .PP .SH "Method Documentation" .PP .SS "\- (nonnull instancetype) copyWithZone: (nullable NSZone *) zone(nullable id< MTLDevice >) device" Make a copy of this kernel for a new device - .PP \fBSee also:\fP .RS 4 \fBMPSKernel\fP .RE .PP \fBParameters:\fP .RS 4 \fIzone\fP The NSZone in which to allocate the object .br \fIdevice\fP The device for the new \fBMPSKernel\fP\&. If nil, then use self\&.device\&. .RE .PP \fBReturns:\fP .RS 4 \fBA\fP pointer to a copy of this \fBMPSKernel\fP\&. This will fail, returning nil if the device is not supported\&. Devices must be MTLFeatureSet_iOS_GPUFamily2_v1 or later\&. .RE .PP .PP Reimplemented from \fBMPSKernel\fP\&. .SS "\- (void) encodeToCommandBuffer: (nonnull id< MTLCommandBuffer >) commandBuffer(\fBMPSMatrix\fP *__nonnull) inputMatrix(\fBMPSVector\fP *__nullable) biasVector(\fBMPSMatrix\fP *__nonnull) resultMatrix" Encode a \fBMPSMatrixNeuron\fP object to a command buffer\&. .PP \fBParameters:\fP .RS 4 \fIcommandBuffer\fP \fBA\fP valid MTLCommandBuffer to receive the encoded kernel\&. .br \fIinputMatrix\fP \fBA\fP valid \fBMPSMatrix\fP object which specifies the input array\&. .br \fIbiasVector\fP \fBA\fP valid \fBMPSVector\fP object which specifies the bias values, or a null object to indicate that no bias is to be applied\&. .br \fIresultMatrix\fP \fBA\fP valid \fBMPSMatrix\fP object which specifies the output array\&. .RE .PP Encodes the operation to the specified command buffer\&. resultMatrix must be large enough to hold a MIN(sourceNumberOfFeatureVectors, inputMatrix\&.rows - sourceMatrixOrigin\&.x) x MIN(inputMatrix\&.columns - sourceMatrixOrigin\&.y, sourceInputFeatureChannels) array\&. .PP The bias vector must contain at least MIN(inputMatrix\&.columns - sourceMatrixOrigin\&.y, sourceInputFeatureChannels) elements\&. .SS "\- (nullable instancetype) \fBinitWithCoder:\fP (NSCoder *__nonnull) aDecoder(nonnull id< MTLDevice >) device" \fBNSSecureCoding\fP compatability See \fBMPSKernel::initWithCoder\fP\&. .PP \fBParameters:\fP .RS 4 \fIaDecoder\fP The NSCoder subclass with your serialized \fBMPSMatrixNeuron\fP .br \fIdevice\fP The MTLDevice on which to make the \fBMPSMatrixNeuron\fP object\&. .RE .PP \fBReturns:\fP .RS 4 \fBA\fP new \fBMPSMatrixNeuron\fP object, or nil if failure\&. .RE .PP .PP Reimplemented from \fBMPSKernel\fP\&. .SS "\- (nonnull instancetype) initWithDevice: (nonnull id< MTLDevice >) device" Standard init with default properties per filter type .PP \fBParameters:\fP .RS 4 \fIdevice\fP The device that the filter will be used on\&. May not be NULL\&. .RE .PP \fBReturns:\fP .RS 4 a pointer to the newly initialized object\&. This will fail, returning nil if the device is not supported\&. Devices must be MTLFeatureSet_iOS_GPUFamily2_v1 or later\&. .RE .PP .PP Reimplemented from \fBMPSKernel\fP\&. .SS "\- (float) neuronParameterA " Getter funtion for neuronType set using setNeuronType:parameterA:parameterB:parameterC method .SS "\- (float) neuronParameterB " Getter funtion for neuronType set using setNeuronType:parameterA:parameterB:parameterC method .SS "\- (float) neuronParameterC " Getter funtion for neuronType set using setNeuronType:parameterA:parameterB:parameterC method .SS "\- (\fBMPSCNNNeuronType\fP) neuronType " Getter funtion for neuronType set using setNeuronType:parameterA:parameterB:parameterC method .SS "\- (void) setNeuronToPReLUWithParametersA: (NSData *__nonnull) A" Add per output value neuron parameters \fBA\fP for PReLu neuron activation functions\&. .PP This method sets the neuron to PReLU, zeros parameters \fBA\fP and B and sets the per output value neuron parameters \fBA\fP to an array containing a unique value of \fBA\fP for each output value\&. .PP If the neuron function is f(v,a,b), it will apply .PP .nf resultMatrix(i, j) = f( input(i, j), A[j], B[j] ) where j in [0, sourceInputFeatureChannels] .fi .PP .PP See https://arxiv.org/pdf/1502.01852.pdf for details\&. .PP All other neuron types, where parameter \fBA\fP and parameter B are shared across output values must be set using -setNeuronType:parameterA:parameterB: .PP \fBParameters:\fP .RS 4 \fI\fBA\fP\fP An array containing float values for neuron parameter \fBA\fP\&. Number of entries must be equal to MIN(inputMatrix\&.columns - sourceMatrixOrigin\&.y, sourceInputFeatureChannels) .RE .PP .SS "\- (void) setNeuronType: (\fBMPSCNNNeuronType\fP) neuronType(float) parameterA(float) parameterB(float) parameterC" Specifies a neuron activation function to be used\&. .PP This method can be used to add a neuron activation funtion of given type with associated scalar parameters \fBA\fP, B, and C that are shared across all output values\&. Note that this method can only be used to specify neurons which are specified by three (or fewer) parameters shared across all output values (or channels, in CNN nomenclature)\&. It is an error to call this method for neuron activation functions like MPSCNNNeuronTypePReLU, which require per-channel parameter values\&. For those kind of neuron activation functions, use appropriate setter functions\&. An \fBMPSMatrixNeuron\fP kernel is initialized with a default neuron function of MPSCNNNeuronTypeNone\&. .PP \fBParameters:\fP .RS 4 \fIneuronType\fP Type of neuron activation function\&. For full list see \fBMPSCNNNeuronType\&.h\fP .br \fIparameterA\fP parameterA of neuron activation that is shared across all output values\&. .br \fIparameterB\fP parameterB of neuron activation that is shared across all output values\&. .br \fIparameterC\fP parameterC of neuron activation that is shared across all output values\&. .RE .PP .SH "Property Documentation" .PP .SS "\- alpha\fC [read]\fP, \fC [write]\fP, \fC [nonatomic]\fP, \fC [assign]\fP" The scale factor to apply to the input\&. Specified in double precision\&. Will be converted to the appropriate precision in the implementation subject to rounding and/or clamping as necessary\&. Defaults to 1\&.0 at initialization time\&. .SS "\- sourceInputFeatureChannels\fC [read]\fP, \fC [write]\fP, \fC [nonatomic]\fP, \fC [assign]\fP" The input size to to use in the operation\&. This is equivalent to the number of columns in the primary (input array) source matrix to consider and the number of channels to produce for the output matrix\&. This property is modifiable and defaults to NSUIntegerMax\&. At encode time the larger of this property or the available input size is used\&. The value of NSUIntegerMax thus indicates that all available columns in the input array (beginning at sourceMatrixOrigin\&.y) should be considered\&. Defines also the number of output feature channels\&. Note: The value used in the operation will be MIN(inputMatrix\&.columns - sourceMatrixOrigin\&.y, sourceInputFeatureChannels) .SS "\- sourceNumberOfFeatureVectors\fC [read]\fP, \fC [write]\fP, \fC [nonatomic]\fP, \fC [assign]\fP" The number of input vectors which make up the input array\&. This is equivalent to the number of rows to consider from the primary source matrix\&. This property is modifiable and defaults to NSUIntegerMax\&. At encode time the larger of this property or the available number of inputs is used\&. The value of NSUIntegerMax thus indicates that all available input rows (beginning at sourceMatrixOrigin\&.x) should be considered\&. .SH "Author" .PP Generated automatically by Doxygen for MetalPerformanceShaders\&.framework from the source code\&.