Пример #1
0
    def __build_model(self):

        self.price_pred = Input((self.number_of_assets, ))
        self.prev_weights = Input((self.number_of_assets, ))

        price_pred_reshaped = Reshape(
            (self.number_of_assets, 1, 1))(self.price_pred)
        prev_weights_reshaped = Reshape(
            (self.number_of_assets, 1, 1))(self.prev_weights)

        network = Concatenate(axis=2)(
            [price_pred_reshaped, prev_weights_reshaped])

        network = Conv2D(16, (1, 2),
                         activation='relu',
                         kernel_initializer='VarianceScaling')(network)

        network = Flatten()(network)

        network = Dense(network.get_shape()[1],
                        'relu',
                        kernel_initializer='VarianceScaling')(network)

        new_weights = Dense(self.number_of_assets,
                            'linear',
                            kernel_initializer='VarianceScaling')(network)

        self.model = tf.keras.models.Model(
            inputs=[self.price_pred, self.prev_weights], outputs=new_weights)

        self.model.compile(optimizer='adam', loss=self.__get_loss_function())
Пример #2
0
def bn_feature_net_skip_2D(receptive_field=61,
                           input_shape=(256, 256, 1),
                           inputs=None,
                           fgbg_model=None,
                           n_skips=2,
                           last_only=True,
                           norm_method='std',
                           padding_mode='reflect',
                           **kwargs):
    if K.image_data_format() == 'channels_first':
        channel_axis = 1
    else:
        channel_axis = -1

    inputs = Input(shape=input_shape)
    img = ImageNormalization2D(norm_method=norm_method,
                               filter_size=receptive_field)(inputs)

    models = []
    model_outputs = []

    if fgbg_model is not None:
        for layer in fgbg_model.layers:
            layer.trainable = False

        models.append(fgbg_model)
        fgbg_output = fgbg_model(inputs)
        if isinstance(fgbg_output, list):
            fgbg_output = fgbg_output[-1]
        model_outputs.append(fgbg_output)

    for _ in range(n_skips + 1):
        if model_outputs:
            model_input = Concatenate(axis=channel_axis)(
                [img, model_outputs[-1]])
        else:
            model_input = img

        new_input_shape = model_input.get_shape().as_list()[1:]
        models.append(
            bn_feature_net_2D(receptive_field=receptive_field,
                              input_shape=new_input_shape,
                              norm_method=None,
                              dilated=True,
                              padding=True,
                              padding_mode=padding_mode,
                              **kwargs))
        model_outputs.append(models[-1](model_input))

    if last_only:
        model = Model(inputs=inputs, outputs=model_outputs[-1])
    else:
        if fgbg_model is None:
            model = Model(inputs=inputs, outputs=model_outputs)
        else:
            model = Model(inputs=inputs, outputs=model_outputs[1:])

    return model
Пример #3
0
def bn_feature_net_skip_3D(receptive_field=61,
                           input_shape=(5, 256, 256, 1),
                           fgbg_model=None,
                           last_only=True,
                           n_skips=2,
                           norm_method='std',
                           padding_mode='reflect',
                           **kwargs):
    """Creates a 3D featurenet with skip-connections.

    Args:
        receptive_field (int): the receptive field of the neural network.
        input_shape (tuple): Create input tensor with this shape.
        fgbg_model (tensorflow.keras.Model): Concatenate output of this model
            with the inputs as a skip-connection.
        last_only (bool): Model will only output the final prediction,
            and not return any of the underlying model predictions.
        n_skips (int): The number of skip-connections
        norm_method (str): The type of ImageNormalization to use
        padding_mode (str): Type of padding, one of 'reflect' or 'zero'
        kwargs (dict): Other model options defined in bn_feature_net_3D

    Returns:
        tensorflow.keras.Model: 3D FeatureNet with skip-connections
    """
    channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
    inputs = Input(shape=input_shape)
    img = ImageNormalization3D(norm_method=norm_method,
                               filter_size=receptive_field)(inputs)

    models = []
    model_outputs = []

    if fgbg_model is not None:
        for layer in fgbg_model.layers:
            layer.trainable = False
        models.append(fgbg_model)
        fgbg_output = fgbg_model(inputs)
        if isinstance(fgbg_output, list):
            fgbg_output = fgbg_output[-1]
        model_outputs.append(fgbg_output)

    for _ in range(n_skips + 1):
        if model_outputs:
            model_input = Concatenate(axis=channel_axis)(
                [img, model_outputs[-1]])
        else:
            model_input = img

        new_input_shape = model_input.get_shape().as_list()[1:]
        models.append(
            bn_feature_net_3D(receptive_field=receptive_field,
                              input_shape=new_input_shape,
                              norm_method=None,
                              dilated=True,
                              padding=True,
                              padding_mode=padding_mode,
                              **kwargs))
        model_outputs.append(models[-1](model_input))

    if last_only:
        model = Model(inputs=inputs, outputs=model_outputs[-1])
    elif fgbg_model is None:
        model = Model(inputs=inputs, outputs=model_outputs)
    else:
        model = Model(inputs=inputs, outputs=model_outputs[1:])

    return model