Exemple #1
0
    def __call__(self, x: NDArray) -> NDArray:
        """Evaluate randomized IR (i.e. its random realization) at given points

        Args:
            x (NDArray): query points for IR. If x is 1D, single realization of RIR is evaluated;
                if x is 2D, signature is (N_query, N_batch): for each row new realization is generated

        Returns:
            NDArray: realization of randomized IR, same size
        """
        if len(x.shape) == 1:
            x = x.reshape((x.size, 1))
        N_query, N_batch = x.shape
        if self.factor_generator is not None:
            factors = self.factor_generator(N_batch).reshape((1, N_batch))
        else:
            factors = np.ones((1, N_batch))
        if self.base_ir_type == 'frozen':
            realization_interp = self._interp_realization(self.base_ir_frozen)
            y = realization_interp(x).reshape((N_query, N_batch))
        elif self.base_ir_type == 'generated':
            y = np.zeros((N_query, N_batch))
            for i_batch, x_query in enumerate(x.T):
                realization_interp = self._interp_realization(self.base_ir_generator())
                y[:, i_batch] = realization_interp(x_query)
        return factors * y
    def encode_state(self, image: NDArray):
        """
        Function for converting the image got from the environment to 
        its feature-representation

        Args:
            image: Image obtained from the environment

        Returns:
            Feature-state representation of the image given
        """
        in_image = image.reshape((1, ) + image.shape)
        return self.features(in_image)
    def __init__(self,
                 obs: NDArray,
                 n_outputs: int,
                 kernel=(3, 3),
                 padding='same',
                 stride=2,
                 nFilters=32):
        super(InvModel, self).__init__()

        inp_layer = tf.keras.Input(shape=obs.shape)

        self.conv1 = tf.keras.layers.Conv2D(nFilters,
                                            kernel,
                                            strides=stride,
                                            padding=padding,
                                            activation='elu')
        self.conv2 = tf.keras.layers.Conv2D(nFilters,
                                            kernel,
                                            strides=stride,
                                            padding=padding,
                                            activation='elu')
        self.conv3 = tf.keras.layers.Conv2D(nFilters,
                                            kernel,
                                            strides=stride,
                                            padding=padding,
                                            activation='elu')
        self.conv4 = tf.keras.layers.Conv2D(nFilters,
                                            kernel,
                                            strides=stride,
                                            padding=padding,
                                            activation='elu')

        self.flat1 = tf.keras.layers.Flatten()

        self.concat = tf.keras.layers.Concatenate(axis=1)

        self.dense1 = tf.keras.layers.Dense(256, activation='elu')
        self.dense2 = tf.keras.layers.Dense(n_outputs, activation='softmax')

        self.features_out = self.flat1(
            self.conv4(self.conv3(self.conv2(self.conv1(inp_layer)))))
        self.features = tf.keras.Model(inputs=[inp_layer],
                                       outputs=[self.features_out],
                                       name='Inverse Model')

        state = self.features(obs.reshape((1, ) + obs.shape))
        self.prevState = tf.convert_to_tensor(state, dtype=tf.float32)

        self.out = self.call(inp_layer)
        super(InvModel, self).__init__(inputs=inp_layer, outputs=self.out)
Exemple #4
0
def concat_vectors_as_cols(v1: NDArray, v2: NDArray) -> NDArray:
    n = v1.size
    return np.concatenate((v1.reshape(n, 1), v2.reshape(n, 1)), axis=1)