EpsilonInjector

Struct EpsilonInjector 

Source
pub struct EpsilonInjector<T: Inferer, NG: NoiseGenerator = HighQualityNoiseGenerator> { /* private fields */ }
Expand description

The EpsilonInjector wraps an inferer to add noise values as one of the input data points. This is useful for continuous action policies where you might have trained your agent to follow a stochastic policy trained with the reparametrization trick.

Note that it’s fully possible to pass an epsilon directly in your observation, and this is purely a convenience wrapper.

Implementations§

Source§

impl<T> EpsilonInjector<T, HighQualityNoiseGenerator>
where T: Inferer,

Source

pub fn wrap( inferer: T, key: &str, ) -> Result<EpsilonInjector<T, HighQualityNoiseGenerator>>

Wraps the provided inferer to automatically generate noise for the input named by key.

This function will use HighQualityNoiseGenerator as the noise source.

§Errors

Will return an error if the provided key doesn’t match an input on the model.

Source§

impl<T, NG> EpsilonInjector<T, NG>
where T: Inferer, NG: NoiseGenerator,

Source

pub fn with_generator(inferer: T, generator: NG, key: &str) -> Result<Self>

Create a new injector for the provided key, using the custom generator as the noise source.

§Errors

Will return an error if the provided key doesn’t match an input on the model.

Trait Implementations§

Source§

impl<T, NG> Inferer for EpsilonInjector<T, NG>
where T: Inferer, NG: NoiseGenerator,

Source§

fn select_batch_size(&self, max_count: usize) -> usize

Query the inferer for how many elements it can deal with in a single batch.
Source§

fn infer_raw(&self, batch: &mut ScratchPadView<'_>) -> Result<(), Error>

Execute the model on the provided pre-batched data.
Source§

fn input_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model inputs. This API only contains the external API, so code-based transforms outside the model are hidden.
Source§

fn raw_input_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model inputs.
Source§

fn raw_output_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model outputs.
Source§

fn begin_agent(&self, id: u64)

Source§

fn end_agent(&self, id: u64)

Source§

fn output_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model outputs. This API only contains the external API, so code-based transforms outside the model are hidden.

Auto Trait Implementations§

§

impl<T, NG> Freeze for EpsilonInjector<T, NG>
where T: Freeze, NG: Freeze,

§

impl<T, NG> RefUnwindSafe for EpsilonInjector<T, NG>

§

impl<T, NG> Send for EpsilonInjector<T, NG>
where T: Send, NG: Send,

§

impl<T, NG> Sync for EpsilonInjector<T, NG>
where T: Sync, NG: Sync,

§

impl<T, NG> Unpin for EpsilonInjector<T, NG>
where T: Unpin, NG: Unpin,

§

impl<T, NG> UnwindSafe for EpsilonInjector<T, NG>
where T: UnwindSafe, NG: UnwindSafe,

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> InfererExt for T
where T: Inferer,

Source§

fn with_default_epsilon(self, key: &str) -> Result<EpsilonInjector<Self>>

Add an epsilon injector using the default noise kind.
Source§

fn with_epsilon<G: NoiseGenerator>( self, generator: G, key: &str, ) -> Result<EpsilonInjector<Self, G>>

Add an epsilon injector with a specific noise generator.
Source§

fn into_batched(self) -> Batched<Self>

Wrap in a batching interface.
Source§

fn infer( &mut self, observations: HashMap<u64, State<'_>>, ) -> Result<HashMap<u64, Response<'_>>, Error>

👎Deprecated since 0.3.0: Please use the more explicit ‘infer_batch’ instead.
Execute the model on the provided batch of elements.
Source§

fn infer_batch<'this>( &'this self, batch: HashMap<u64, State<'_>>, ) -> Result<HashMap<u64, Response<'this>>, Error>

Execute the model on the provided pre-batched data.
Source§

fn infer_single<'this>( &'this self, input: State<'_>, ) -> Result<Response<'this>, Error>

Execute the model on the provided pre-batched data.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V