37 :
Network(type, name, ni, no), external_source_(NULL), int_mode_(false) {
110 int width = input.
Width();
120 for (
int i = 0; i < temp_lines.
size(); ++i) {
121 temp_lines[i].Init(
no_, scratch);
122 curr_input[i].Init(
ni_, scratch);
125 #pragma omp parallel for num_threads(kNumThreads) 126 for (
int t = 0; t < width; ++t) {
128 int thread_id = omp_get_thread_num();
130 for (
int t = 0; t < width; ++t) {
134 double* temp_line = temp_lines[thread_id];
135 const double* d_input = NULL;
136 const inT8* i_input = NULL;
138 i_input = input.
i(t);
141 d_input = curr_input[thread_id];
177 int t,
double* output_line) {
186 FuncInplace<GFunc>(
no_, output_line);
188 FuncInplace<FFunc>(
no_, output_line);
190 FuncInplace<ClipFFunc>(
no_, output_line);
192 FuncInplace<ClipGFunc>(
no_, output_line);
194 FuncInplace<Relu>(
no_, output_line);
198 ASSERT_HOST(
"Invalid fully-connected type!" == NULL);
211 for (
int i = 0; i < errors.
size(); ++i) errors[i].Init(
no_, scratch);
215 for (
int i = 0; i <
kNumThreads; ++i) temp_backprops[i].Init(
ni_, scratch);
217 int width = fwd_deltas.
Width();
219 errors_t.
Init(
no_, width, scratch);
221 #pragma omp parallel for num_threads(kNumThreads) 222 for (
int t = 0; t < width; ++t) {
223 int thread_id = omp_get_thread_num();
225 for (
int t = 0; t < width; ++t) {
228 double* backprop = NULL;
230 double* curr_errors = errors[thread_id];
232 if (backprop != NULL) {
242 back_deltas->
Print(10);
265 fwd_deltas.ReadTimeStep(t, curr_errors);
267 ASSERT_HOST(
"Invalid fully-connected type!" == NULL);
292 double* changed)
const {
void CopyTimeStepFrom(int dest_t, const NetworkIO &src, int src_t)
void ZeroInvalidElements()
void ReadTimeStep(int t, double *output) const
FullyConnected(const STRING &name, int ni, int no, NetworkType type)
void Debug2D(const char *msg)
TransposedArray source_t_
virtual void Update(float learning_rate, float momentum, int num_samples)
virtual void SetRandomizer(TRand *randomizer)
void init_to_size(int size, T t)
void MatrixDotVector(const double *u, double *v) const
void DisplayForward(const NetworkIO &matrix)
virtual bool Backward(bool debug, const NetworkIO &fwd_deltas, NetworkScratch *scratch, NetworkIO *back_deltas)
const char * string() const
void Resize(const NetworkIO &src, int num_features)
void VectorDotMatrix(const double *u, double *v) const
void WriteStrided(int t, const float *data)
void CountAlternators(const WeightMatrix &other, double *same, double *changed) const
virtual ~FullyConnected()
void set_loss_type(LossType value)
virtual void DebugWeights()
void FuncMultiply(const NetworkIO &v_io, int t, double *product)
virtual bool DeSerialize(TFile *fp)
TransposedArray * get() const
bool TestFlag(NetworkFlags flag) const
virtual void SetEnableTraining(TrainingState state)
void SetupForward(const NetworkIO &input, const TransposedArray *input_transpose)
void CopyWithNormalization(const NetworkIO &src, const NetworkIO &scale)
void SoftmaxInPlace(int n, T *inout)
void Update(double learning_rate, double momentum, int num_samples)
void ResizeNoInit(int size1, int size2)
void ResizeFloat(const NetworkIO &src, int num_features)
bool DeSerialize(bool training, TFile *fp)
int InitWeightsFloat(int no, int ni, bool ada_grad, float weight_range, TRand *randomizer)
void ForwardTimeStep(const double *d_input, const inT8 *i_input, int t, double *output_line)
void Print(int num) const
bool Serialize(bool training, TFile *fp) const
const inT8 * i(int t) const
void Init(int size1, int size2, NetworkScratch *scratch)
virtual StaticShape OutputShape(const StaticShape &input_shape) const
const TransposedArray * external_source_
void WriteTimeStep(int t, const double *input)
virtual bool Serialize(TFile *fp) const
virtual void ConvertToInt()
void DisplayBackward(const NetworkIO &matrix)
virtual bool Serialize(TFile *fp) const
void SumOuterTransposed(const TransposedArray &u, const TransposedArray &v, bool parallel)
virtual void CountAlternators(const Network &other, double *same, double *changed) const
virtual void Forward(bool debug, const NetworkIO &input, const TransposedArray *input_transpose, NetworkScratch *scratch, NetworkIO *output)
void FinishBackward(const TransposedArray &errors_t)
virtual int InitWeights(float range, TRand *randomizer)
void BackwardTimeStep(const NetworkIO &fwd_deltas, int t, double *curr_errors, TransposedArray *errors_t, double *backprop)
void set_depth(int value)