141 |
[field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd |
[field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd |
142 |
end)) |
end)) |
143 |
|
|
144 |
|
(* NOTE: this should be overloaded to allow both v*h and h*v orders *) |
145 |
|
val op_convolve = polyVar (N.op_convolve, all([DK, NK, SK], |
146 |
|
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let |
147 |
|
val k = Ty.DiffVar(k, 0) |
148 |
|
val d = Ty.DimVar d |
149 |
|
val dd = Ty.ShapeVar dd |
150 |
|
in |
151 |
|
[Ty.T_Image{dim=d, shape=dd}, Ty.T_Kernel k] |
152 |
|
--> field(k, d, dd) |
153 |
|
end)) |
154 |
|
|
155 |
val op_D = polyVar (N.op_D, all([DK, NK, SK], |
val op_D = polyVar (N.op_D, all([DK, NK, SK], |
156 |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let |
157 |
val k0 = Ty.DiffVar(k, 0) |
val k0 = Ty.DiffVar(k, 0) |
180 |
(* functions *) |
(* functions *) |
181 |
val fn_CL = monoVar (N.fn_CL, [tensor[N3, N3]] --> Ty.realTy) |
val fn_CL = monoVar (N.fn_CL, [tensor[N3, N3]] --> Ty.realTy) |
182 |
|
|
183 |
|
(* the following is depreciated in favor of the infix operator *) |
184 |
val fn_convolve = polyVar (N.fn_convolve, all([DK, NK, SK], |
val fn_convolve = polyVar (N.fn_convolve, all([DK, NK, SK], |
185 |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let |
fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let |
186 |
val k = Ty.DiffVar(k, 0) |
val k = Ty.DiffVar(k, 0) |