Built-in constructors
This section details the filter constructors included by default. These are built off of the Waveletspackage for the 1D constructors.
1D methods
FourierFilterFlux.waveletLayer — FunctionwaveletLayer(inputSize::Union{Int,NTuple{N, T}};
             dType = Float32, σ = identity, trainable = false,
             plan = true, init = Flux.glorot_normal, bias=false,
             convBoundary=Sym(), cw = Morlet(), averagingLayer = false,
             varargs...) where {N,T}Create a ConvFFT layer that uses wavelets from ContinuousWavelets.jl. By default it isn't trainable. varargs are any of the settings that can be passed on to creating a CFW type.
New Arguments
- convBoundary::ConvBoundary=Sym(): the type of symmetry to use in computing the transform. Note that convBoundary and boundary are different, with boundary needing to be set using types from ContinuousWavelets and convBoundary needs to be set using the FourierFilterFlux boundary types.
- cw::ContWaveClass=Morlet(): the type of wavelet to use, e.g.- dog2,- Morlet(). See ContinuousWavelets.jl for more.
- averagingLayer::Bool=false: if true, use just the averaging filter, and drop all other filters.
Arguments from ContinuousWavelets.jl
- scalingFactor,- s, or- Q::Real=8.0: the number of wavelets between the octaves $2^J$ and $2^{J+1}$ (defaults to 8, which is most appropriate for music and other audio). Valid range is $(0,\infty)$.
- β::Real=4.0: As using exactly- Qwavelets per octave leads to excessively many low-frequency wavelets,- βvaries the number of wavelets per octave, with larger values of- βcorresponding to fewer low frequency wavelets(see Wavelet Frequency Spacing for details). Valid range is $(1,\infty)$, though around- β=6the spacing is approximately linear in frequency, rather than log-frequency, and begins to become concave after that.
- boundary::WaveletBoundary=SymBoundary(): The default boundary condition is- SymBoundary(), implemented by appending a flipped version of the vector at the end to eliminate edge discontinuities. See Boundary Conditions for the other possibilities.
- averagingType::Average=Father(): determines whether or not to include the averaging function, and if so, what kind of averaging. The options are- Father: use the averaging function that corresponds to the mother Wavelet.
- Dirac: use the sinc function with the appropriate width.
- NoAve: don't average. this has one fewer filters than the other- averagingTypes
 
- averagingLength::Int=4: the number of wavelet octaves that are covered by the averaging,
- frameBound::Real=1: gives the total norm of the whole collection, corresponding to the upper frame bound; if you don't want to impose a particular bound, set- frameBound<0.
- normalizationor- p::Real=Inf: the p-norm preserved as the scale changes, so if we're scaling by $s$,- normalizationhas value- p, and the mother wavelet is $\psi$, then the resulting wavelet is $s^{1/p}\psi(^{t}/_{s})$. The default scaling,- Infgives all the same maximum value in the frequency domain. Valid range is $(0,\infty]$, though $p<1$ isn't actually preserving a norm.