Skip to main content

IIdentityLayer

Struct IIdentityLayer 

Source
pub struct IIdentityLayer { /* private fields */ }
Expand description

IIdentityLayer

A layer that represents the identity function.

For a strongly typed network, the layer is an identity function, i.e. the output tensor elements are identical to the input tensor elements, possibly with a change in layout. For example, if a network consists of a single IIdentityLayer, the network input and output must have the same type, but the input can have NCHW layout and the output can have NHWC layout.

If the network is weakly typed, the layer is additionally permitted some type conversions as described below.

If the output type is explicitly specified via setOutputType, IIdentityLayer can be used to convert from one type to another. Other than conversions between the same type (kFLOAT -> kFLOAT for example), the only valid conversions are:

(kFLOAT | kHALF | kINT32 | kBOOL) -> (kFLOAT | kHALF | kINT32 | kBOOL)

(kFLOAT | kHALF) -> kUINT8

kUINT8 -> (kFLOAT | kHALF)

Conversion also happens implicitly, without calling setOutputType, if the output tensor is a network output.

Two types are compatible if they are identical, or are both in {kFLOAT, kHALF}. Implicit conversion between incompatible types, i.e. without using setOutputType, was recognized as incorrect as of TensorRT 8.4, but was retained for API compatibility within TensorRT 8.x releases. In TensorRT 10.0 onwards it is an error if the network output tensor type is incompatible with the layer output type. E.g., implicit conversion from kFLOAT to kINT32 is not allowed.

To explicitly convert kFLOAT to kINT32:

  • Preferred: use ICastLayer.

  • Legacy alternative: use IIdentityLayer and setOutputType(DataType::kINT32).

Similar advice applies for explicit conversion in the other direction.

Do not inherit from this class, as doing so will break forward-compatibility of the API and ABI.

Trait Implementations§

Source§

impl AsLayer for IIdentityLayer

Source§

fn as_layer(&self) -> &ILayer

Source§

fn as_layer_pin_mut(&mut self) -> Pin<&mut ILayer>

Source§

impl AsLayerTyped for IIdentityLayer

Source§

const TYPE: LayerType = LayerType::kIDENTITY

Source§

impl AsRef<ILayer> for IIdentityLayer

Source§

fn as_ref(self: &IIdentityLayer) -> &ILayer

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl ExternType for IIdentityLayer

Source§

type Id = (n, v, i, n, f, e, r, _1, (), I, I, d, e, n, t, i, t, y, L, a, y, e, r)

A type-level representation of the type’s C++ namespace and type name. Read more
Source§

type Kind = Opaque

Source§

impl MakeCppStorage for IIdentityLayer

Source§

unsafe fn allocate_uninitialized_cpp_storage() -> *mut IIdentityLayer

Allocates heap space for this type in C++ and return a pointer to that space, but do not initialize that space (i.e. do not yet call a constructor). Read more
Source§

unsafe fn free_uninitialized_cpp_storage(arg0: *mut IIdentityLayer)

Frees a C++ allocation which has not yet had a constructor called. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.