Snowman  0.1.0
nnet-lib.h
1 #pragma once
2 #include <cstdint>
3 #include <deque>
4 #include <iosfwd>
5 #include <matrix-wrapper.h>
6 #include <memory>
7 #include <vector-wrapper.h>
8 #include <vector>
9 
10 namespace snowboy {
11  struct FrameInfo;
12  class ChunkInfo;
13  class Component;
14  class Nnet {
15  // TODO: Figure out names for remaining data fields...
16  bool m_pad_input;
17  bool m_is_first_chunk;
18  bool field_xa;
19  bool field_xb;
20  bool field_xc;
21  // Padding ?
22  int m_left_context;
23  int m_right_context;
24  size_t field_x18;
25  // Padding ?
26  std::deque<FrameInfo> field_x20;
27  std::vector<ChunkInfo> m_chunkinfo;
28  std::vector<std::unique_ptr<Component>> m_components;
29  std::vector<Matrix> m_reusable_component_inputs;
30  Vector field_b8;
31  Matrix m_unprocessed_buffer;
32  Matrix m_input_data;
33  Matrix m_output_data;
34 
35  public:
36  Nnet();
37  Nnet(bool pad_context);
38  Nnet(const Nnet& other);
39  ~Nnet();
40 
41  void Compute(const MatrixBase&, const std::vector<FrameInfo>&, Matrix*, std::vector<FrameInfo>*);
42  void ComputeChunkInfo(int, int);
43  void Destroy();
44  void FlushOutput(const MatrixBase&, const std::vector<FrameInfo>&, Matrix*, std::vector<FrameInfo>*);
45  int32_t InputDim() const;
46  int32_t OutputDim() const;
47  void Propagate();
48  void ResetComputation();
49  void SetIndices();
50  void Read(bool binary, std::istream* is);
51  void Write(bool binary, std::ostream* is) const;
52 
53  int32_t LeftContext() const;
54  int32_t RightContext() const;
55  };
56 } // namespace snowboy
Definition: nnet-lib.h:14
Definition: vector-wrapper.h:64
Definition: matrix-wrapper.h:11
Definition: matrix-wrapper.h:61