42 int stack_size =
stack_.size();
43 for (
int i = 1; i < stack_size; ++i) {
55 bool parallel_debug =
false;
59 parallel_debug =
true;
62 int stack_size =
stack_.size();
67 for (
int i = 0; i < stack_size; ++i) {
71 #pragma omp parallel for num_threads(stack_size) 73 for (
int i = 0; i < stack_size; ++i) {
74 stack_[i]->Forward(debug, input, NULL, scratch, results[i]);
79 for (
int i = 0; i < stack_size; ++i) {
80 out_offset = output->
CopyPacking(*results[i], out_offset);
91 src_transpose = &transposed_input_;
95 for (
int i = 0; i < stack_size; ++i) {
96 stack_[i]->Forward(debug, input, src_transpose, scratch, result);
103 out_offset = output->
CopyPacking(*result, out_offset);
106 if (parallel_debug) {
122 int stack_size =
stack_.size();
129 int feature_offset = 0;
130 for (
int i = 0; i <
stack_.size(); ++i) {
131 int num_features =
stack_[i]->NumOutputs();
132 in_deltas[i].Resize(fwd_deltas, num_features, scratch);
134 in_deltas[i]->CopyUnpacking(fwd_deltas, feature_offset, num_features);
135 feature_offset += num_features;
138 #pragma omp parallel for num_threads(stack_size) 140 for (
int i = 0; i < stack_size; ++i) {
141 stack_[i]->Backward(debug, *in_deltas[i], scratch,
142 i == 0 ? back_deltas : out_deltas[i]);
145 for (
int i = 1; i < stack_size; ++i) {
155 int feature_offset = 0;
156 for (
int i = 0; i <
stack_.size(); ++i) {
157 int num_features =
stack_[i]->NumOutputs();
158 in_deltas->
CopyUnpacking(fwd_deltas, feature_offset, num_features);
159 feature_offset += num_features;
160 if (
stack_[i]->
Backward(debug, *in_deltas, scratch, back_deltas)) {
164 out_deltas->
CopyAll(*back_deltas);
void CopyUnpacking(const NetworkIO &src, int feature_offset, int num_features)
void init_to_size(int size, T t)
void DisplayForward(const NetworkIO &matrix)
Parallel(const STRING &name, NetworkType type)
void Resize(const NetworkIO &src, int num_features)
int CopyPacking(const NetworkIO &src, int feature_offset)
void AddAllToFloat(const NetworkIO &src)
void ScaleFloatBy(float factor)
void ResizeFloat(const NetworkIO &src, int num_features, NetworkScratch *scratch)
PointerVector< Network > stack_
void CopyAll(const NetworkIO &src)
virtual void Forward(bool debug, const NetworkIO &input, const TransposedArray *input_transpose, NetworkScratch *scratch, NetworkIO *output)
virtual StaticShape OutputShape(const StaticShape &input_shape) const
void Transpose(TransposedArray *dest) const
virtual bool Backward(bool debug, const NetworkIO &fwd_deltas, NetworkScratch *scratch, NetworkIO *back_deltas)
void DisplayBackward(const NetworkIO &matrix)
void set_depth(int value)