সাইকিট-শিখায় মাল্টি-লেয়ার পারসেপ্ট্রন-এ অ্যাক্টিভেশন ফাংশন হিসাবে সফটম্যাক্স কীভাবে প্রয়োগ করবেন? [বন্ধ]


9

সাইকিটের মাল্টি-লেয়ার পারসেপ্ট্রনে আমার সফটম্যাক্স অ্যাক্টিভেশন ফাংশনটি প্রয়োগ করতে হবে। Scikit documantation নিউরাল নেটওয়ার্কের মডেলের বিষয় (তত্বাবধানে থাকা) বলেছেন "MLPClassifier Softmax আউটপুট ফাংশন হিসাবে প্রয়োগের দ্বারা বহু-বর্গ শ্রেণীবিন্যাস সমর্থন করে।" প্রশ্নটি কীভাবে ফাংশনটি প্রয়োগ করবেন?

নীচের কোড স্নিপ-এ, যখন আমি অ্যাক্টিভেশন প্যারামিটারের অধীনে সফটম্যাক্স যুক্ত করি তবে তা গ্রহণ করে না।

MLPClassifier(activation='Softmax', alpha=1e-05, batch_size='auto',
       beta_1=0.9, beta_2=0.999, early_stopping=False,
       epsilon=1e-08, hidden_layer_sizes=(15,), learning_rate='constant',
       learning_rate_init=0.001, max_iter=200, momentum=0.9,
       nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
       solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False,
       warm_start=False)

ত্রুটি কোডটি হ'ল:

মান মূল্য: অ্যাক্টিভেশন 'সফটম্যাক্স' সমর্থিত নয়। সমর্থিত সক্রিয়করণগুলি হ'ল ('পরিচয়', 'লজিস্টিক', 'তানহ', 'রিলু')।

সাইকিট-শিখায় মাল্টি-ক্লাসের শ্রেণিবিন্যাসের জন্য সফটম্যাক্স অ্যাক্টিভেশন ফাংশন প্রয়োগ করার কোনও উপায় আছে কি?

উত্তর:


7

আমি সুপারস করেছি যে আপনি যখন পদ্ধতিটি কল করে কোনও সম্ভাবনার পূর্বাভাসের জন্য অনুরোধ করেন তখন সফটম্যাক্স ফাংশনটি প্রয়োগ করা হয় mlp.predict_proba(X)

আমার ধারণা সমর্থন করার জন্য আমি এই ছোট পরীক্ষাটি তৈরি করেছি:

from sklearn.neural_network import MLPClassifier
from sklearn.datasets import load_iris
import numpy as np

X,Y = load_iris().data, load_iris().target

mlp = MLPClassifier()
mlp.fit(X, Y)

print mlp.predict([3.1,  2.5,  8.4,  2.2])
print mlp.predict_proba([3.1,  2.5,  8.4,  2.2])
print "sum: %f"%np.sum(mlp.predict_proba([3.1,  2.5,  8.4,  2.2]))

লক্ষ্য করুন যে কী মানগুলি প্লাগ ইন করা হয়েছে predict_proba(), আউটপুট সম্ভাব্যতা ভেক্টর সর্বদা ১ পর্যন্ত যোগফল দেয় This এটি কেবল সফটম্যাক্স অ্যাক্টিভেশন ফাংশন দ্বারা অর্জন করা সম্ভব (সফ্টম্যাক্সের অন্য একটি অ্যাক্টিভেশন ব্যবহার করে কোনও গ্যারান্টি নেই যে ফাইনালের ক্রিয়াকলাপগুলির যোগফল) স্তর হ'ল এক হবে, বিশেষত একটি অদেখা নমুনার জন্য)।

যদি আমার অনুমানটি সঠিক হয়, ডকুমেন্টেশনের দিকে তাকিয়ে আমি সফটম্যাক্সের আগে নেটওয়ার্কের আউটপুট পাওয়ার কোনও পদ্ধতি খুঁজে পাই না ... সম্ভবত কারণ এই শ্রেণিটি কেবল শ্রেণিবিন্যাসের জন্য করা হয়েছিল (রিগ্রেশন বা অন্যান্য অভিনব সেটআপগুলি নয়)।


4

MLPClassifier "মাল্টিক্লাস শ্রেণিবদ্ধকরণ", "বাইনারি শ্রেণিবদ্ধকরণ" এবং "মাল্টিলেবল শ্রেণিবদ্ধকরণ" এর জন্য ব্যবহার করা যেতে পারে। সুতরাং আউটপুট স্তরটি Y এর ধরণের ভিত্তিতে সিদ্ধান্ত নেওয়া হয়:

  1. মাল্টিক্লাস : সর্বাধিক স্তরটি হ'ল সফটম্যাক্স স্তর

  2. মাল্টিলেবল বা বাইনারি-ক্লাস : সর্বাধিক স্তরটি হ'ল লজিস্টিক / সিগময়েড।

  3. রিগ্রেশন : সর্বাধিক স্তর হ'ল পরিচয়

এমএলপি ক্লাসিফায়ারে ব্যবহৃত স্কেলেরন থেকে কোডের কিছু অংশ যা এটি নিশ্চিত করে:

        # Output for regression
        if not is_classifier(self):
            self.out_activation_ = 'identity'
        # Output for multi class
        elif self._label_binarizer.y_type_ == 'multiclass':
            self.out_activation_ = 'softmax'
        # Output for binary class and multi-label
        else:
            self.out_activation_ = 'logistic'
  1. মাল্টিক্লাস শ্রেণিবিন্যাস: ফিচার এক্স এর জন্য কেবল একটি শ্রেণি থাকতে পারে। উদাহরণস্বরূপ সেন্টিমেন্ট বিশ্লেষণ একটি পাঠ্য (এক্স) দেওয়া হয়, আউটপুট (Y) হয় ধনাত্মক, নিরপেক্ষ বা নেতিবাচক। বাইনারি মাল্টিক্লাসের একটি ক্ষেত্রে যেখানে কেবলমাত্র 2 সম্ভাব্য আউটপুট রয়েছে।
  2. মাল্টিলেবল শ্রেণিবদ্ধকরণ: ফিচার এক্স এর জন্য একাধিক ক্লাস থাকতে পারে।

1

ড্যানিয়েল লোপেজের উত্তরের সাথে একমত হতে পারে না। আমার ক্ষেত্রে উত্তর predict_proba () সফটম্যাক্স ফলাফল দেয় না।

ত্রিদীপথের উত্তর সহজেই এই সমস্যাটি সমাধান করতে পারে। সফটম্যাক্স প্রয়োগ করতে ডিফল্ট আউট-অ্যাক্টিভেশন_:

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