مكتبة لتحسين غير خطية يمكن التمييز
ورقة • فيديو • تويتر • صفحة الويب • دروس تعليمية
Thisus هي مكتبة فعالة للتطبيقات غير المنتظمة لبناء طبقات تحسين غير خطية مخصصة في Pytorch لدعم بناء مختلف المشكلات في الروبوتات والرؤية باعتبارها البنى المتخصصة الشاملة.
يوفر التحسين غير الخطي القابل للتمييز مخططًا عامًا لترميز أجهزة الاستقرار الاستقرائي ، حيث يمكن تحديد الوظيفة الموضوعية جزئيًا من خلال النماذج العصبية وجزئيًا مع نماذج مختلفة قابلة للتمييز في مجال الخبراء. يتم الاحتفاظ بالقدرة على حساب التدرجات من طرف إلى النهاية من خلال التمييز من خلال المحسن الذي يسمح للموديلات العصبية بالتدريب على فقدان المهمة النهائي ، مع الاستفادة أيضًا من الفائزين الذين تم التقاطهم من قبل المحسن.
انظر قائمة الأوراق المنشورة باستخدام Thisus للحصول على أمثلة عبر مجالات التطبيق المختلفة.
يوفر تطبيقنا واجهة سهلة الاستخدام لبناء طبقات تحسين مخصصة وتوصيلها بأي بنية عصبية. تتوفر الميزات المتغيرة حاليًا:
نحن ندعم العديد من الميزات التي تعمل على تحسين أوقات الحساب واستهلاك الذاكرة:
torch . للتثبيت لتكوين وحدة المعالجة المركزية/CUDA الخاصة بك ، اتبع الإرشادات الموجودة في موقع Pytorch.nvcc --version . إذا لم يكن الأمر كذلك ، فقم بتثبيته وتأكد من أن موقعه على متغير $PATH في نظامك.suitesparse ، والتي يمكنك تثبيتها عبر:sudo apt-get install libsuitesparse-dev (ubuntu).conda install -c conda-forge suitesparse (Mac).pypi
pip install theseus-aiنوفر حاليًا عجلات مع ملحقات CUDA الخاصة بنا التي تم تجميعها باستخدام CUDA 11.6 و Python 3.10. بالنسبة إلى إصدارات CUDA الأخرى ، فكر في التثبيت من المصدر أو استخدام برنامج Build Script.
لاحظ أن تثبيت pypi لا يتضمن مختبرات Thisus التجريبية الخاصة بنا. لهذا ، يرجى التثبيت من المصدر.
إن أبسط طريقة لتثبيت ثيسيوس من المصدر هي تشغيل ما يلي (انظر المزيد أدناه لتشمل أيضًا باسبشو)
git clone https://github.com/facebookresearch/theseus.git && cd theseus
pip install -e .إذا كنت مهتمًا بالمساهمة في ثيسيوس ، بدلاً من ذلك ، قم بتثبيت
pip install -e " .[dev] "
pre-commit installواتبع التعليمات الأكثر تفصيلا في المساهمة.
تثبيت ملحقات Baspacho من المصدر
بشكل افتراضي ، لا يتضمن التثبيت من المصدر امتداد Baspacho Sparse Solver. لهذا ، اتبع هذه الخطوات:
تجميع baspacho من المصدر بعد التعليمات هنا. نوصي باستخدام Flags -DBLA_STATIC=ON -DBUILD_SHARED_LIBS=OFF .
يجري
git clone https://github.com/facebookresearch/theseus.git && cd theseus
BASPACHO_ROOT_DIR= < path/to/root/baspacho/dir > pip install -e . حيث يجب أن يكون لجذر Baspacho الثنائيات في build الدليل الفرعي.
dev ) python -m pytest tests بشكل افتراضي ، تتضمن اختبارات الوحدة اختبارات لتمديدات CUDA الخاصة بنا. يمكنك إضافة الخيار -m "not cudaext" لتخطيه عند التثبيت بدون دعم CUDA. بالإضافة إلى ذلك ، يتم تخطي اختبارات Solver Baspacho المتفرقة تلقائيًا عند عدم تجميع extlib.
مثال بسيط. هذا المثال يناسب المنحنى Objective مع CostFunction واحدة تحسب المتبقية Objective والمحسّن GaussNewton في TheseusLayer . مع فقدان Adam و MSE ، TheseusLayer .
import torch
import theseus as th
x_true , y_true , v_true = read_data () # shapes (1, N), (1, N), (1, 1)
x = th . Variable ( torch . randn_like ( x_true ), name = "x" )
y = th . Variable ( y_true , name = "y" )
v = th . Vector ( 1 , name = "v" ) # a manifold subclass of Variable for optim_vars
def error_fn ( optim_vars , aux_vars ): # returns y - v * exp(x)
x , y = aux_vars
return y . tensor - optim_vars [ 0 ]. tensor * torch . exp ( x . tensor )
objective = th . Objective ()
cost_function = th . AutoDiffCostFunction (
[ v ], error_fn , y_true . shape [ 1 ], aux_vars = [ x , y ],
cost_weight = th . ScaleCostWeight ( 1.0 ))
objective . add ( cost_function )
layer = th . TheseusLayer ( th . GaussNewton ( objective , max_iterations = 10 ))
phi = torch . nn . Parameter ( x_true + 0.1 * torch . ones_like ( x_true ))
outer_optimizer = torch . optim . Adam ([ phi ], lr = 0.001 )
for epoch in range ( 10 ):
solution , info = layer . forward (
input_tensors = { "x" : phi . clone (), "v" : torch . ones ( 1 , 1 )},
optimizer_kwargs = { "backward_mode" : "implicit" })
outer_loss = torch . nn . functional . mse_loss ( solution [ "v" ], v_true )
outer_loss . backward ()
outer_optimizer . step ()انظر البرامج التعليمية ، وأمثلة الروبوتات وأمثلة الرؤية للتعرف على واجهة برمجة التطبيقات والاستخدام.
إذا كنت تستخدم thisus في عملك ، فيرجى الاستشهاد بالورقة مع bibtex أدناه.
@article { pineda2022theseus ,
title = { {Theseus: A Library for Differentiable Nonlinear Optimization} } ,
author = { Luis Pineda and Taosha Fan and Maurizio Monge and Shobha Venkataraman and Paloma Sodhi and Ricky TQ Chen and Joseph Ortiz and Daniel DeTone and Austin Wang and Stuart Anderson and Jing Dong and Brandon Amos and Mustafa Mukadam } ,
journal = { Advances in Neural Information Processing Systems } ,
year = { 2022 }
}ثيسيوس هو معهد ماساتشوستس للتكنولوجيا مرخصة. انظر الترخيص للحصول على التفاصيل.
أصبح Thisus ممكنًا من قبل المساهمين التاليين:
صنعت مع contrib.rocks.