পাইথন - হুবহু sklearn.piplines.Pipline কি?


118

sklearn.pipeline.Pipelineঠিক কীভাবে কাজ করে তা আমি বুঝতে পারি না ।

ডকটিতে কয়েকটি ব্যাখ্যা রয়েছে । উদাহরণস্বরূপ তারা কী বলতে চাইছেন:

একটি চূড়ান্ত অনুমানকারী সঙ্গে রূপান্তর পাইপলাইন।

আমার প্রশ্ন পরিষ্কার করার জন্য, কি কি steps? তারা কিভাবে কাজ করে?

সম্পাদন করা

আমি আমার প্রশ্ন আরও পরিষ্কার করে দিতে পারি উত্তরগুলির জন্য ধন্যবাদ:

আমি যখন পাইপলাইনটি কল করি এবং পদক্ষেপ হিসাবে, দুটি ট্রান্সফর্মার এবং একটি অনুমানকারী, যেমন:

pipln = Pipeline([("trsfm1",transformer_1),
                  ("trsfm2",transformer_2),
                  ("estmtr",estimator)])

আমি এই কল করলে কি হবে?

pipln.fit()
OR
pipln.fit_transform()

আমি অনুমান করতে পারি না কীভাবে একজন প্রাক্কলনকারী ট্রান্সফরমার হতে পারে এবং কীভাবে ট্রান্সফর্মার লাগানো যায়।


3
আমি যা বুঝতে পেরেছি তা থেকে পাইপলাইন আপনাকে শেখার প্রক্রিয়াটির কয়েকটি ধাপ স্বয়ংক্রিয়ায়িত করতে সহায়তা করে। যেমন মডেলগুলির প্রশিক্ষণ এবং পরীক্ষার বৈশিষ্ট্য বা বৈশিষ্ট্য নির্বাচন ... সুতরাং আপনি যদি কোনও রিগ্রেশন মিশ্রিত করতে চান তবে উদাহরণস্বরূপ একটি শ্রেণিবদ্ধকে খাওয়ানোর জন্য এটি ব্যবহার করুন, আপনার পদক্ষেপগুলি সেই রিগ্রেশন এবং তারপরে শ্রেণিবদ্ধের প্রশিক্ষণ হবে। সম্পাদনা করুন: বিশদ যুক্ত করুন
M0rkHaV

উত্তর:


179

সাইকিট-লার্নে ট্রান্সফর্মার - এমন কিছু শ্রেণীর মধ্যে ফিট এবং ট্রান্সফর্ম পদ্ধতি, বা ফিট_ট্রান্সফর্ম পদ্ধতি রয়েছে।

Predictor - কিছু বর্গ ফিট এবং পদ্ধতি, বা fit_predict পদ্ধতি ভবিষ্যদ্বাণী করা হয়।

পাইপলাইন কেবল একটি বিমূর্ত ধারণা, এটি কিছু বিদ্যমান মিলি অ্যালগরিদম নয়। চূড়ান্ত হিসাবরক্ষক প্রয়োগের আগে প্রায়শই এমএল কার্যগুলিতে আপনাকে বিভিন্ন রূপান্তরগুলির ক্রম (বৈশিষ্ট্যগুলির সন্ধান, নতুন বৈশিষ্ট্য তৈরি করতে, কেবলমাত্র কিছু ভাল বৈশিষ্ট্য নির্বাচন করতে হবে) এর ক্রম সম্পাদন করতে হবে।

পাইপলাইন ব্যবহারের একটি ভাল উদাহরণ এখানে । পাইপলাইন আপনাকে রূপান্তরের 3 টি ধাপ এবং ফলস্বরূপ অনুমানকারীগুলির জন্য একটি একক ইন্টারফেস দেয়। এটি ভিতরে ট্রান্সফর্মার এবং ভবিষ্যদ্বাণীকারীদের encapsulates, এবং এখন আপনি যেমন কিছু করতে পারেন:

    vect = CountVectorizer()
    tfidf = TfidfTransformer()
    clf = SGDClassifier()

    vX = vect.fit_transform(Xtrain)
    tfidfX = tfidf.fit_transform(vX)
    predicted = clf.fit_predict(tfidfX)

    # Now evaluate all steps on test set
    vX = vect.fit_transform(Xtest)
    tfidfX = tfidf.fit_transform(vX)
    predicted = clf.fit_predict(tfidfX)

