mirror of https://github.com/davisking/dlib.git
Made svm_struct_controller_node support network_address objects.
This commit is contained in:
parent
cbc469bf42
commit
4f411d5a44
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
const network_address& addr
|
||||
);
|
||||
/*!
|
||||
requires
|
||||
- addr.port != 0
|
||||
ensures
|
||||
- if (this address hasn'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 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
|
||||
- if (this port and ip haven'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.
|
||||
- invokes: add_processing_node(network_address(ip_or_hostname, port))
|
||||
!*/
|
||||
|
||||
unsigned long get_num_processing_nodes (
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue