pub struct MPSNNNeuronDescriptor { /* private fields */ }MPSCNNNeuron only.Expand description
Dependencies: This depends on Metal.framework
The MPSNNNeuronDescriptor specifies a neuron descriptor. Supported neuron types:
Neuron type “none”: f(x) = x Parameters: none
ReLU neuron filter: f(x) = x >= 0 ? x : a * x This is called Leaky ReLU in literature. Some literature defines classical ReLU as max(0, x). If you want this behavior, simply pass a = 0. Parameters: a For default behavior, set the value of a to 0.0f.
Linear neuron filter: f(x) = a * x + b Parameters: a, b For default behavior, set the value of a to 1.0f and the value of b to 0.0f.
Sigmoid neuron filter: f(x) = 1 / (1 + e^-x) Parameters: none
Hard Sigmoid filter: f(x) = clamp((x * a) + b, 0, 1) Parameters: a, b For default behavior, set the value of a to 0.2f and the value of b to 0.5f.
Hyperbolic tangent (TanH) neuron filter: f(x) = a * tanh(b * x) Parameters: a, b For default behavior, set the value of a to 1.0f and the value of b to 1.0f.
Absolute neuron filter: f(x) = fabs(x) Parameters: none
Parametric Soft Plus neuron filter: f(x) = a * log(1 + e^(b * x)) Parameters: a, b For default behavior, set the value of a to 1.0f and the value of b to 1.0f.
Parametric Soft Sign neuron filter: f(x) = x / (1 + abs(x)) Parameters: none
Parametric ELU neuron filter: f(x) = x >= 0 ? x : a * (exp(x) - 1) Parameters: a For default behavior, set the value of a to 1.0f.
Parametric ReLU (PReLU) neuron filter: Same as ReLU, except parameter aArray is per channel. For each pixel, applies the following function: f(x_i) = x_i, if x_i >= 0 = a_i * x_i if x_i < 0 i in [0…channels-1] i.e. parameters a_i are learned and applied to each channel separately. Compare this to ReLu where parameter a is shared across all channels. See https://arxiv.org/pdf/1502.01852.pdf for details. Parameters: aArray - Array of floats containing per channel value of PReLu parameter count - Number of float values in array aArray.
ReLUN neuron filter: f(x) = min((x >= 0 ? x : a * x), b) Parameters: a, b As an example, the TensorFlow Relu6 activation layer can be implemented by setting the parameter b to 6.0f: https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/relu6. For default behavior, set the value of a to 1.0f and the value of b to 6.0f.
See also Apple’s documentation
Implementations§
Source§impl MPSNNNeuronDescriptor
impl MPSNNNeuronDescriptor
pub unsafe fn neuronType(&self) -> MPSCNNNeuronType
MPSNeuralNetwork and MPSCNNNeuronType only.Sourcepub unsafe fn setNeuronType(&self, neuron_type: MPSCNNNeuronType)
Available on crate features MPSNeuralNetwork and MPSCNNNeuronType only.
pub unsafe fn setNeuronType(&self, neuron_type: MPSCNNNeuronType)
MPSNeuralNetwork and MPSCNNNeuronType only.Setter for neuronType.
pub unsafe fn a(&self) -> c_float
MPSNeuralNetwork only.Sourcepub unsafe fn setA(&self, a: c_float)
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn setA(&self, a: c_float)
MPSNeuralNetwork only.Setter for a.
pub unsafe fn b(&self) -> c_float
MPSNeuralNetwork only.Sourcepub unsafe fn setB(&self, b: c_float)
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn setB(&self, b: c_float)
MPSNeuralNetwork only.Setter for b.
pub unsafe fn c(&self) -> c_float
MPSNeuralNetwork only.Sourcepub unsafe fn setC(&self, c: c_float)
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn setC(&self, c: c_float)
MPSNeuralNetwork only.Setter for c.
pub unsafe fn data(&self) -> Option<Retained<NSData>>
MPSNeuralNetwork only.Sourcepub unsafe fn setData(&self, data: Option<&NSData>)
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn setData(&self, data: Option<&NSData>)
MPSNeuralNetwork only.Setter for data.
Sourcepub unsafe fn init(this: Allocated<Self>) -> Retained<Self>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>
MPSNeuralNetwork only.You must use one of the interfaces below instead.
Sourcepub unsafe fn cnnNeuronDescriptorWithType(
neuron_type: MPSCNNNeuronType,
) -> Retained<MPSNNNeuronDescriptor>
Available on crate features MPSNeuralNetwork and MPSCNNNeuronType only.
pub unsafe fn cnnNeuronDescriptorWithType( neuron_type: MPSCNNNeuronType, ) -> Retained<MPSNNNeuronDescriptor>
MPSNeuralNetwork and MPSCNNNeuronType only.Make a descriptor for a MPSCNNNeuron object.
Parameter neuronType: The type of a neuron filter.
Returns: A valid MPSNNNeuronDescriptor object or nil, if failure.
Sourcepub unsafe fn cnnNeuronDescriptorWithType_a(
neuron_type: MPSCNNNeuronType,
a: c_float,
) -> Retained<MPSNNNeuronDescriptor>
Available on crate features MPSNeuralNetwork and MPSCNNNeuronType only.
pub unsafe fn cnnNeuronDescriptorWithType_a( neuron_type: MPSCNNNeuronType, a: c_float, ) -> Retained<MPSNNNeuronDescriptor>
MPSNeuralNetwork and MPSCNNNeuronType only.Make a descriptor for a MPSCNNNeuron object.
Parameter neuronType: The type of a neuron filter.
Parameter a: Parameter “a”.
Returns: A valid MPSNNNeuronDescriptor object or nil, if failure.
Sourcepub unsafe fn cnnNeuronDescriptorWithType_a_b(
neuron_type: MPSCNNNeuronType,
a: c_float,
b: c_float,
) -> Retained<MPSNNNeuronDescriptor>
Available on crate features MPSNeuralNetwork and MPSCNNNeuronType only.
pub unsafe fn cnnNeuronDescriptorWithType_a_b( neuron_type: MPSCNNNeuronType, a: c_float, b: c_float, ) -> Retained<MPSNNNeuronDescriptor>
MPSNeuralNetwork and MPSCNNNeuronType only.Initialize the neuron descriptor.
Parameter neuronType: The type of a neuron filter.
Parameter a: Parameter “a”.
Parameter b: Parameter “b”.
Returns: A valid MPSNNNeuronDescriptor object or nil, if failure.
Sourcepub unsafe fn cnnNeuronDescriptorWithType_a_b_c(
neuron_type: MPSCNNNeuronType,
a: c_float,
b: c_float,
c: c_float,
) -> Retained<MPSNNNeuronDescriptor>
Available on crate features MPSNeuralNetwork and MPSCNNNeuronType only.
pub unsafe fn cnnNeuronDescriptorWithType_a_b_c( neuron_type: MPSCNNNeuronType, a: c_float, b: c_float, c: c_float, ) -> Retained<MPSNNNeuronDescriptor>
MPSNeuralNetwork and MPSCNNNeuronType only.Make a descriptor for a MPSCNNNeuron object.
Parameter neuronType: The type of a neuron filter.
Parameter a: Parameter “a”.
Parameter b: Parameter “b”.
Parameter c: Parameter “c”.
Returns: A valid MPSNNNeuronDescriptor object or nil, if failure.
Sourcepub unsafe fn cnnNeuronPReLUDescriptorWithData_noCopy(
data: &NSData,
no_copy: bool,
) -> Retained<MPSNNNeuronDescriptor>
Available on crate feature MPSNeuralNetwork only.
pub unsafe fn cnnNeuronPReLUDescriptorWithData_noCopy( data: &NSData, no_copy: bool, ) -> Retained<MPSNNNeuronDescriptor>
MPSNeuralNetwork only.Make a descriptor for a neuron of type MPSCNNNeuronTypePReLU.
The PReLU neuron is the same as a ReLU neuron, except parameter “a” is per feature channel.
Parameter data: A NSData containing a float array with the per feature channel value
of PReLu parameter. The number of float values in this array usually
corresponds to number of output channels in a convolution layer.
The descriptor retains the NSData object.
Parameter noCopy: An optimization flag that tells us whether the NSData allocation is
suitable for use directly with no copying of the data into internal
storage. This allocation has to match the same restrictions as listed
for the newBufferWithBytesNoCopy:length:options:deallocator: method of
MTLBuffer.
Returns: A valid MPSNNNeuronDescriptor object for a neuron of type MPSCNNNeuronTypePReLU or nil, if failure
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AnyObject> for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl AsRef<AnyObject> for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl AsRef<MPSNNNeuronDescriptor> for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl AsRef<MPSNNNeuronDescriptor> for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl AsRef<NSObject> for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl AsRef<NSObject> for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl Borrow<AnyObject> for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl Borrow<AnyObject> for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl Borrow<NSObject> for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl Borrow<NSObject> for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl ClassType for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl ClassType for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§const NAME: &'static str = "MPSNNNeuronDescriptor"
const NAME: &'static str = "MPSNNNeuronDescriptor"
Source§type ThreadKind = <<MPSNNNeuronDescriptor as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<MPSNNNeuronDescriptor as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl CopyingHelper for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§type Result = MPSNNNeuronDescriptor
type Result = MPSNNNeuronDescriptor
Self if the type has no
immutable counterpart. Read moreSource§impl Debug for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl Debug for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl Deref for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl Deref for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl Hash for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl Hash for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl Message for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl Message for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl NSCoding for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl NSCoding for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl NSCopying for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl NSCopying for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl NSObjectProtocol for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl NSObjectProtocol for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_refSource§fn isMemberOfClass(&self, cls: &AnyClass) -> bool
fn isMemberOfClass(&self, cls: &AnyClass) -> bool
Source§fn respondsToSelector(&self, aSelector: Sel) -> bool
fn respondsToSelector(&self, aSelector: Sel) -> bool
Source§fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
Source§fn debugDescription(&self) -> Retained<NSObject>
fn debugDescription(&self) -> Retained<NSObject>
Source§impl NSSecureCoding for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl NSSecureCoding for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl PartialEq for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl PartialEq for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§impl RefEncode for MPSNNNeuronDescriptor
Available on crate feature MPSNeuralNetwork only.
impl RefEncode for MPSNNNeuronDescriptor
MPSNeuralNetwork only.Source§const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF
const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF
impl DowncastTarget for MPSNNNeuronDescriptor
MPSNeuralNetwork only.impl Eq for MPSNNNeuronDescriptor
MPSNeuralNetwork only.