#ifndef CUDANET_MODULE_H #define CUDANET_MODULE_H #include #include #include #include "layer.cuh" namespace CUDANet { class Module : public Layers::SequentialLayer { public: Module(const int inputSize, const int inputChannels, const int outputSize, const int outputChannels); ~Module(); virtual float* forward(const float* d_input) = 0; int getOutputSize(); int getInputSize(); void addLayer(const std::string& name, Layers::SequentialLayer* layer); Layers::SequentialLayer* getLayer(const std::string& name); const std::unordered_map& getLayers() const; private: int inputSize; int inputChannels; int outputSize; int outputChannels; float *d_output; std::vector> layers; std::unordered_map layerMap; }; } // namespace CUDANet #endif