MagmaDNN  1.0
c++NeuralNetworkFramework
neuralnetwork.h
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include <cmath>
12 #include <ctime>
13 #include "compute/op_utilities.h"
14 #include "model/model.h"
15 #include "layer/layers.h"
16 #include "optimizer/optimizers.h"
17 #include "math/argmax.h"
18 #include "dataloader/dataloaders.h"
19 
20 namespace magmadnn {
21 namespace model {
22 
23 struct nn_params_t {
24  unsigned int n_epochs;
25  unsigned int batch_size;
26  double learning_rate;
27 };
28 
29 template <typename T>
30 class NeuralNetwork : public Model<T> {
31 public:
38  NeuralNetwork(std::vector<layer::Layer<T> *> layers, optimizer::loss_t loss_func, optimizer::optimizer_t optimizer, nn_params_t params);
39 
46  NeuralNetwork(std::vector<layer::Layer<T> *> layers, optimizer::loss_t loss_func, optimizer::Optimizer<T> *optim, nn_params_t params);
47 
48  virtual ~NeuralNetwork();
49 
58  virtual magmadnn_error_t fit(Tensor<T> *x, Tensor<T> *y, metric_t& metric_out, bool verbose=false);
59  virtual Tensor<T> *predict(Tensor<T> *sample);
60  virtual unsigned int predict_class(Tensor<T> *sample);
61 
62 
63  virtual std::vector<layer::Layer<T> *> get_layers() { return this->layers; }
64 
65 protected:
66  typename std::vector<layer::Layer<T> *> layers;
67  optimizer::loss_t loss_func;
68  optimizer::optimizer_t optimizer;
69  nn_params_t model_params;
70 
71  /* network inputs/output */
72  op::Operation<T> *network_input_op_ptr, *network_output_op_ptr;
73  Tensor<T> *network_input_tensor_ptr, *network_output_tensor_ptr;
74 
75  /* ground truth */
76  op::Operation<T> *ground_truth_op_ptr;
77  Tensor<T> *ground_truth_tensor_ptr;
78 
79  T default_learning_rate = (T) 0.05; /* assumed learning rate if one is not given */
80  std::vector<op::Operation<T> *> _vars; /* network weights */
81  op::Operation<T> *_obj; /* objective function to optimize -- i.e. the loss function */
82  Tensor<T> *_obj_tensor_ptr; /* pointer to objective function's tensor */
83  optimizer::Optimizer<T> *optim; /* network optimizer */
84 };
85 
86 } // namespace model
87 } // namespace magmadnn
unsigned int batch_size
Definition: neuralnetwork.h:25
Definition: model.h:29
Definition: neuralnetwork.h:23
unsigned int n_epochs
Definition: neuralnetwork.h:24
Definition: addop.cpp:11
Definition: optimizer.h:19
Definition: tensor.h:34
double learning_rate
Definition: neuralnetwork.h:26
Definition: model.h:22
Definition: layer.h:18
Definition: operation.h:18
Definition: neuralnetwork.h:30