کلاسیفیکشن با پایتورچ در c++ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

کلاسیفیکشن با پایتورچ در c++

0 امتیاز
سلام.

چطور مدلی با پسوند .pth که تو پایتون ذخیره کردم  را در c++  استفاده کنم؟
سوال شده مرداد 3, 1401  بوسیله ی tara_s (امتیاز 140)   3 15 20

1 پاسخ

+1 امتیاز
 
بهترین پاسخ
پسوند pth معمولاً برای ذخیره مدل‌های PyTorch در پایتون استفاده می‌شود و شما می‌توانید با استفاده از PyTorch C++ API از این مدل‌ها در C++ استفاده کنید. در اینجا خلاصه ای از مراحلی است که باید برای استفاده از یک مدل PyTorch با پسوند pt در C++ انجام دهید:
 
1-لود مدل در پایتون: می توانید مدل را با استفاده از تابع ()torch.load بارگذاری کنید که یک شی مدل PyTorch را برمی گرداند.
 
2-Serialize the model: می توانید از تابع ()torch.jit.save برای سریال سازی مدل استفاده کنید که مدل را به فرمتی تبدیل می کند که می تواند در C++ بارگذاری شود. این همچنین مدل را به عنوان فایل با پسوند pt. در دیسک ذخیره می کند.
 
3-لود مدل در C++: برای بارگذاری مدل سریال در C++ می توانید از تابع torch::jit::load استفاده کنید. این یک torch::jit::script::Module: ماژول را برمی گرداند که می توانید از آن برای انجام محاسبات رو به جلو روی ورودی های خود استفاده کنید.
 
4-ورودی ها را در C++ آماده کنید: باید تانسورهایی را در C++ با ابعاد ورودی هایی که مدل روی آن آموزش داده شده ایجاد کنید و به مدل منتقل کنید.
 
5-انجام محاسبات فوروارد: می توانید از متد ()forward شی مشعل::jit::script::Module برای انجام محاسبات رو به جلو روی ورودی ها و دریافت خروجی استفاده کنید.
 
6-خروجی را پردازش کنید: می توانید از تانسورهای خروجی در C++ برای دریافت نتایج و پردازش بیشتر استفاده کنید.
 
کد پایتون برای ذخیره مدل:
import torch

# load the model
model = torch.load("model.pth")

# serialize the model
torch.jit.save(model, "model.pt")

 

کد C++ برای بارگیری و استفاده از مدل:

#include <torch/script.h>

int main() {
    // load the model
    torch::jit::script::Module model = torch::jit::load("model.pt");

    // prepare inputs
    std::vector<torch::jit::IValue> inputs;
    inputs.push_back(torch::ones({1, 3, 224, 224}));

    // perform forward computation
    auto output = model.forward(inputs).toTensor();

    // process output
    std::cout << output << std::endl;

    return 0;
}

 

پاسخ داده شده بهمن 6, 1401 بوسیله ی عباس مولایی (امتیاز 2,754)   1 5 13
انتخاب شد شهریور 8, 1402 بوسیله ی farnoosh
...