@@ -13,7 +13,7 @@ function adapt!(
13
13
α:: AbstractScalarOrVec{<:AbstractFloat} ,
14
14
is_update:: Bool = true ,
15
15
)
16
- resize ! (adaptor, θ )
16
+ resize_adaptor ! (adaptor, size (θ) )
17
17
push! (adaptor, θ)
18
18
is_update && update! (adaptor)
19
19
return nothing
@@ -29,7 +29,7 @@ UnitMassMatrix() = UnitMassMatrix{Float64}()
29
29
30
30
Base. string (:: UnitMassMatrix ) = " I"
31
31
32
- Base . resize ! (pc:: UnitMassMatrix , θ :: AbstractVecOrMat ) = nothing
32
+ resize_adaptor ! (pc:: UnitMassMatrix , size_θ :: Tuple ) = nothing
33
33
34
34
reset! (:: UnitMassMatrix ) = nothing
35
35
@@ -102,20 +102,31 @@ function WelfordVar(sz::Union{Tuple{Int},Tuple{Int,Int}}; kwargs...)
102
102
return WelfordVar {Float64} (sz; kwargs... )
103
103
end
104
104
105
- function Base . resize ! (wv:: WelfordVar , θ :: AbstractVecOrMat{T } ) where {T<: AbstractFloat }
106
- if size (θ) != size (wv. var)
105
+ function resize_adaptor ! (wv:: WelfordVar{T} , size_θ :: Tuple{Int,Int } ) where {T<: AbstractFloat }
106
+ if size_θ != size (wv. var)
107
107
@assert wv. n == 0 " Cannot resize a var estimator when it contains samples."
108
- wv. μ = zeros (T, size (θ))
109
- wv. M = zeros (T, size (θ))
110
- wv. δ = zeros (T, size (θ))
111
- wv. var = ones (T, size (θ))
108
+ wv. μ = zeros (T, size_θ)
109
+ wv. M = zeros (T, size_θ)
110
+ wv. δ = zeros (T, size_θ)
111
+ wv. var = ones (T, size_θ)
112
+ end
113
+ end
114
+
115
+ function resize_adaptor! (wv:: WelfordVar{T} , size_θ:: Tuple{Int} ) where {T<: AbstractFloat }
116
+ length_θ = first (size_θ)
117
+ if length_θ != size (wv. var, 1 )
118
+ @assert wv. n == 0 " Cannot resize a var estimator when it contains samples."
119
+ fill! (resize! (wv. μ, length_θ), T (0 ))
120
+ fill! (resize! (wv. M, length_θ), T (0 ))
121
+ fill! (resize! (wv. δ, length_θ), T (0 ))
122
+ fill! (resize! (wv. var, length_θ), T (1 ))
112
123
end
113
124
end
114
125
115
126
function reset! (wv:: WelfordVar{T} ) where {T<: AbstractFloat }
116
127
wv. n = 0
117
- wv. μ . = zero (T)
118
- wv. M . = zero (T)
128
+ fill! ( wv. μ, zero (T) )
129
+ fill! ( wv. M, zero (T) )
119
130
return nothing
120
131
end
121
132
@@ -191,20 +202,21 @@ end
191
202
192
203
WelfordCov (sz:: Tuple{Int} ; kwargs... ) = WelfordCov {Float64} (sz; kwargs... )
193
204
194
- function Base. resize! (wc:: WelfordCov , θ:: AbstractVector{T} ) where {T<: AbstractFloat }
195
- if length (θ) != size (wc. cov, 1 )
205
+ function resize_adaptor! (wc:: WelfordCov{T} , size_θ:: Tuple{Int} ) where {T<: AbstractFloat }
206
+ length_θ = first (size_θ)
207
+ if length_θ != size (wc. cov, 1 )
196
208
@assert wc. n == 0 " Cannot resize a var estimator when it contains samples."
197
- wc. μ = zeros (T, length (θ ))
198
- wc. δ = zeros (T, length (θ ))
199
- wc. M = zeros (T, length (θ), length (θ) )
200
- wc. cov = LinearAlgebra. diagm (0 => ones (T, length (θ) ))
209
+ fill! ( resize! ( wc. μ, length_θ), T ( 0 ))
210
+ fill! ( resize! ( wc. δ, length_θ), T ( 0 ))
211
+ wc. M = zeros (T, length_θ, length_θ )
212
+ wc. cov = LinearAlgebra. diagm (0 => ones (T, length_θ ))
201
213
end
202
214
end
203
215
204
216
function reset! (wc:: WelfordCov{T} ) where {T<: AbstractFloat }
205
217
wc. n = 0
206
- wc. μ . = zero (T)
207
- wc. M . = zero (T)
218
+ fill! ( wc. μ, zero (T) )
219
+ fill! ( wc. M, zero (T) )
208
220
return nothing
209
221
end
210
222
0 commit comments