Exemple #1
0
#
test_iterator = None

#############################
rng = sparnn.utils.quick_npy_rng()
theano_rng = sparnn.utils.quick_theano_rng(rng)

############################# interface layer
param = {
    "id": "ucf101-flow-vgg16-fc7",
    "use_mask": True,
    "input_ndim": 3,
    "output_ndim": 2,
    "output_data_type": "int64"
}
interface_layer = InterfaceLayer(param)

x = interface_layer.input
mask = interface_layer.mask
y = interface_layer.output

timesteps = x.shape[0]
minibatch_size = x.shape[1]

feature_dim = 4096
hidden_dim = 512
out_dim = 1024
actions = 101
data_dim = (feature_dim, )

logger.info("Data Dim:" + str(data_dim))
Exemple #2
0
    def __init__(self, param, config):

        self.param = param
        self.config = config
        # 2x2 小碎片是2*2的小图片(叫做patch,或者掩模)
        feature_num = config['patch_size'] * config['patch_size']
        row_num = int(config['size'][0] / config['patch_size'])
        col_num = int(config['size'][1] / config['patch_size'])
        data_dim = (feature_num, row_num, col_num)
        kernel_size = config['kernel_size']
        kernel_num = config['kernel_num']

        logger.debug('build model:' + str(feature_num) + ' ' + str(data_dim) +
                     ' ' + str(kernel_size) + ' ' + str(kernel_num))
        param = {
            "id": "DeepWeather-interface",
            "use_input_mask": False,
            "input_ndim": 5,
            "output_ndim": 5
        }
        self.interface_layer = InterfaceLayer(param)

        # interface_layer.input: (1, 100, 100), reshape_input: (16, 25, 25),  data_dim: (16, 25, 25)
        self.reshape_input = quick_reshape_patch(self.interface_layer.input,
                                                 config['patch_size'])
        self.reshape_output = quick_reshape_patch(self.interface_layer.output,
                                                  config['patch_size'])

        minibatch_size = self.interface_layer.input.shape[1]

        self.middle_layers = []

        param = {
            "id": 0,
            "rng": rng,
            "theano_rng": theano_rng,
            "dim_in": data_dim,
            "dim_out": (kernel_num[0], row_num, col_num),
            "input_receptive_field": (kernel_size, kernel_size),
            "transition_receptive_field": (kernel_size, kernel_size),
            "minibatch_size": minibatch_size,
            "input": self.reshape_input,
            "n_steps": config['input_seq_length']
        }
        self.middle_layers.append(ConvLSTMLayer(param))

        param = {
            "id": 1,
            "rng": rng,
            "theano_rng": theano_rng,
            "dim_in": (kernel_num[0], row_num, col_num),
            "dim_out": (kernel_num[1], row_num, col_num),
            "input_receptive_field": (kernel_size, kernel_size),
            "transition_receptive_field": (kernel_size, kernel_size),
            "minibatch_size": minibatch_size,
            "input": self.middle_layers[0].output,
            "n_steps": config['input_seq_length']
        }
        self.middle_layers.append(ConvLSTMLayer(param))

        param = {
            "id": 2,
            "rng": rng,
            "theano_rng": theano_rng,
            "dim_in": (kernel_num[1], row_num, col_num),
            "dim_out": (kernel_num[2], row_num, col_num),
            "input_receptive_field": (kernel_size, kernel_size),
            "transition_receptive_field": (kernel_size, kernel_size),
            "minibatch_size": minibatch_size,
            "input": self.middle_layers[1].output,
            "n_steps": config['input_seq_length']
        }
        self.middle_layers.append(ConvLSTMLayer(param))

        param = {
            "id": 3,
            "rng": rng,
            "theano_rng": theano_rng,
            "dim_in": data_dim,
            "dim_out": (kernel_num[0], row_num, col_num),
            "input_receptive_field": (kernel_size, kernel_size),
            "transition_receptive_field": (kernel_size, kernel_size),
            "init_hidden_state": self.middle_layers[0].output[-1],
            "init_cell_state": self.middle_layers[0].cell_output[-1],
            "minibatch_size": minibatch_size,
            "input": None,
            "n_steps": config['output_seq_length'] - 1
        }
        self.middle_layers.append(ConvLSTMLayer(param))

        param = {
            "id": 4,
            "rng": rng,
            "theano_rng": theano_rng,
            "dim_in": (kernel_num[0], row_num, col_num),
            "dim_out": (kernel_num[1], row_num, col_num),
            "input_receptive_field": (kernel_size, kernel_size),
            "transition_receptive_field": (kernel_size, kernel_size),
            "init_hidden_state": self.middle_layers[1].output[-1],
            "init_cell_state": self.middle_layers[1].cell_output[-1],
            "minibatch_size": minibatch_size,
            "input": self.middle_layers[3].output,
            "n_steps": config['output_seq_length'] - 1
        }
        self.middle_layers.append(ConvLSTMLayer(param))

        param = {
            "id": 5,
            "rng": rng,
            "theano_rng": theano_rng,
            "dim_in": (kernel_num[1], row_num, col_num),
            "dim_out": (kernel_num[2], row_num, col_num),
            "input_receptive_field": (kernel_size, kernel_size),
            "transition_receptive_field": (kernel_size, kernel_size),
            "init_hidden_state": self.middle_layers[2].output[-1],
            "init_cell_state": self.middle_layers[2].cell_output[-1],
            "minibatch_size": minibatch_size,
            "input": self.middle_layers[4].output,
            "n_steps": config['output_seq_length'] - 1
        }
        self.middle_layers.append(ConvLSTMLayer(param))

        param = {
            "id":
            6,
            "rng":
            rng,
            "theano_rng":
            theano_rng,
            "dim_in":
            (kernel_num[0] + kernel_num[1] + kernel_num[2], row_num, col_num),
            "dim_out":
            data_dim,
            "input_receptive_field": (1, 1),
            "input_stride": (1, 1),
            "activation":
            "sigmoid",
            "minibatch_size":
            minibatch_size,
            "conv_type":
            "same",
            "input":
            TT.concatenate([
                TT.concatenate([
                    self.middle_layers[0].output[-1:],
                    self.middle_layers[1].output[-1:],
                    self.middle_layers[2].output[-1:]
                ],
                               axis=2),
                TT.concatenate([
                    self.middle_layers[3].output, self.middle_layers[4].output,
                    self.middle_layers[5].output
                ],
                               axis=2)
            ])
        }
        self.middle_layers.append(ConvForwardLayer(param))

        # dim_in = (16, 25, 25)
        param = {
            "id": "cost",
            "rng": rng,
            "theano_rng": theano_rng,  # "cost_func": "BinaryCrossEntropy",
            "cost_func": config['cost_func'],
            "dim_in": data_dim,
            "dim_out": (1, 1, 1),
            "minibatch_size": minibatch_size,
            "input": self.middle_layers[-1].output,
            "target": self.reshape_output
        }
        self.cost_layer = ElementwiseCostLayer(param)
        self.outputs = [{
            "name": "prediction",
            "value": self.middle_layers[-1].output
        }]

        model_param = {
            'interface_layer': self.interface_layer,
            'middle_layers': self.middle_layers,
            'cost_layer': self.cost_layer,
            #'combine_interface_layer': self.combine_interface_layer,
            'outputs': self.outputs,
            'errors': None,
            'name': "DeepWeatherModel-test",
            'problem_type': "regression"
        }
        super(FactorWeatherModel, self).__init__(model_param)