Files
CUDANet/include/layer.hpp

43 lines
763 B
C++

#pragma once
#include <vector>
#include "shape.hpp"
#include "tensor.hpp"
#define CUDANET_SAME_PADDING(inputSize, kernelSize, stride) \
((stride - 1) * inputSize - stride + kernelSize) / 2;
namespace CUDANet {
/**
* @brief Basic Layer
*
*/
class Layer {
public:
virtual ~Layer(){};
virtual CUDANet::Tensor& forward(CUDANet::Tensor &input) = 0;
virtual CUDANet::Shape input_shape() = 0;
virtual CUDANet::Shape output_shape() = 0;
virtual size_t input_size() = 0;
virtual size_t output_size() = 0;
virtual void set_weights(void *input) = 0;
virtual size_t get_weights_size() = 0;
virtual void set_biases(void *input) = 0;
virtual size_t get_biases_size() = 0;
};
} // namespace CUDANet::Layers