Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
dlib
Commits
d675d2e2
Commit
d675d2e2
authored
Aug 11, 2011
by
Davis King
Browse files
Made running_stats serializable.
parent
7a8dcf2f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
76 additions
and
2 deletions
+76
-2
dlib/statistics/statistics.h
dlib/statistics/statistics.h
+40
-0
dlib/statistics/statistics_abstract.h
dlib/statistics/statistics_abstract.h
+18
-0
dlib/test/statistics.cpp
dlib/test/statistics.cpp
+18
-2
No files found.
dlib/statistics/statistics.h
View file @
d675d2e2
...
@@ -158,6 +158,18 @@ namespace dlib
...
@@ -158,6 +158,18 @@ namespace dlib
return
(
val
-
mean
())
/
std
::
sqrt
(
variance
());
return
(
val
-
mean
())
/
std
::
sqrt
(
variance
());
}
}
template
<
typename
U
>
friend
void
serialize
(
const
running_stats
<
U
>&
item
,
std
::
ostream
&
out
);
template
<
typename
U
>
friend
void
deserialize
(
running_stats
<
U
>&
item
,
std
::
istream
&
in
);
private:
private:
T
sum
;
T
sum
;
T
sum_sqr
;
T
sum_sqr
;
...
@@ -167,6 +179,34 @@ namespace dlib
...
@@ -167,6 +179,34 @@ namespace dlib
T
max_value
;
T
max_value
;
};
};
template
<
typename
T
>
void
serialize
(
const
running_stats
<
T
>&
item
,
std
::
ostream
&
out
)
{
serialize
(
item
.
sum
,
out
);
serialize
(
item
.
sum_sqr
,
out
);
serialize
(
item
.
n
,
out
);
serialize
(
item
.
maximum_n
,
out
);
serialize
(
item
.
min_value
,
out
);
serialize
(
item
.
max_value
,
out
);
}
template
<
typename
T
>
void
deserialize
(
running_stats
<
T
>&
item
,
std
::
istream
&
in
)
{
deserialize
(
item
.
sum
,
in
);
deserialize
(
item
.
sum_sqr
,
in
);
deserialize
(
item
.
n
,
in
);
deserialize
(
item
.
maximum_n
,
in
);
deserialize
(
item
.
min_value
,
in
);
deserialize
(
item
.
max_value
,
in
);
}
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template
<
template
<
...
...
dlib/statistics/statistics_abstract.h
View file @
d675d2e2
...
@@ -157,6 +157,24 @@ namespace dlib
...
@@ -157,6 +157,24 @@ namespace dlib
!*/
!*/
};
};
template
<
typename
T
>
void
serialize
(
const
running_stats
<
T
>&
item
,
std
::
ostream
&
out
);
/*!
provides serialization support
!*/
template
<
typename
T
>
void
deserialize
(
running_stats
<
T
>&
item
,
std
::
istream
&
in
);
/*!
provides serialization support
!*/
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template
<
template
<
...
...
dlib/test/statistics.cpp
View file @
d675d2e2
...
@@ -195,7 +195,7 @@ namespace
...
@@ -195,7 +195,7 @@ namespace
{
{
print_spinner
();
print_spinner
();
running_stats
<
double
>
rs
;
running_stats
<
double
>
rs
,
rs2
;
running_scalar_covariance
<
double
>
rsc1
,
rsc2
;
running_scalar_covariance
<
double
>
rsc1
,
rsc2
;
...
@@ -208,7 +208,6 @@ namespace
...
@@ -208,7 +208,6 @@ namespace
rsc2
.
add
(
i
,
-
i
);
rsc2
.
add
(
i
,
-
i
);
}
}
// make sure the running_stats and running_scalar_covariance agree
// make sure the running_stats and running_scalar_covariance agree
DLIB_TEST_MSG
(
std
::
abs
(
rs
.
mean
()
-
rsc1
.
mean_x
())
<
1e-10
,
std
::
abs
(
rs
.
mean
()
-
rsc1
.
mean_x
()));
DLIB_TEST_MSG
(
std
::
abs
(
rs
.
mean
()
-
rsc1
.
mean_x
())
<
1e-10
,
std
::
abs
(
rs
.
mean
()
-
rsc1
.
mean_x
()));
DLIB_TEST
(
std
::
abs
(
rs
.
mean
()
-
rsc1
.
mean_y
())
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rs
.
mean
()
-
rsc1
.
mean_y
())
<
1e-10
);
...
@@ -220,6 +219,23 @@ namespace
...
@@ -220,6 +219,23 @@ namespace
DLIB_TEST
(
std
::
abs
(
rsc1
.
correlation
()
-
1
)
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rsc1
.
correlation
()
-
1
)
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rsc2
.
correlation
()
-
0
)
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rsc2
.
correlation
()
-
0
)
<
1e-10
);
// test serialization of running_stats
ostringstream
sout
;
serialize
(
rs
,
sout
);
istringstream
sin
(
sout
.
str
());
deserialize
(
rs2
,
sin
);
// make sure the running_stats and running_scalar_covariance agree
DLIB_TEST_MSG
(
std
::
abs
(
rs2
.
mean
()
-
rsc1
.
mean_x
())
<
1e-10
,
std
::
abs
(
rs2
.
mean
()
-
rsc1
.
mean_x
()));
DLIB_TEST
(
std
::
abs
(
rs2
.
mean
()
-
rsc1
.
mean_y
())
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rs2
.
stddev
()
-
rsc1
.
stddev_x
())
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rs2
.
stddev
()
-
rsc1
.
stddev_y
())
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rs2
.
variance
()
-
rsc1
.
variance_x
())
<
1e-10
);
DLIB_TEST
(
std
::
abs
(
rs2
.
variance
()
-
rsc1
.
variance_y
())
<
1e-10
);
DLIB_TEST
(
rs2
.
current_n
()
==
rsc1
.
current_n
());
}
}
void
perform_test
(
void
perform_test
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment