Hi @Hengd,
I was trying this suggested piece of code.
Save seems to work fine. But are you able to load the saved model? I’m trying something like this
// Trying to save the model.
std::string model_path = "test_model.pt";
torch::serialize::OutputArchive output_archive;
seqConvLayer->save(output_archive);
output_archive.save_to(model_path);
// Trying to load the previously saved model
torch::serialize::InputArchive archive;
std::string file("test_model.pt");
archive.load_from(file);
torch::nn::Sequential savedSeq;
savedSeq->load(archive);
auto parameters = savedSeq->named_parameters();
auto keys = parameters.keys();
auto vals = parameters.values();
for(auto v: keys) {
std::cout << v << "\n";
}
std::cout << "Saved Model:\n\n";
std::cout << c10::str(savedSeq) << "\n\n";
Here is the output I’m getting.
Saved Model:
torch::nn::Sequential
Where as I’m expecting an output something similar to the one shown below.
Model:
torch::nn::Sequential(
(0): torch::nn::Conv2d(input_channels=3, output_channels=16, kernel_size=[3, 3], stride=[1, 1])
(1): ReLu
(2): torch::max_pool2d(x, {2, 2})
(3): torch::nn::Conv2d(input_channels=16, output_channels=32, kernel_size=[3, 3], stride=[1, 1])
(4): ReLu
(5): torch::max_pool2d(x, {2, 2})
(6): torch::nn::Conv2d(input_channels=32, output_channels=64, kernel_size=[3, 3], stride=[1, 1])
(7): ReLu
(8): torch::max_pool2d(x, {2, 2})
(9): Flatten
(10): torch::nn::Dropout(rate=0.25)
(11): torch::nn::Linear(in=1024, out=500, with_bias=true)
(12): ReLu
(13): torch::nn::Dropout(rate=0.25)
(14): torch::nn::Linear(in=500, out=10, with_bias=true)
(15): torch::log_softmax(x, dim=1)
)
Can you please let me know what is that I’m doing wrong while loading the model?
Thanks and Regards,
Santhosh