মডেল হ্রাসের জন্য, আমি বাম একক ভেক্টরগুলিকে গণনা করতে চাই - 20 বলুন - ম্যাট্রিক্স , যেখানে এবং । । দুর্ভাগ্যক্রমে, আমার ম্যাট্রিক্স কোনও গঠন ছাড়াই ঘন হবে। এন ≈ 10 6 কে ≈ 10 3 এ
যদি আমি পাইথনের মডিউলটি svd
থেকে numpy.linalg
এই আকারের এলোমেলো ম্যাট্রিক্সের জন্য রুটিনটি কল করি তবে আমি একটি স্মৃতি ত্রুটিতে চলেছি। এটি পচন জন্য of বরাদ্দের কারণে । এ = ভি এস ইউ
চারপাশে কি অ্যালগরিদম আছে, যে এই সমস্যাটি এড়ায়? উদাহরণস্বরূপ, কেবলমাত্র একক ভেক্টর স্থাপন করে ননজারো একবাক্য মানগুলির দ্বারা সহায়তা করা হয়।
আমি গণনার সময় এবং নির্ভুলতায় বাণিজ্য করতে প্রস্তুত।
full_matrices
যা মিথ্যাতে সেট করা হবে যাতে কেবলমাত্র 'ননজারো' অংশগুলি গণনা করা যায়। তবুও, আরও কিছুটা কমিয়ে দেওয়ার উপায় আছে কি?
numpy
ব্যাকএন্ড ফোরট্রান কোড, ব্যবহার LAPACKE_dgesvd
প্রমিত svd জন্য রুটিন। তবে সাধারণত আপনার ম্যাট্রিক্স হ'ল C_CONTIGOUS
(পরীক্ষা করে দেখুন matrix.flags
)। সুতরাং এটি ফরটারন সারিবদ্ধকরণের জন্য ডেটা অনুলিপি করে। ত্রুটিযুক্ত রুটিন চালানোর সময় আপনার ম্যাট্রিক্সের আরও একটি অনুলিপি প্রয়োজন হয় (বা কমপক্ষে এটির জন্য মেমরি)। আপনি যদি নিশ্চিত হন যে মেমরি সারিবদ্ধকরণ শুরু থেকেই ফোর্টরান স্টাইলে রয়েছে তবে আপনি একটি অনুলিপি থেকে মুক্তি পেতে পারেন।