Start implementing Inception v3

This commit is contained in:
2024-05-19 17:43:42 +02:00
parent 2118cd47c3
commit d0b974dd9f
2 changed files with 65 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
#include <cudanet.cuh>
#include <iostream>
int main(int argc, const char *const argv[]) {
if (argc != 3) {
std::cerr << "Usage: " << argv[0] << "<model_weights_path> <image_path>"
<< std::endl;
return 1; // Return error code indicating incorrect usage
}
std::cout << "Loading model..." << std::endl;
}
class BasicConv2d : public CUDANet::Module {
public:
BasicConv2d(
const int inputSize,
const int inputChannels,
const int outputChannels,
const int kernelSize,
const int stride,
const int padding,
const std::string& prefix
)
: inputSize(inputSize),
inputChannels(inputChannels),
outputChannels(outputChannels) {
// Create the convolution layer
CUDANet::Layers::Conv2d *conv = new CUDANet::Layers::Conv2d(
inputSize, inputChannels, kernelSize, stride, outputChannels, padding, CUDANet::Layers::ActivationType::NONE
);
int batchNormSize = conv->getOutputSize();
CUDANet::Layers::BatchNorm *batchNorm =
new CUDANet::Layers::BatchNorm(
batchNormSize, outputChannels, 1e-3f, CUDANet::Layers::ActivationType::RELU
);
addLayer(prefix + ".conv", conv);
addLayer(prefix + ".bn", batchNorm);
}
private:
int inputSize;
int inputChannels;
int outputChannels;
};

View File

@@ -0,0 +1,17 @@
import torch
import torchvision
import sys
from torchsummary import summary
inception = torchvision.models.inception_v3(weights=torchvision.models.Inception_V3_Weights.DEFAULT)
inception.eval()
sys.path.append('../../tools') # Ugly hack
from utils import export_model_weights, print_model_parameters
print_model_parameters(inception) # print layer names and number of parameters
inception.cuda()
summary(inception, (3, 299, 299))