You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@singa.apache.org by "Lee Chonho (JIRA)" <ji...@apache.org> on 2015/10/03 20:24:26 UTC
[jira] [Created] (SINGA-81) Helper API, which enables users to
construct JobProto in C++ and by Python binding
Lee Chonho created SINGA-81:
-------------------------------
Summary: Helper API, which enables users to construct JobProto in C++ and by Python binding
Key: SINGA-81
URL: https://issues.apache.org/jira/browse/SINGA-81
Project: Singa
Issue Type: New Feature
Reporter: Lee Chonho
Proposed design v1
- (1) have a class named Builder
- (2) use Boost::parameter library (+ associated necessary header files)
(1)
Builder class implements api-like functions to configure JobProto including NetProto (LayerProto), ClusterProto, UpdaterProto, etc.
Two options
a. users call Builder's functions in main.cc like
{code}
JobProto jobproto;
Builder builder( &jobproto, "job name" );
builder.xxx(xxx) // add data layer
builder.xxx(xxx) // add parser layer
... etc. ...
{code}
b. we set main.cc like below and users call Builders functions in Construct()
{code}
JobProto jobproto;
Builder builder( &jobproto, "model name" );
builder.Construct()
{code}
(2)
Planning to use header-only files from Boost library
- if the necessary files are small enough
- because we can use "named arguments" feature with no restriction of # of arguments, order, types.
- because function will be intuitive, and adding users' own proto in a straightforward way.
Example is here. http://theboostcpplibraries.com/boost.parameter
By following the example, we can do like
{code}
BOOST_PARAMETER_MEMBER_FUNCTION(
(char*), AddLayerData, tag,
(required
(type, (int)) (name, (char*)) (src, (char*))
)
(optional
(path, (char*), *) (bsize (int) *)
) )
{
... // set values
return name;
}
{code}
Then, users can add a datalayer by
{code}
L1 = builder.AddLayerData(kShardData, "data", null, _path="train_shard", _bsize=1000);
{code}
(TODO)
- make use of google protobuf reflection for efficient parameter setting
- need to avoid multiple calls for adding same/similar layers
Any suggestion, design idea, comments please.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)