আংশিক একক মান মূল্য ক্ষয় (এসভিডি) এর স্মৃতি দক্ষ বাস্তবায়ন


10

মডেল হ্রাসের জন্য, আমি বাম একক ভেক্টরগুলিকে গণনা করতে চাই - 20 বলুন - ম্যাট্রিক্স , যেখানে এবং । । দুর্ভাগ্যক্রমে, আমার ম্যাট্রিক্স কোনও গঠন ছাড়াই ঘন হবে। এন 10 6 কে 10 3ARN,kN106k103A

যদি আমি পাইথনের মডিউলটি svdথেকে numpy.linalgএই আকারের এলোমেলো ম্যাট্রিক্সের জন্য রুটিনটি কল করি তবে আমি একটি স্মৃতি ত্রুটিতে চলেছি। এটি পচন জন্য of বরাদ্দের কারণে ।= ভি এস ইউVRN,NA=VSU

চারপাশে কি অ্যালগরিদম আছে, যে এই সমস্যাটি এড়ায়? উদাহরণস্বরূপ, কেবলমাত্র একক ভেক্টর স্থাপন করে ননজারো একবাক্য মানগুলির দ্বারা সহায়তা করা হয়।

আমি গণনার সময় এবং নির্ভুলতায় বাণিজ্য করতে প্রস্তুত।


1
মজার বিষয়, দেখে মনে হচ্ছে নিম্পি কীভাবে পাতলা এসভিডি করবেন তা জানেন না ...
জেএম

ইঙ্গিতটির জন্য ধন্যবাদ। প্রকৃতপক্ষে, numpy.linalg.svd এর বিকল্প রয়েছে full_matricesযা মিথ্যাতে সেট করা হবে যাতে কেবলমাত্র 'ননজারো' অংশগুলি গণনা করা যায়। তবুও, আরও কিছুটা কমিয়ে দেওয়ার উপায় আছে কি?
জানু

3
numpyব্যাকএন্ড ফোরট্রান কোড, ব্যবহার LAPACKE_dgesvdপ্রমিত svd জন্য রুটিন। তবে সাধারণত আপনার ম্যাট্রিক্স হ'ল C_CONTIGOUS(পরীক্ষা করে দেখুন matrix.flags)। সুতরাং এটি ফরটারন সারিবদ্ধকরণের জন্য ডেটা অনুলিপি করে। ত্রুটিযুক্ত রুটিন চালানোর সময় আপনার ম্যাট্রিক্সের আরও একটি অনুলিপি প্রয়োজন হয় (বা কমপক্ষে এটির জন্য মেমরি)। আপনি যদি নিশ্চিত হন যে মেমরি সারিবদ্ধকরণ শুরু থেকেই ফোর্টরান স্টাইলে রয়েছে তবে আপনি একটি অনুলিপি থেকে মুক্তি পেতে পারেন।
বোর্ন

উত্তর:


6

আপনি যদি কেবল কয়েকটি একক মান / ভেক্টর চান তবে এআরপ্যাকটি কৌশলটি করা উচিত। SVD ডক্স মহান হয় না, এবং এই ডিস্ট্রিবিউশন আপ টু ডেট বেশি।

সম্পাদনা: আপনি পাইথনে এটি করতে চাইলে সায়পাইয়ের একটি মোড়ক রয়েছে । যেহেতু আপনার ম্যাট্রিক্স ঘন, আপনি ব্লক স্পার্স সারি (BSR) ফর্ম্যাটটি চেষ্টা করতে পারেন ।


আমার একটি চেহারা হবে, কীভাবে অ্যারপ্যাক অজগরটির সাথে একীভূত হয় ...
জানুয়ারী

1
দেখে মনে হচ্ছে স্কিপিতে মোড়ক রয়েছে। আমি তাদের দেহের জবাব দেওয়ার জন্য যুক্ত করব।
ম্যাক্স হাচিনসন


2

হয়তো আপনি এটি চেষ্টা করতে পারেন।

https://github.com/jakevdp/pypropack

এটি প্রোপ্যাক প্যাকেজের জন্য একটি পাইথন মোড়ক, এটি বৃহত স্পার্স ম্যাট্রিক্স এবং লিনিয়ার অপারেটরগুলির দক্ষ আংশিক একক মান ভলনকে কার্যকর করে।


2

ইন্টেল এমকেএল নতুন জ্যাকোবি-এসভিডি অ্যালগরিদম প্রয়োগ করে। এখানে বাস্তবায়ন বিশদগুলি: http://www.netlib.org/lapack/lawnspdf/lawn169.pdf http://www.fernuni-hagen.de/MATHPHYS/veselic/downloads/j02.pdf

এবং ল্যাপাক রুটিন: http://software.intel.com/sites/products/docamentation/hpc/mkl/mklman/GUID-732F9EE1-BCEC-4D9B-9B93-AF5499B21140.htm#DRMAC08-1

কাজের আকার অবশ্যই সামঞ্জস্যযোগ্য। আপনি সিথন, এসডাব্লুআইজি বা অন্য কোনও মোড়ানো প্রক্রিয়া ব্যবহার করে পাইথন থেকে সি ফাংশনগুলি সহজেই কল করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.