37 lines
1.0 KiB
Mathematica
37 lines
1.0 KiB
Mathematica
|
classdef PhaseSplit < dagnn.Filter
|
||
|
% Construct PhaseSplit in a way similar to Pooling, mightbe we could
|
||
|
% do it in a better and clean way.
|
||
|
properties
|
||
|
poolSize = [1 1]
|
||
|
end
|
||
|
|
||
|
methods
|
||
|
function outputs = forward(self, inputs, params)
|
||
|
outputs{1} = vl_nnphasesplit( inputs{1} ) ;
|
||
|
end
|
||
|
|
||
|
function [derInputs, derParams] = backward(self, inputs, params, derOutputs)
|
||
|
derInputs{1} = vl_nnphasesplit( inputs{1}, derOutputs{1} ) ;
|
||
|
derParams = {} ;
|
||
|
end
|
||
|
|
||
|
function kernelSize = getKernelSize(obj)
|
||
|
kernelSize = obj.poolSize ;
|
||
|
end
|
||
|
|
||
|
function outputSizes = getOutputSizes(obj, inputSizes)
|
||
|
%outputSizes = getOutputSizes@dagnn.Filter(obj, inputSizes) ;
|
||
|
outputSizes{1}(1) = inputSizes{1}(1)/8 ;
|
||
|
outputSizes{1}(2) = inputSizes{1}(2)/8;
|
||
|
outputSizes{1}(3) = inputSizes{1}(3)*64;
|
||
|
outputSizes{1}(4) = inputSizes{1}(4);
|
||
|
end
|
||
|
|
||
|
function obj = PhaseSplit(varargin)
|
||
|
%obj.load(varargin) ;
|
||
|
obj.pad = [0 0 0 0];
|
||
|
obj.stride = [8 8];
|
||
|
end
|
||
|
end
|
||
|
end
|