40 int stack_size =
stack_.size();
41 for (
int i = 0; i < stack_size; ++i) {
42 result =
stack_[i]->OutputShape(result);
52 tprintf(
"Num outputs,weights in serial:\n");
53 for (
int i = 0; i <
stack_.size(); ++i) {
54 int weights =
stack_[i]->InitWeights(range, randomizer);
68 for (
int i = 0; i <
stack_.size(); ++i)
70 return needs_backprop;
81 for (
int i = 0; i <
stack_.size(); ++i)
89 stack_[0]->CacheXScaleFactor(factor);
97 int stack_size =
stack_.size();
104 stack_[0]->Forward(debug, input, input_transpose, scratch, buffer1);
105 for (
int i = 1; i < stack_size; i += 2) {
106 stack_[i]->Forward(debug, *buffer1, NULL, scratch,
107 i + 1 < stack_size ? buffer2 : output);
108 if (i + 1 == stack_size)
return;
109 stack_[i + 1]->Forward(debug, *buffer2, NULL, scratch,
110 i + 2 < stack_size ? buffer1 : output);
120 int stack_size =
stack_.size();
127 if (!
stack_.back()->IsTraining() ||
128 !
stack_.back()->Backward(debug, fwd_deltas, scratch, buffer1))
130 for (
int i = stack_size - 2; i >= 0; i -= 2) {
132 !
stack_[i]->Backward(debug, *buffer1, scratch,
133 i > 0 ? buffer2 : back_deltas))
137 !
stack_[i - 1]->Backward(debug, *buffer2, scratch,
138 i > 1 ? buffer1 : back_deltas))
150 if (last_start < 0 || last_start >=
stack_.size()) {
151 tprintf(
"Invalid split index %d must be in range [0,%d]!\n",
152 last_start,
stack_.size() - 1);
157 for (
int s = 0; s <= last_start; ++s) {
166 for (
int s = last_start + 1; s <
stack_.size(); ++s) {
170 *start = master_series;
171 *end = boosted_series;
180 for (
int s = 0; s < src_series->stack_.size(); ++s) {
182 src_series->stack_[s] = NULL;
virtual int XScaleFactor() const
virtual void CacheXScaleFactor(int factor)
virtual bool SetupNeedsBackprop(bool needs_backprop)
void SplitAt(int last_start, Series **start, Series **end)
void ChangeType(NetworkType type)
virtual void Forward(bool debug, const NetworkIO &input, const TransposedArray *input_transpose, NetworkScratch *scratch, NetworkIO *output)
void AppendSeries(Network *src)
virtual StaticShape OutputShape(const StaticShape &input_shape) const
PointerVector< Network > stack_
virtual STRING spec() const
virtual bool Backward(bool debug, const NetworkIO &fwd_deltas, NetworkScratch *scratch, NetworkIO *back_deltas)
Series(const STRING &name)
virtual int InitWeights(float range, TRand *randomizer)
virtual void AddToStack(Network *network)