Implement getOutputSize and getInputSize for seq layers

This commit is contained in:
2024-04-22 20:31:58 +02:00
parent fbf6c44bdd
commit f17debc244
18 changed files with 186 additions and 66 deletions

View File

@@ -49,4 +49,12 @@ float* AvgPooling2D::forward(const float* d_input) {
CUDA_CHECK(cudaDeviceSynchronize());
return d_output;
}
int AvgPooling2D::getOutputSize() {
return outputSize * outputSize * nChannels;
}
int AvgPooling2D::getInputSize() {
return inputSize * inputSize * nChannels;
}

View File

@@ -130,3 +130,11 @@ float* Conv2d::forward(const float* d_input) {
return d_output;
}
int Conv2d::getOutputSize() {
return outputSize * outputSize * numFilters;
}
int Conv2d::getInputSize() {
return inputSize * inputSize * inputChannels;
}

View File

@@ -108,4 +108,12 @@ void Dense::setBiases(const float* biases_input) {
std::vector<float> Dense::getBiases() {
return biases;
}
int Dense::getOutputSize() {
return outputSize;
}
int Dense::getInputSize() {
return inputSize;
}

View File

@@ -20,3 +20,12 @@ float* Input::forward(const float* input) {
return d_output;
}
int Input::getOutputSize() {
return inputSize;
}
int Input::getInputSize() {
return inputSize;
}

View File

@@ -52,4 +52,12 @@ float* MaxPooling2D::forward(const float* d_input) {
CUDA_CHECK(cudaDeviceSynchronize());
return d_output;
}
int MaxPooling2D::getOutputSize() {
return outputSize * outputSize * nChannels;
}
int MaxPooling2D::getInputSize() {
return inputSize * inputSize * nChannels;
}

View File

@@ -20,4 +20,13 @@ float* Output::forward(const float* input) {
CUDA_CHECK(cudaDeviceSynchronize());
return h_output;
}
int Output::getOutputSize() {
return inputSize;
}
int Output::getInputSize() {
return inputSize;
}

View File

@@ -43,7 +43,6 @@ float* Model::predict(const float* input) {
float* d_input = inputLayer->forward(input);
for (auto& layer : layers) {
std::cout << layer.first << std::endl;
d_input = layer.second->forward(d_input);
}