MPSCNNBinaryFullyConnected(3) MetalPerformanceShaders.framework MPSCNNBinaryFullyConnected(3)
NAME
MPSCNNBinaryFullyConnected
SYNOPSIS
#import <MPSCNNConvolution.h>
Inherits MPSCNNBinaryConvolution.
Instance Methods
(nonnull instancetype) - initWithDevice:convolutionData:scaleValue:type:flags:
(nonnull instancetype) - initWithDevice:convolutionData:outputBiasTerms:outputScaleTerms:inputBiasTerms:inputScaleTerms:type:flags:
(nullable instancetype) - initWithCoder:device:
(nonnull instancetype) - initWithDevice:
Additional Inherited Members
Detailed Description
This depends on Metal.framework The MPSCNNBinaryFullyConnected specifies a fully connected convolution layer with binary weights and
optionally binarized input image. See MPSCNNFullyConnected for details on the fully connected layer and MPSCNNBinaryConvolution for binary
convolutions.
The default padding policy for MPSCNNBinaryConvolution is different from most filters. It uses MPSNNPaddingMethodSizeValidOnly instead of
MPSNNPaddingMethodSizeSame.
Method Documentation
- (nullable instancetype) initWithCoder: (NSCoder *__nonnull) aDecoder(nonnull id< MTLDevice >) device
NSSecureCoding compatability While the standard NSSecureCoding/NSCoding method -initWithCoder: should work, since the file can't know
which device your data is allocated on, we have to guess and may guess incorrectly. To avoid that problem, use initWithCoder:device
instead.
Parameters:
aDecoder The NSCoder subclass with your serialized MPSKernel
device The MTLDevice on which to make the MPSKernel
Returns:
A new MPSKernel object, or nil if failure.
Reimplemented from MPSCNNBinaryConvolution.
- (nonnull instancetype) initWithDevice: (nonnull id< MTLDevice >) device
Standard init with default properties per filter type
Parameters:
device The device that the filter will be used on. May not be NULL.
Returns:
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.
Reimplemented from MPSCNNBinaryConvolution.
- (nonnull instancetype) initWithDevice: (nonnull id< MTLDevice >) device(nonnull id< MPSCNNConvolutionDataSource >) convolutionData(const
float *__nullable) outputBiasTerms(const float *__nullable) outputScaleTerms(const float *__nullable) inputBiasTerms(const float
*__nullable) inputScaleTerms(MPSCNNBinaryConvolutionType) type(MPSCNNBinaryConvolutionFlags) flags
Initializes a binary fully connected kernel with binary weights as well as both pre and post scaling terms.
Parameters:
device The MTLDevice on which this MPSCNNBinaryFullyConnected filter will be used
convolutionData A pointer to a object that conforms to the MPSCNNConvolutionDataSource protocol. The MPSCNNConvolutionDataSource
protocol declares the methods that an instance of MPSCNNBinaryFullyConnected uses to obtain the weights and the convolution descriptor.
Each entry in the convolutionData:weights array is a 32-bit unsigned integer value and each bit represents one filter weight (given in
machine byte order). The featurechannel indices increase from the least significant bit within the 32-bits. The number of entries is =
ceil( inputFeatureChannels/32.0 ) * outputFeatureChannels * kernelHeight * kernelWidth The layout of filter weight is so that it can be
reinterpreted as a 4D tensor (array) weight[ outputChannels ][ kernelHeight ][ kernelWidth ][ ceil( inputChannels / 32.0 ) ] (The
ordering of the reduction from 4D tensor to 1D is per C convention. The index based on inputchannels varies most rapidly, followed by
kernelWidth, then kernelHeight and finally outputChannels varies least rapidly.)
outputBiasTerms A pointer to bias terms to be applied to the convolution output. Each entry is a float value. The number of entries is
= numberOfOutputFeatureMaps. If nil then 0.0 is used for bias. The values stored in the pointer are copied in and the array can be
freed after this function returns.
outputScaleTerms A pointer to scale terms to be applied to binary convolution results per output feature channel. Each entry is a float
value. The number of entries is = numberOfOutputFeatureMaps. If nil then 1.0 is used. The values stored in the pointer are copied in
and the array can be freed after this function returns.
inputBiasTerms A pointer to offset terms to be applied to the input before convolution and before input scaling. Each entry is a float
value. The number of entries is 'inputFeatureChannels'. If NULL then 0.0 is used for bias. The values stored in the pointer are copied
in and the array can be freed after this function returns.
inputScaleTerms A pointer to scale terms to be applied to the input before convolution, but after input biasing. Each entry is a float
value. The number of entries is 'inputFeatureChannels'. If nil then 1.0 is used. The values stored in the pointer are copied in and the
array can be freed after this function returns.
type What kind of binarization strategy is to be used.
flags See documentation above and documentation of MPSCNNBinaryConvolutionFlags.
Returns:
A valid MPSCNNBinaryFullyConnected object or nil, if failure.
Reimplemented from MPSCNNBinaryConvolution.
- (nonnull instancetype) initWithDevice: (nonnull id< MTLDevice >) device(nonnull id< MPSCNNConvolutionDataSource >) convolutionData(float)
scaleValue(MPSCNNBinaryConvolutionType) type(MPSCNNBinaryConvolutionFlags) flags
Initializes a binary fully connected kernel with binary weights and a single scaling term.
Parameters:
device The MTLDevice on which this MPSCNNBinaryFullyConnected filter will be used
convolutionData A pointer to a object that conforms to the MPSCNNConvolutionDataSource protocol. The MPSCNNConvolutionDataSource
protocol declares the methods that an instance of MPSCNNBinaryFullyConnected uses to obtain the weights and bias terms as well as the
convolution descriptor. Each entry in the convolutionData:weights array is a 32-bit unsigned integer value and each bit represents one
filter weight (given in machine byte order). The featurechannel indices increase from the least significant bit within the 32-bits. The
number of entries is = ceil( inputFeatureChannels/32.0 ) * outputFeatureChannels * kernelHeight * kernelWidth The layout of filter
weight is so that it can be reinterpreted as a 4D tensor (array) weight[ outputChannels ][ kernelHeight ][ kernelWidth ][ ceil(
inputChannels / 32.0 ) ] (The ordering of the reduction from 4D tensor to 1D is per C convention. The index based on inputchannels
varies most rapidly, followed by kernelWidth, then kernelHeight and finally outputChannels varies least rapidly.)
scaleValue A single floating point value used to scale the entire convolution. Each entry is a float value. The number of entries is
'inputFeatureChannels'. If nil then 1.0 is used.
type What kind of binarization strategy is to be used.
flags See documentation above and documentation of MPSCNNBinaryConvolutionFlags.
Returns:
A valid MPSCNNBinaryFullyConnected object or nil, if failure.
Reimplemented from MPSCNNBinaryConvolution.
Author
Generated automatically by Doxygen for MetalPerformanceShaders.framework from the source code.
Version MetalPerformanceShaders-100 Thu Feb 8 2018 MPSCNNBinaryFullyConnected(3)