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
4f411d5a
Commit
4f411d5a
authored
Jan 26, 2013
by
Davis King
Browse files
Made svm_struct_controller_node support network_address objects.
parent
cbc469bf
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
23 deletions
+42
-23
dlib/svm/structural_svm_distributed.h
dlib/svm/structural_svm_distributed.h
+19
-12
dlib/svm/structural_svm_distributed_abstract.h
dlib/svm/structural_svm_distributed_abstract.h
+22
-10
dlib/test/svm_struct.cpp
dlib/test/svm_struct.cpp
+1
-1
No files found.
dlib/svm/structural_svm_distributed.h
View file @
4f411d5a
...
...
@@ -365,29 +365,36 @@ namespace dlib
}
void
add_processing_node
(
const
std
::
string
&
ip
,
unsigned
short
port
const
network_address
&
addr
)
{
// make sure requires clause is not broken
DLIB_ASSERT
(
is_ip_address
(
ip
)
&&
port
!=
0
,
DLIB_ASSERT
(
addr
.
port
!=
0
,
"
\t
void structural_svm_problem::add_processing_node()"
<<
"
\n\t
Invalid inputs were given to this function"
<<
"
\n\t
ip: "
<<
ip
<<
"
\n\t
port: "
<<
port
<<
"
\n\t
addr.host_address: "
<<
addr
.
host_address
<<
"
\n\t
addr.
port: "
<<
addr
.
port
<<
"
\n\t
this: "
<<
this
);
// check if this
pair
is already registered
// check if this
address
is already registered
for
(
unsigned
long
i
=
0
;
i
<
nodes
.
size
();
++
i
)
{
if
(
nodes
[
i
]
==
make_pair
(
ip
,
port
)
)
if
(
nodes
[
i
]
==
addr
)
{
return
;
}
}
nodes
.
push_back
(
make_pair
(
ip
,
port
));
nodes
.
push_back
(
addr
);
}
void
add_processing_node
(
const
std
::
string
&
ip_or_hostname
,
unsigned
short
port
)
{
add_processing_node
(
network_address
(
ip_or_hostname
,
port
));
}
unsigned
long
get_num_processing_nodes
(
...
...
@@ -439,7 +446,7 @@ namespace dlib
typedef
matrix_type_
matrix_type
;
problem_type
(
const
std
::
vector
<
std
::
pair
<
std
::
string
,
unsigned
short
>
>&
nodes_
,
const
std
::
vector
<
network_address
>&
nodes_
,
double
eps_
,
bool
verbose_
,
double
C_
...
...
@@ -465,7 +472,7 @@ namespace dlib
bridges
.
resize
(
nodes
.
size
());
for
(
unsigned
long
i
=
0
;
i
<
bridges
.
size
();
++
i
)
{
bridges
[
i
].
reset
(
new
bridge
(
connect_to
_ip_and_port
(
nodes
[
i
].
first
,
nodes
[
i
].
second
),
bridges
[
i
].
reset
(
new
bridge
(
connect_to
(
nodes
[
i
]
),
receive
(
in
),
transmit
(
*
out_pipes
[
i
])));
}
...
...
@@ -605,7 +612,7 @@ namespace dlib
risk
=
total_loss
+
dot
(
subgradient
,
w
);
}
std
::
vector
<
std
::
pair
<
std
::
string
,
unsigned
short
>
>
nodes
;
std
::
vector
<
network_address
>
nodes
;
double
eps
;
mutable
bool
verbose
;
double
C
;
...
...
@@ -622,7 +629,7 @@ namespace dlib
long
num_dims
;
};
std
::
vector
<
std
::
pair
<
std
::
string
,
unsigned
short
>
>
nodes
;
std
::
vector
<
network_address
>
nodes
;
double
eps
;
mutable
bool
verbose
;
double
C
;
...
...
dlib/svm/structural_svm_distributed_abstract.h
View file @
4f411d5a
...
...
@@ -88,9 +88,9 @@ namespace dlib
svm_struct_controller_node cont;
cont.set_c(100);
// Tell cont where the processing nodes are on your network.
cont.add_processing_node("192.168.1.10
",
12345);
cont.add_processing_node("192.168.1.11
",
12345);
cont.add_processing_node("192.168.1.12
",
12345);
cont.add_processing_node("192.168.1.10
:
12345
"
);
cont.add_processing_node("192.168.1.11
:
12345
"
);
cont.add_processing_node("192.168.1.12
:
12345
"
);
matrix<double> w;
oca solver;
cont(solver, w); // Run the optimization.
...
...
@@ -183,17 +183,29 @@ namespace dlib
!*/
void
add_processing_node
(
const
std
::
string
&
ip
,
unsigned
short
port
const
network_address
&
addr
);
/*!
requires
- addr.port != 0
ensures
- if (this
port and ip
ha
ve
n't already been added) then
- if (this
address
ha
s
n't already been added) then
- #get_num_processing_nodes() == get_num_processing_nodes() + 1
- When operator() is invoked to solve the structural svm problem
this object will connect to the svm_struct_processing_node located
at the given IP address and port number and will include it in the
distributed optimization.
- When operator() is invoked to solve the structural svm problem this
object will connect to the svm_struct_processing_node located at the
given network address and will include it in the distributed
optimization.
!*/
void
add_processing_node
(
const
std
::
string
&
ip_or_hostname
,
unsigned
short
port
);
/*!
requires
- port != 0
ensures
- invokes: add_processing_node(network_address(ip_or_hostname, port))
!*/
unsigned
long
get_num_processing_nodes
(
...
...
dlib/test/svm_struct.cpp
View file @
4f411d5a
...
...
@@ -212,7 +212,7 @@ namespace
if
(
verbose
)
controller
.
be_verbose
();
controller
.
add_processing_node
(
"127.0.0.1"
,
12345
);
controller
.
add_processing_node
(
"
127.0.0.1"
,
12346
);
controller
.
add_processing_node
(
"
localhost:
12346
"
);
svm_objective
=
controller
(
solver
,
weights
);
...
...
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