কেবল সহ:

pipeline = Pipeline([
    ('vect', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', SGDClassifier()),
])
predicted = pipeline.fit(Xtrain).predict(Xtrain)
# Now evaluate all steps on test set
predicted = pipeline.predict(Xtest)

পাইপলাইনগুলির সাহায্যে আপনি এই মেটা-অনুমানকটির প্রতিটি পদক্ষেপের জন্য পরামিতিগুলির সেটগুলির উপর সহজেই গ্রিড-অনুসন্ধান করতে পারেন। উপরের লিঙ্কে বর্ণিত হিসাবে। শেষ এক ব্যতীত সমস্ত পদক্ষেপগুলি অবশ্যই রূপান্তর করা উচিত, শেষ পদক্ষেপটি ট্রান্সফর্মার বা ভবিষ্যদ্বাণীকারী হতে পারে। সম্পাদনার উত্তর : আপনি যখন কল করবেন pipln.fit()- পাইপলাইনের অভ্যন্তরে প্রতিটি ট্রান্সফর্মার পূর্ববর্তী ট্রান্সফর্মারের আউটপুটগুলিতে লাগানো হবে (প্রথম ট্রান্সফর্মারটি কাঁচা ডেটাসেটে শিখে নেওয়া হয়)। শেষ অনুমানকারীটি ট্রান্সফরমার বা ভবিষ্যদ্বাণীকারী হতে পারে, আপনি কেবল পাইপলাইনে ফিট_ট্রান্সফর্ম () কল করতে পারবেন কেবলমাত্র যদি আপনার শেষ অনুমানকারীটি ট্রান্সফর্মার হয় (যা ফিট-ট্রান্সফর্ম প্রয়োগ করে, বা পৃথকভাবে রূপান্তর ও ফিট করে পদ্ধতিগুলি), আপনি পাইপলাইনে ফিট_প্রেডিক্ট () বা ভবিষ্যদ্বাণী () করতে পারবেন কেবলমাত্র আপনার শেষ অনুমানক ভবিষ্যদ্বাণীকারী। সুতরাং আপনি কেবল ফিট_ট্রান্সফর্ম কল বা পাইপলাইনে রূপান্তর করতে পারবেন না, এর শেষ ধাপটি ভবিষ্যদ্বাণীকারী।


1
আপনি কি বলতে চাইছেন predicted = pipeline.fit(Xtrain).predict(Xtrain)?
farhawa

@ ফারহওয়া, প্রশিক্ষণের সেট সম্পর্কে ক্লাসের পূর্বাভাস।
ইব্রাহিম গণিয়েভ

4
এর বেশি ভোট কেন নেই? এটি একটি ব্লগ পোস্ট হওয়া উচিত।
আর ক্ল্যাভেন

1
@ আইয়ামগিন, বেশিরভাগ স্কাইকিট-লার্ন ট্রান্সফর্মারগুলির ইন্টারফেস আমাদের প্রয়োজনীয় রূপান্তরগুলি পছন্দ করতে দেয় যা আমরা রূপান্তর করতে চাই না। তবে আপনি নিজের "আইটেম নির্বাচনকারী" লিখতে পারেন, এটি আপনাকে প্রয়োজনীয় কলামগুলির সাহায্যে ট্রান্সফর্মার খাওয়ানোতে সহায়তা করবে। এখানে ItemSelector এবং FeatureUnion সঙ্গে একটি ভাল উদাহরণ scikit-learn.org/stable/auto_examples/...
Ibraim Ganiev

1
প্রথম উদাহরণে, আপনি কি আবার পরীক্ষা সেটটি দিয়ে ফিটিং এড়াতে চান না? এটি কি কেবল ফিট_ট্রান্সফর্মের পরিবর্তে রূপান্তরকে কল করা উচিত নয়? এবং একইভাবে, পাইপলাইনটি কী অভ্যন্তরীণভাবে ফিট_টান্সফর্ম কল করে বা কেবল রূপান্তর করে? এটি নিয়ন্ত্রণ করা যায়?
স্টিভেন

18

আমি মনে করি M0rkHaV এর সঠিক ধারণা আছে। Scikit-শিখতে এর পাইপলাইন বর্গ এক বস্তু মধ্যে একটি মূল্নির্ধারক পাশাপাশি একাধিক বিভিন্ন ট্রান্সফরমার encapsulating জন্য একটি দরকারী টুল, আপনি শুধুমাত্র একবার (আপনার গুরুত্বপূর্ণ পদ্ধতি ফোন করতে হবে, যাতে fit(), predict()ইত্যাদি)। আসুন দুটি প্রধান উপাদান ভেঙে দিন:

  1. ট্রান্সফরমারস ক্লাস বাস্তবায়ন উভয় fit()এবং transform()। আপনি কিছু স্কেলার্ন প্রিপ্রোসেসিং সরঞ্জামগুলির সাথে পরিচিত হতে পারেন, TfidfVectorizerএবং এর মতো Binarizer। আপনি যদি এই প্রাক-প্রসেসিং সরঞ্জামগুলির জন্য ডকগুলিতে সন্ধান করেন তবে আপনি দেখতে পাবেন যে তারা এই দুটি পদ্ধতি প্রয়োগ করে। যা আমি বেশ দুর্দান্ত মনে করি তা হ'ল কিছু অনুমানকারীও রূপান্তর পদক্ষেপ হিসাবে ব্যবহার করা যেতে পারে, যেমন LinearSVC!

  2. Estimators ক্লাস বাস্তবায়ন উভয় fit()এবং predict()। আপনি দেখতে পাবেন যে ক্লাসিফায়ার এবং রিগ্রেশন মডেলগুলির মধ্যে অনেকগুলি এই দুটি পদ্ধতি প্রয়োগ করে এবং এর ফলে আপনি সহজেই অনেকগুলি বিভিন্ন মডেলের পরীক্ষা করতে পারেন। চূড়ান্ত হিসাবরক্ষক হিসাবে অন্য ট্রান্সফর্মার ব্যবহার করা সম্ভব (যেমন এটি প্রয়োজনীয়ভাবে প্রয়োগ করে না predict(), তবে অবশ্যই কার্যকর হয় fit())। এর সমস্ত অর্থ হ'ল আপনি কল করতে পারবেন না predict()

আপনার সম্পাদনা হিসাবে: আসুন একটি পাঠ্য-ভিত্তিক উদাহরণটি দেখুন। লেবেলবাইনারাইজার ব্যবহার করে, আমরা লেবেলের একটি তালিকা বাইনারি মানগুলির তালিকায় পরিণত করতে চাই।

bin = LabelBinarizer()  #first we initialize

vec = ['cat', 'dog', 'dog', 'dog'] #we have our label list we want binarized

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

print bin.classes_  

এটি চেষ্টা করার সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

AttributeError: 'LabelBinarizer' object has no attribute 'classes_'

তবে আপনি যখন vecতালিকার বাইনারিজারটি ফিট করবেন :

bin.fit(vec)

এবং আবার চেষ্টা করো

print bin.classes_

আমি নিম্নলিখিত পেতে:

['cat' 'dog']


print bin.transform(vec)

এবং এখন, vecঅবজেক্টে রূপান্তর কল করার পরে , আমরা নিম্নলিখিতগুলি পাই:

[[0]
 [1]
 [1]
 [1]]

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


ট্রান্সফর্মারগুলির মধ্যে পার্থক্য কী fit()এবং transform()? , কীভাবে অনুমানকারীগুলি ট্রান্সফর্মার হিসাবে ব্যবহার করা যেতে পারে?
farhawa

2
fit()আপনি যে ক্লাসিফায়ার বা রিগ্রেশন মডেল হিসাবে চান তা হ'ল আপনার ট্রান্সফর্মারটিকে ফিট করার জন্য বা প্রশিক্ষণ দেওয়ার জন্য কল করার পদ্ধতি। হিসাবে transform(), আপনি যে পদ্ধতিটি আউটপুট ডেটাতে ইনপুট ডেটাটিকে প্রকৃতপক্ষে রূপান্তর করতে কল করতে পারেন এটি। উদাহরণস্বরূপ, কল করার Binarizer.transform([8,2,2])(ফিটিংয়ের পরে!) এর ফলস্বরূপ [[1,0],[0,1],[0,1]]। ট্রান্সফরমার হিসাবে অনুমানকারী হিসাবে ব্যবহার করার জন্য, আমি আমার উত্তরে একটি সংক্ষিপ্ত উদাহরণ সম্পাদনা করব।
এনবার্টলি

9

এমএল অ্যালগরিদম সাধারণত টেবুলার ডেটা প্রক্রিয়া করে। আপনি আপনার এমএল অ্যালগরিদমের আগে এবং পরে এই ডেটার প্রিপ্রসেসিং এবং পোস্ট-প্রসেসিং করতে চাইতে পারেন। একটি পাইপলাইন সেই ডেটা প্রসেসিং পদক্ষেপগুলিকে চেইন করার একটি উপায়।

এমএল পাইপলাইনগুলি কী কী এবং তারা কীভাবে কাজ করে?

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

  • পাইপ এবং ফিল্টার । পাইপলাইনের পদক্ষেপগুলি ডেটা প্রক্রিয়া করে এবং তারা তাদের অভ্যন্তরীণ অবস্থা পরিচালনা করে যা ডেটা থেকে শেখা যায়।
  • সংমিশ্রণ । পাইপলাইনগুলি বাসা বাঁধতে পারে: উদাহরণস্বরূপ একটি সম্পূর্ণ পাইপলাইন অন্য পাইপলাইনের একক পাইপলাইন পদক্ষেপ হিসাবে বিবেচনা করা যেতে পারে। একটি পাইপলাইন পদক্ষেপ অগত্যা পাইপলাইন নয়, তবে একটি পাইপলাইন নিজেই সংজ্ঞা অনুসারে কমপক্ষে একটি পাইপলাইন ধাপ।
  • নির্দেশিত অ্যাসাইক্লিক গ্রাফ (ডিএজি) । একটি পাইপলাইন ধাপের আউটপুটটি অন্য অনেক ধাপে প্রেরণ করা যেতে পারে এবং তারপরে ফলাফলগুলি আউটপুটগুলিকে পুনরায় সংযুক্ত করা যায় এবং আরও কিছু। পার্শ্ব দ্রষ্টব্য: পাইপলাইনগুলি অ্যাসাইক্লিক হওয়া সত্ত্বেও তারা একের পর এক একাধিক আইটেম প্রক্রিয়া করতে পারে এবং যদি তাদের রাষ্ট্র পরিবর্তন হয় (উদাহরণস্বরূপ: প্রতিবার ফিট_ ট্রান্সফর্ম পদ্ধতি ব্যবহার করে), তবে তাদের সময়কালের সাথে তাদের পুনরুক্তি হিসাবে দেখা যেতে পারে, তাদের রাষ্ট্রগুলি রাখার মতো (মনে করুন একটি আরএনএন)। অনলাইনে শেখার জন্য যখন পাইপলাইনগুলিকে উত্পাদনের সময় রাখবেন এবং তাদের আরও ডেটাতে প্রশিক্ষণ দেবেন তখন এটি দেখার একটি আকর্ষণীয় উপায়।

সাইকিট-শিখুন পাইপলাইনের পদ্ধতিগুলি

পাইপলাইনগুলি (বা পাইপলাইনের ধাপগুলি) অবশ্যই এই দুটি পদ্ধতি থাকা উচিত :

  • ডেটা শিখতে এবং স্থিতি অর্জনের জন্য " উপযুক্ত " (উদাহরণস্বরূপ: নিউরাল নেটওয়ার্কের নিউরাল ওজনগুলি এ জাতীয় রাষ্ট্র)
  • " রূপান্তর " (বা "পূর্বাভাস") প্রকৃতপক্ষে ডেটা প্রক্রিয়া করতে এবং ভবিষ্যদ্বাণী তৈরি করে।

এই পদ্ধতিটিকে উভয়কে চেইনে কল করাও সম্ভব:

  • " ফিট_আর ট্রান্সফর্ম" ডেটা ফিট করে এবং তারপরে ডেটা ট্রান্সফর্ম করতে, তবে একটি পাসে, সম্ভাব্য কোড অপ্টিমাইজেশনের জন্য অনুমতি দেয় যখন দুটি পদ্ধতি একের পর এক সরাসরি করা উচিত।

Sklearn.pipline.Pipline ক্লাসের সমস্যা

সাইকিট-লার্নের "পাইপ এবং ফিল্টার" ডিজাইনের ধরণটি কেবল সুন্দর simply তবে কীভাবে এটি ডিপ লার্নিং, অটোএমএল এবং জটিল উত্পাদন-স্তরের পাইপলাইনগুলির জন্য ব্যবহার করবেন?

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

  • স্বয়ংক্রিয় মেশিন লার্নিং (অটোএমএল),
  • গভীর শেখার পাইপলাইন,
  • আরও জটিল মেশিন লার্নিং পাইপলাইন।

সমাধানগুলি যা আমরা সেই বিজ্ঞানী-শেখার সমস্যাগুলির কাছে পেয়েছি

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

নিউরাক্সেলের মাধ্যমে দেওয়া অতিরিক্ত পাইপলাইন পদ্ধতি এবং বৈশিষ্ট্য

দ্রষ্টব্য: যদি পাইপলাইনের এক ধাপে কোনও ফিট বা রূপান্তর পদ্ধতিগুলির প্রয়োজন না হয় তবে কিছুই না করার জন্য এটির কোনও একটি ডিফল্ট বাস্তবায়ন সরবরাহ করার জন্য এটি ননফিটযোগ্য মিক্সিন বা নন ট্রান্সফরমাল মিক্সিন থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হতে পারে।

একটি স্টার্টার হিসাবে, পাইপলাইনগুলি বা তাদের পদক্ষেপের পক্ষে বিকল্পভাবে এই পদ্ধতিগুলির সংজ্ঞা দেওয়াও সম্ভব :

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

নিম্নলিখিত পদ্ধতিগুলির ডিফল্ট দ্বারা উপলব্ধ করা হয় hyperparameters পরিচালনার জন্য অনুমতি:

  • " Get_hyperparams " আপনাকে হাইপারপ্যারামিটারগুলির একটি অভিধান প্রদান করবে। যদি আপনার পাইপলাইনে আরও পাইপলাইন রয়েছে (নেস্টেড পাইপলাইনগুলি), তবে হাইপারপ্যারামিটারের কীগুলি ডাবল আন্ডারস্কোর "__" বিভাজক দ্বারা সজ্জিত।
  • " Set_hyperparams " আপনাকে নতুন হাইপারপামিটারগুলি সেগুলি ফর্ম্যাট করার সময় একই ফর্ম্যাটে সেট করতে দেয়।
  • " Get_hyperparams_space " আপনাকে হাইপারপ্যারামিটারের স্থান পাওয়ার অনুমতি দেয় যা আপনি যদি সংজ্ঞায়িত করেন তবে খালি হবে না। সুতরাং, এখানে "get_hyperparams" এর সাথে একমাত্র পার্থক্য হ'ল আপনি একটি সুনির্দিষ্ট মানের পরিবর্তে মান হিসাবে পরিসংখ্যান বিতরণ পাবেন। উদাহরণস্বরূপ, স্তরগুলির সংখ্যার জন্য একটি হাইপারপ্যারামিটার RandInt(1, 3)1 থেকে 3 স্তরগুলির অর্থ হতে পারে । আপনি এ .rvs()ডিক্টকে এলোমেলোভাবে একটি মান বাছাই করতে এবং এটিতে প্রশিক্ষণের চেষ্টা করার জন্য "সেট_হাইপার্পামস" এ পাঠাতে পারেন।
  • " Get_hyperparams_space " হিসাবে একই হাইপারপ্যারামিটার বিতরণ ক্লাস ব্যবহার করে একটি নতুন স্থান সেট করতে " set_hyperparams_space " ব্যবহার করা যেতে পারে।

আমাদের প্রস্তাবিত সমাধানগুলি সম্পর্কে আরও তথ্যের জন্য, উপরের লিঙ্কগুলির সাথে বড় তালিকার এন্ট্রিগুলি পড়ুন।

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