11 #ifndef LAYR_SEQMODEL_HPP 12 #define LAYR_SEQMODEL_HPP 45 return std::make_shared<SeqModelBuilder>(label);
55 std::string label_prefix =
"")
84 it != et && 0 == input; ++it)
86 input = (*it)->get_ninput();
96 it != et && 0 == output; ++it)
98 output = (*it)->get_noutput();
122 auto tmp = layer->get_contents();
123 out.insert(out.end(), tmp.begin(), tmp.end());
132 for (
size_t i = 0, n =
layers_.size(); i < n; ++i)
135 out = layer->connect(input);
138 input->get_tensor().get(),
139 },
LayerId(layer->get_ltype(), layer->get_label(), i));
154 auto subs = layer->get_contents();
155 for (
auto&
sub : subs)
158 layer->get_label(),
layers_.size()));
191 #endif // LAYR_SEQMODEL_HPP std::vector< LayerptrT > layers_
Definition: seqmodel.hpp:37
std::vector< LayerptrT > get_layers(void) const
Return stored sublayers.
Definition: seqmodel.hpp:145
LayerRegistry & get_layer_reg(void)
Return global layer registry reference.
std::string label_
Definition: seqmodel.hpp:181
void push_back(LayerptrT layer)
Append layer to stored sublayers.
Definition: seqmodel.hpp:151
size_t get_ninput(void) const override
Implementation of iLayer.
Definition: seqmodel.hpp:80
Builder implementation for sequentially connected models.
Definition: seqmodel.hpp:18
std::string register_tagr(std::string key, LayerBuildF builder)
Definition: layer.hpp:198
NodeptrT connect(NodeptrT input) const override
Implementation of iLayer.
Definition: seqmodel.hpp:129
void recursive_tag(teq::TensptrT root, teq::TensSetT ignores, LayerId subs) const
const std::string seq_model_key
Identifier for sequentially connected models.
Definition: seqmodel.hpp:41
teq::TensptrsT get_contents(void) const override
Implementation of iLayer.
Definition: seqmodel.hpp:116
std::shared_ptr< iLayerBuilder > LBuilderptrT
Layer builder smart pointer.
Definition: layer.hpp:179
void copy_helper(const SequentialModel &other, std::string label_prefix="")
Definition: seqmodel.hpp:170
std::string label_
Definition: seqmodel.hpp:35
Layer implementation that sequentially applies sublayers.
Definition: seqmodel.hpp:49
const std::string layers_key_prefix
String prefixed to every layer key.
Definition: layer.hpp:25
Definition: layer.hpp:164
std::string get_label(void) const override
Implementation of iLayer.
Definition: seqmodel.hpp:110
std::vector< LayerptrT > layers_
Definition: seqmodel.hpp:183
EigenptrT< T > sub(teq::Shape &outshape, const OpArg< T > &a, const OpArg< T > &b)
Definition: operator.hpp:679
void tag(teq::TensptrT tensor, LayerId subs) const
std::string get_ltype(void) const override
Implementation of iLayer.
Definition: seqmodel.hpp:104
std::shared_ptr< iTensor > TensptrT
Tensor smart pointer.
Definition: itensor.hpp:51
std::shared_ptr< SequentialModel > SeqModelptrT
Smart pointer of sequentially connected model.
Definition: seqmodel.hpp:187
std::vector< TensptrT > TensptrsT
Vector of tensor smart pointers.
Definition: itensor.hpp:60
Sublayer type, label, and index encapsulation.
Definition: layer.hpp:35
iLayer * clone_impl(const std::string &label_prefix) const override
Definition: seqmodel.hpp:165
SequentialModel(const SequentialModel &other, std::string label_prefix="")
Definition: seqmodel.hpp:54
LayerptrT build(void) const override
Implementation of iLayerBuilder.
Definition: seqmodel.cpp:8
void set_sublayer(LayerptrT layer) override
Implementation of iLayerBuilder.
Definition: seqmodel.hpp:26
SequentialModel & operator=(const SequentialModel &other)
Definition: seqmodel.hpp:60
std::shared_ptr< iNode< T > > NodeptrT
Smart pointer of node.
Definition: inode.hpp:63
SequentialModel(const std::string &label)
Definition: seqmodel.hpp:51
SequentialModel * clone(std::string label_prefix="") const
Return deep copy of this model with prefixed label.
Definition: seqmodel.hpp:74
std::shared_ptr< iLayer > LayerptrT
Smart pointer of layer.
Definition: layer.hpp:159
size_t get_noutput(void) const override
Implementation of iLayer.
Definition: seqmodel.hpp:92
void set_tensor(teq::TensptrT tens, std::string target) override
Implementation of iLayerBuilder.
Definition: seqmodel.hpp:23
Definition: layer.hpp:121
SeqModelBuilder(std::string label)
Definition: seqmodel.hpp:20