প্রতিটি কোড ব্লকের আগে বা একবার প্রকল্পের জন্য বীজ সেট করুন?


13

এটি একটি এলোমেলো বীজ সেট করার জন্য আদর্শ পরামর্শ যাতে ফল পুনরায় উত্পাদন করা যায়। তবে, যেহেতু সিউডো-এলোমেলো সংখ্যা আঁকা হিসাবে বীজটি উন্নত, তাই কোনও অংশের কোড অতিরিক্ত নম্বর আঁকলে ফলাফল পরিবর্তন হতে পারে ।

প্রথম নজরে, সংস্করণ নিয়ন্ত্রণ এটির একটি সমাধান বলে মনে হচ্ছে, যখন আপনি আপনার নোট বা কাগজে ফলাফলগুলি লিখে রাখেন তবে এটি অন্তত আপনাকে ফিরে যেতে এবং উপস্থিত সংস্করণটি পুনরুত্পাদন করার অনুমতি দেয়। যাইহোক, যেহেতু এটি কেবল জগাখিচুড়ি বিষয়গুলিতে এক অঙ্কন করে, আপনি যদি আর আপডেট করেন তবে ফলাফলগুলিও পরিবর্তিত হতে পারে।

আমি বুঝতে পেরেছি যে এটি সম্ভবত বিরল ক্ষেত্রেই সমস্যাযুক্ত, তবে এখানে কোনও সেরা অনুশীলন থাকলে আমি আগ্রহী। এটি আমার নিজের কাজ নিয়ে संघर्ष করছি।

উত্তর:


8

এটি নির্ভর করে আপনি কোডটি কীভাবে চালাবেন বা এমন কোনও কোড রয়েছে যা কিছুটা স্টোকাস্টিকের মধ্যে রয়েছে যাতে এটি এলোমেলোভাবে অঙ্ক করে numbers (এর উদাহরণ হ'ল আমাদের ভেগান প্যাকেজে ক্রমুয়েশন পরীক্ষাগুলি যেখানে আমরা কেবলমাত্র পর্যাপ্ত তথ্য সংগ্রহ না করা অবধি অনুমতি দেওয়া অবিরত করি যেখানে ফলাফল টাইপ আই ত্রুটিটি টাইপ II ত্রুটি হারের অ্যাকাউন্টে পরীক্ষা করে নেওয়া পৃথক কিনা তা জানা যায়।) যদিও এটি ড্রগুলিকে প্রভাবিত করা উচিত নয় ...

যদি চূড়ান্ত স্ক্রিপ্টটি কেবলমাত্র ব্যাচের কাজ হিসাবে বা তার সম্পূর্ণরূপে চালিত হয় এবং সিউডো-র্যান্ডম নম্বর জেনারেটর থেকে কোনও স্টোকাস্টিক অঙ্কন না থাকে তবে স্ক্রিপ্টের শীর্ষে একটি বীজ স্থাপন এবং এটি সম্পূর্ণরূপে চালানো নিরাপদ ।

আপনি যদি কোডটি দিয়ে পদক্ষেপ নিতে চান, সম্ভবত ব্লকগুলি পুনরায় চালিত করতে পারেন তবে set.seed()প্রতিটি ফাংশন কলের আগে আপনার কল দরকার যা সিউডো-এলোমেলো নম্বর জেনারেটর থেকে আঁকা।

আমার বৈজ্ঞানিক কাগজগুলির জন্য আমি নিয়মিত সুপার প্রতিরক্ষামূলক যাই এবং প্রতিটি কোড খণ্ডের আগে বীজ সেট করি; এটি পরবর্তী তারিখে স্ক্রিপ্টের আপডেটগুলির জন্য অনুমতি দেয় যা যে কোনও সময়ে বিদ্যমান স্ক্রিপ্টে beোকানো প্রয়োজন হতে পারে - পর্যালোচকদের বা সহ-লেখকদের মন্তব্যের প্রতিক্রিয়া জানাতে বলুন।

আপনার ফলাফলগুলি আশা করা যায় যে একটি নির্দিষ্ট সেট-পেন্ডু-এলোমেলো মানগুলির উপর নির্ভর করবে না, সুতরাং সমস্যাটি একটি প্রতিবেদন বা কাগজে বর্ণিত সঠিক মানগুলি পুনরুত্পাদন করতে সক্ষম হচ্ছে। যদিও আপনি অত্যন্ত প্রতিরক্ষামূলক হতে পারেন এবং প্রতিটি কোড অংশে একটি বীজ স্থাপন করতে পারেন, তবুও আপনাকে সঠিক ইনস্টলেশন --- আর সংস্করণ এবং প্যাকেজ সংস্করণগুলি পুনরায় তৈরি করতে হবে যাতে এই বিবরণটি রেকর্ড করা অপরিহার্য। অতিরিক্ত সুরক্ষিত হওয়ার জন্য আপনাকে নির্দিষ্ট প্রকল্পগুলি / কাগজপত্রের জন্য পূর্ববর্তী আর সংস্করণ এবং প্যাকেজগুলি রাখতে হবে। আসলে, অনেক লোক এটি করে।


+1 টি। শেষ অনুচ্ছেদে পুনরায়: আপনার সমস্ত জাঙ্ক সংরক্ষণ করতে হবে না এবং আপনাকে একটি সম্পূর্ণ ইনস্টলেশন পুনরায় তৈরি করতে হবে না। আপনি যদি কোন আরএনজি ব্যবহার করেন সে সম্পর্কে সুনির্দিষ্ট হয়ে থাকেন তবে ডিফল্ট গ্রহণ করার পরিবর্তে যা যা প্রয়োজন সেগুলি হ'ল (1) সেই আরএনজি (যা সাধারণত সংক্ষিপ্ত হয়) এর উত্স কোড এবং (2) প্রতিটি গুরুত্বপূর্ণ স্থানে আরএনজির অবস্থা । বেশিরভাগ Rকাজের জন্য এই রাজ্যটি খুঁজে পেতে পারে .Random.seed। আমার সবচেয়ে বড় উদ্বেগটি Rহ'ল কিছু রুটিনগুলি এটিকে অবহেলা করতে পারে - এবং সম্ভবত set.seedকিছু ক্ষেত্রে একেবারে উপেক্ষা করতে পারে ।
whuber

2
@ যেহেতু আমি সেখানে আরও সাধারণভাবে ভাবছিলাম - যদি উদ্বেগটি ফলাফলের সঠিক সেটটি পুনরুত্পাদন করে তবে আপনার সম্ভবত আর এর সংস্করণ এবং কোনও ব্যবহৃত প্যাকেজের সংস্করণ প্রয়োজন হবে। ঝকঝকে; আর 3.0.0 যথাযথতার সাথে পরিবর্তন করেছে যার সাথে এটি মানগুলি জানিয়েছে - বড় নয় তবে এটি অনেকগুলি প্যাকেজ চেক টেস্টগুলি ফেলে দিয়েছে যা খুব বেশি নির্ভুলতা ধরেছিল। এছাড়াও, প্যাকেজগুলি নিয়মিত আপডেট হয় এবং জিনিসগুলি পরিবর্তিত হয়।
গ্যাভিন সিম্পসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.