diff options
author | Étienne Simon <esimon@esimon.eu> | 2015-07-02 12:59:15 -0400 |
---|---|---|
committer | Étienne Simon <esimon@esimon.eu> | 2015-07-02 12:59:15 -0400 |
commit | 98139f573eb179c8f5a06ba6c8d8883376814ccf (patch) | |
tree | f27270d80cb91c19639227c921549f762eda2f72 /model/time_mlp_tgtcls.py | |
parent | a4b190516d00428b1d8a81686a3291e5fa5f9865 (diff) | |
download | taxi-98139f573eb179c8f5a06ba6c8d8883376814ccf.tar.gz taxi-98139f573eb179c8f5a06ba6c8d8883376814ccf.zip |
Remove _simple
Diffstat (limited to 'model/time_mlp_tgtcls.py')
-rw-r--r-- | model/time_mlp_tgtcls.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/model/time_mlp_tgtcls.py b/model/time_mlp_tgtcls.py new file mode 100644 index 0000000..35c8d8a --- /dev/null +++ b/model/time_mlp_tgtcls.py @@ -0,0 +1,33 @@ +import numpy +import theano +from theano import tensor +from blocks.bricks import application, Softmax + +import error +from model.mlp import FFMLP, Stream + + +class Model(FFMLP): + def __init__(self, config, **kwargs): + super(Model, self, output_layer=Softmax).__init__(config, **kwargs) + self.classes = theano.shared(numpy.array(config.tgtcls, dtype=theano.config.floatX), name='classes') + self.inputs.append('input_time') + + @application(outputs=['duration']) + def predict(self, **kwargs): + cls_probas = super(Model, self).predict(**kwargs) + return kwargs['input_time'] + tensor.dot(cls_probas, self.classes) + + @predict.property('inputs') + def predict_inputs(self): + return self.inputs + + @application(outputs=['cost']) + def cost(self, **kwargs): + y_hat = self.predict(**kwargs) + y = kwargs['travel_time'] + return error.rmsle(y_hat.flatten(), y.flatten()) + + @cost.property('inputs') + def cost_inputs(self): + return self.inputs + ['travel_time'] |