00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef EBLBASIC_H_
00033 #define EBLBASIC_H_
00034
00035 #include "Defines.h"
00036 #include "Idx.h"
00037 #include "Blas.h"
00038 #include "EblArch.h"
00039 #include "EblStates.h"
00040
00041 namespace ebl {
00042
00044
00049 class linear_module: public module_1_1<state_idx, state_idx> {
00050 public:
00051 state_idx w;
00052
00057 linear_module(parameter &p, intg in, intg out);
00059 virtual ~linear_module();
00061 virtual void fprop(state_idx &in, state_idx &out);
00063 virtual void bprop(state_idx &in, state_idx &out);
00065 virtual void bbprop(state_idx &in, state_idx &out);
00067 virtual int replicable_order() { return 1; }
00069 virtual void forget(forget_param_linear &fp);
00071 virtual void normalize();
00073 virtual void resize_output(state_idx &in, state_idx &out);
00074 };
00075
00084 DECLARE_REPLICABLE_MODULE_1_1(linear_module_replicable,
00085 linear_module,
00086 (parameter &p, intg in, intg out),
00087 (p, in, out));
00088
00090
00096 class convolution_module_2D: public module_1_1<state_idx, state_idx> {
00097 public:
00098 state_idx kernel;
00099 intg thickness;
00100 intg stridei;
00101 intg stridej;
00102 Idx<intg> &table;
00103
00106 convolution_module_2D(parameter &p, intg kerneli, intg kernelj,
00107 intg stridei, intg stridej,
00108 Idx<intg> &table, intg thick);
00109 virtual ~convolution_module_2D();
00111 virtual void fprop(state_idx &in, state_idx &out);
00113 virtual void bprop(state_idx &in, state_idx &out);
00115 virtual void bbprop(state_idx &in, state_idx &out);
00117 virtual void forget(forget_param_linear &fp);
00119 virtual int replicable_order() { return 3; }
00121 virtual void resize_output(state_idx &in, state_idx &out);
00122 };
00123
00132 DECLARE_REPLICABLE_MODULE_1_1(convolution_module_2D_replicable,
00133 convolution_module_2D,
00134 (parameter &p, intg ki, intg kj, intg si,
00135 intg sj, Idx<intg> &table, intg thick),
00136 (p, ki, kj, si, sj, table, thick));
00137
00139
00145 class subsampling_module_2D: public module_1_1<state_idx, state_idx> {
00146 public:
00147 state_idx coeff;
00148 state_idx sub;
00149 intg thickness;
00150 intg stridei;
00151 intg stridej;
00152
00155 subsampling_module_2D(parameter &p, intg stridei_, intg stridej_,
00156 intg subi, intg subj, intg thick);
00157 virtual ~subsampling_module_2D();
00159 virtual void fprop(state_idx &in, state_idx &out);
00161 virtual void bprop(state_idx &in, state_idx &out);
00163 virtual void bbprop(state_idx &in, state_idx &out);
00165 virtual void forget(forget_param_linear &fp);
00167 virtual int replicable_order() { return 3; }
00169 virtual void resize_output(state_idx &in, state_idx &out);
00170 };
00171
00180 DECLARE_REPLICABLE_MODULE_1_1(subsampling_module_2D_replicable,
00181 subsampling_module_2D,
00182 (parameter &p, intg sti, intg stj, intg subi,
00183 intg subj, intg thick),
00184 (p, sti, stj, subi, subj, thick));
00185
00187
00192 class addc_module: public module_1_1<state_idx, state_idx> {
00193 public:
00194 state_idx bias;
00195
00200 addc_module(parameter &p, intg size);
00201 virtual ~addc_module();
00203 virtual void fprop(state_idx &in, state_idx &out);
00205 virtual void bprop(state_idx &in, state_idx &out);
00207 virtual void bbprop(state_idx &in, state_idx &out);
00209 virtual void forget(forget_param_linear &fp);
00211 virtual void normalize();
00212 };
00213
00214 }
00215
00216 #endif