Mercurial > pylearn
comparison linear_regression.py @ 523:111e547ffa7b
modified to use the new implecement of ops and use the new interface to theano.function
author | Frederic Bastien <bastienf@iro.umontreal.ca> |
---|---|
date | Fri, 14 Nov 2008 16:39:59 -0500 |
parents | 8e4d2ebd816a |
children | cfe3f62a08cb |
comparison
equal
deleted
inserted
replaced
522:05f802184606 | 523:111e547ffa7b |
---|---|
4 the use of theano. | 4 the use of theano. |
5 """ | 5 """ |
6 | 6 |
7 from pylearn.learner import OfflineLearningAlgorithm,OnlineLearningAlgorithm | 7 from pylearn.learner import OfflineLearningAlgorithm,OnlineLearningAlgorithm |
8 from theano import tensor as T | 8 from theano import tensor as T |
9 from nnet_ops import prepend_1_to_each_row | 9 from theano.tensor.nnet import prepend_1_to_each_row |
10 from theano.scalar import as_scalar | 10 from theano.scalar import as_scalar |
11 from common.autoname import AutoName | 11 from common.autoname import AutoName |
12 import theano | 12 import theano |
13 import numpy | 13 import numpy |
14 | 14 |
94 outputs = T.dot(inputs,Wt) + b # minibatchsize x n_outputs | 94 outputs = T.dot(inputs,Wt) + b # minibatchsize x n_outputs |
95 squared_errors = T.sum(T.sqr(targets-outputs),axis=1) | 95 squared_errors = T.sum(T.sqr(targets-outputs),axis=1) |
96 | 96 |
97 __compiled = False | 97 __compiled = False |
98 @classmethod | 98 @classmethod |
99 def compile(cls,linker='c|py'): | 99 def compile(cls, mode = "FAST_RUN"): |
100 if cls.__compiled: | 100 if cls.__compiled: |
101 return | 101 return |
102 def fn(input_vars,output_vars): | 102 def fn(input_vars,output_vars): |
103 return staticmethod(theano.function(input_vars,output_vars, linker=linker)) | 103 return staticmethod(theano.function(input_vars, output_vars, mode=mode)) |
104 | 104 |
105 cls.compute_outputs = fn([cls.inputs,cls.theta],[cls.outputs]) | 105 cls.compute_outputs = fn([cls.inputs,cls.theta],[cls.outputs]) |
106 cls.compute_errors = fn([cls.outputs,cls.targets],[cls.squared_errors]) | 106 cls.compute_errors = fn([cls.outputs,cls.targets],[cls.squared_errors]) |
107 | 107 |
108 cls.__compiled = True | 108 cls.__compiled = True |
113 class LinearRegressionEquations(LinearPredictorEquations): | 113 class LinearRegressionEquations(LinearPredictorEquations): |
114 P = LinearPredictorEquations | 114 P = LinearPredictorEquations |
115 XtX = T.matrix() # (n_inputs+1) x (n_inputs+1) | 115 XtX = T.matrix() # (n_inputs+1) x (n_inputs+1) |
116 XtY = T.matrix() # (n_inputs+1) x n_outputs | 116 XtY = T.matrix() # (n_inputs+1) x n_outputs |
117 extended_input = prepend_1_to_each_row(P.inputs) | 117 extended_input = prepend_1_to_each_row(P.inputs) |
118 new_XtX = T.add_inplace(XtX,T.dot(extended_input.T,extended_input)) | 118 new_XtX = T.add(XtX,T.dot(extended_input.T,extended_input)) |
119 new_XtY = T.add_inplace(XtY,T.dot(extended_input.T,P.targets)) | 119 new_XtY = T.add(XtY,T.dot(extended_input.T,P.targets)) |
120 | 120 |
121 __compiled = False | 121 __compiled = False |
122 | 122 |
123 @classmethod | 123 @classmethod |
124 def compile(cls,linker='c|py'): | 124 def compile(cls, mode="FAST_RUN"): |
125 if cls.__compiled: | 125 if cls.__compiled: |
126 return | 126 return |
127 def fn(input_vars,output_vars): | 127 def fn(input_vars,output_vars): |
128 return staticmethod(theano.function(input_vars,output_vars, linker=linker)) | 128 return staticmethod(theano.function(input_vars, output_vars, mode=mode)) |
129 | 129 |
130 cls.update = fn([cls.XtX,cls.XtY,cls.P.inputs,cls.P.targets],[cls.new_XtX,cls.new_XtY]) | 130 cls.update = fn([cls.XtX,cls.XtY,cls.P.inputs,cls.P.targets],[cls.new_XtX,cls.new_XtY]) |
131 | 131 |
132 cls.__compiled = True | 132 cls.__compiled = True |
133 | 133 |