কেরাস/টেনসরফ্লো লস ফাংশনে 'from_logits=True' কি? PlatoBlockchain ডেটা ইন্টেলিজেন্স। উল্লম্ব অনুসন্ধান. আ.

কেরাস/টেনসরফ্লো লস ফাংশনে 'from_logits=True' কি?

কেরাসের মতো ডিপ লার্নিং ফ্রেমওয়ার্কগুলি জনসাধারণের জন্য প্রবেশের বাধাকে কম করে এবং অনভিজ্ঞ লোকেদের কাছে DL মডেলগুলির বিকাশকে গণতান্ত্রিক করে তোলে, যারা ভারী উত্তোলনের ধাক্কা সহ্য করার জন্য যুক্তিসঙ্গত ডিফল্ট এবং সরলীকৃত API-এর উপর নির্ভর করতে পারে এবং শালীন ফলাফল তৈরি করতে পারে।

শ্রেণীবিভাগের জন্য কেরাস লস ফাংশন ব্যবহার করার সময় নতুন গভীর শিক্ষার অনুশীলনকারীদের মধ্যে একটি সাধারণ বিভ্রান্তি দেখা দেয়, যেমন CategoricalCrossentropy এবং SparseCategoricalCrossentropy:

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)

কি কি from_logits পতাকা পড়ুন?

উত্তরটি মোটামুটি সহজ, কিন্তু আমরা ক্ষতি ফাংশন ব্যবহার করে যে নেটওয়ার্কটি গ্রেড করার চেষ্টা করছি তার আউটপুটটি দেখতে হবে।

Logits এবং SoftMax সম্ভাব্যতা

দীর্ঘ সংক্ষিপ্ত বিবরণ:

সম্ভাব্যতা স্বাভাবিক করা হয় – অর্থাৎ এর মধ্যে একটি পরিসীমা আছে [0..1]. লগিটগুলি স্বাভাবিক করা হয় না এবং এর মধ্যে একটি পরিসীমা থাকতে পারে [-inf...+inf].

আপনার নেটওয়ার্কের আউটপুট স্তরের উপর নির্ভর করে:

output = keras.layers.Dense(n, activation='softmax')(x)

output = keras.layers.Dense(n)(x)

এর আউটপুট Dense স্তর হবে পারেন ফিরে:

  • সম্ভাবনা: আউটপুট একটি SoftMax ফাংশনের মাধ্যমে পাস করা হয় যা আউটপুটকে সম্ভাব্যতার একটি সেটে স্বাভাবিক করে তোলে n, যে সব যোগ আপ 1.
  • লগিট: n ক্রিয়াকলাপ।

এই ভুল ধারণাটি সম্ভবত শর্ট-হ্যান্ড সিনট্যাক্স থেকে উদ্ভূত হয় যা আপনাকে একটি স্তরে একটি অ্যাক্টিভেশন যোগ করতে দেয়, আপাতদৃষ্টিতে একটি একক স্তর হিসাবে, যদিও এটি শুধুমাত্র সংক্ষেপে:

output = keras.layers.Dense(n, activation='softmax')(x)

dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)

আপনার ক্ষতির ফাংশনটি একটি স্বাভাবিক বন্টন (একটি SoftMax ফাংশনের মাধ্যমে পাস করা আউটপুট) বা লগিট আশা করা উচিত কিনা তা জানাতে হবে। অত: পর from_logits পতাকা

যখন উচিত from_logits=সত্য?

যদি আপনার নেটওয়ার্ক আউটপুট সম্ভাব্যতা স্বাভাবিক করে, আপনার ক্ষতি ফাংশন সেট করা উচিত from_logits থেকে False, কারণ এটি লগিট গ্রহণ করছে না। এটি সমস্ত ক্ষতির ক্লাসের ডিফল্ট মান যা পতাকা গ্রহণ করে, কারণ বেশিরভাগ লোকেরা একটি যোগ করে activation='softmax' তাদের আউটপুট স্তরগুলিতে:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10, activation='softmax') 
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

এর ফলে:

tf.Tensor(
[[[0.12467965 0.10423233 0.10054766 0.09162105 0.09144577 0.07093797
   0.12523937 0.11292477 0.06583504 0.11253635]]], shape=(1, 1, 10), dtype=float32)

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

অন্যদিকে, যদি আপনার নেটওয়ার্ক আউটপুটে SoftMax প্রয়োগ না করে:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10)
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

এর ফলে:

tf.Tensor(
[[[-0.06081138  0.04154852  0.00153442  0.0705068  -0.01139916
    0.08506121  0.1211026  -0.10112958 -0.03410497  0.08653068]]], shape=(1, 1, 10), dtype=float32)

আপনি সেট করতে হবে from_logits থেকে True ক্ষতি ফাংশন সঠিকভাবে আউটপুট চিকিত্সার জন্য.

আউটপুটে SoftMax কখন ব্যবহার করবেন?

বেশিরভাগ অনুশীলনকারীরা আউটপুটে সফ্টম্যাক্স প্রয়োগ করে একটি স্বাভাবিক সম্ভাব্যতা বন্টন দিতে, কারণ এটি অনেক ক্ষেত্রে যা আপনি একটি নেটওয়ার্ক ব্যবহার করবেন - বিশেষ করে সরলীকৃত শিক্ষাগত উপাদানগুলিতে। যাইহোক, কিছু ক্ষেত্রে, আপনি না SoftMax বা অন্য কোন ফাংশন প্রয়োগ করার আগে এটিকে ভিন্ন উপায়ে প্রক্রিয়া করতে, আউটপুটে ফাংশনটি প্রয়োগ করতে চান।

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

যাইহোক, যদি আপনি লগিটগুলি পর্যবেক্ষণ করেন, তাহলে Top-K বের করুন (যেখানে K যেকোনো সংখ্যা হতে পারে কিন্তু সাধারণত এর মধ্যে কোথাও থাকে [0...10]), এবং শুধুমাত্র তারপর SoftMax প্রয়োগ করুন top-k শব্দভান্ডারে সম্ভাব্য টোকেনগুলি বিতরণকে উল্লেখযোগ্যভাবে পরিবর্তন করে এবং সাধারণত আরও বাস্তবসম্মত ফলাফল দেয়।

সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!

এটি টপ-কে স্যাম্পলিং নামে পরিচিত, এবং যদিও এটি আদর্শ কৌশল নয়, সাধারণত উল্লেখযোগ্যভাবে লোভী স্যাম্পলিংকে ছাড়িয়ে যায়।

আরও এগিয়ে যাওয়া - কম্পিউটার ভিশনের জন্য ব্যবহারিক গভীর শিক্ষা

আপনার অনুসন্ধিৎসু প্রকৃতি আপনাকে আরও যেতে চায়? আমরা আমাদের চেক আউট সুপারিশ পথ: "পাইথনের সাথে কম্পিউটার ভিশনের জন্য ব্যবহারিক গভীর শিক্ষা".

আরেকটি কম্পিউটার ভিশন কোর্স?

আমরা MNIST সংখ্যা বা MNIST ফ্যাশনের শ্রেণিবিন্যাস করব না। তারা অনেক আগে থেকেই তাদের দায়িত্ব পালন করেছে। উন্নত ব্ল্যাক-বক্স আর্কিটেকচারগুলিকে পারফরম্যান্সের ভার বহন করতে দেওয়ার আগে অনেকগুলি শেখার সংস্থান মৌলিক ডেটাসেট এবং মৌলিক আর্কিটেকচারের উপর ফোকাস করছে।

আমরা ফোকাস করতে চাই demystification, বাস্তবতা, বোধশক্তি, স্বজ্ঞা এবং বাস্তব প্রকল্প. শিখতে চাই কিভাবে আপনি একটি পার্থক্য করতে পারেন? স্তন ক্যান্সারের জন্য আমাদের মস্তিষ্ক যেভাবে ছবিগুলিকে প্রক্রিয়াকরণ করে, তার থেকে শুরু করে স্তন ক্যান্সারের জন্য একটি গবেষণা-গ্রেড ডিপ লার্নিং ক্লাসিফায়ার লেখা পর্যন্ত আমরা আপনাকে "হ্যালুসিনেট" করার নেটওয়ার্কগুলিতে নিয়ে যাব, আপনাকে ব্যবহারিক কাজের মাধ্যমে নীতি ও তত্ত্ব শেখাবো, আপনাকে সজ্জিত করব কম্পিউটারের দৃষ্টিভঙ্গি সমাধানের জন্য গভীর শিক্ষা প্রয়োগে বিশেষজ্ঞ হওয়ার উপায় এবং সরঞ্জাম।

ভিতরে কি?

  • দৃষ্টির প্রথম নীতি এবং কীভাবে কম্পিউটারকে "দেখতে" শেখানো যায়
  • কম্পিউটার ভিশনের বিভিন্ন কাজ এবং অ্যাপ্লিকেশন
  • ট্রেডের টুল যা আপনার কাজকে সহজ করে তুলবে
  • কম্পিউটার ভিশনের জন্য ডেটাসেট খোঁজা, তৈরি এবং ব্যবহার করা
  • কনভোল্যুশনাল নিউরাল নেটওয়ার্কের তত্ত্ব এবং প্রয়োগ
  • ডেটাসেটে ডোমেন শিফট, সহ-ঘটনা এবং অন্যান্য পক্ষপাতগুলি পরিচালনা করা
  • আপনার সুবিধার জন্য শেখার স্থানান্তর এবং অন্যদের প্রশিক্ষণের সময় এবং গণনামূলক সংস্থানগুলি ব্যবহার করুন
  • একটি অত্যাধুনিক স্তন ক্যান্সারের শ্রেণীবিভাগ তৈরি এবং প্রশিক্ষণ
  • কীভাবে মূলধারার ধারণাগুলিতে সংশয়বাদের একটি স্বাস্থ্যকর ডোজ প্রয়োগ করা যায় এবং ব্যাপকভাবে গৃহীত কৌশলগুলির প্রভাব বোঝা যায়
  • T-SNE এবং PCA ব্যবহার করে একটি ConvNet-এর "ধারণা স্থান" ভিজ্যুয়ালাইজ করা
  • কোম্পানিগুলি কীভাবে ভাল ফলাফল অর্জন করতে কম্পিউটার দৃষ্টি কৌশল ব্যবহার করে তার কেস স্টাডি
  • সঠিক মডেল মূল্যায়ন, সুপ্ত স্থান ভিজ্যুয়ালাইজেশন এবং মডেলের মনোযোগ সনাক্তকরণ
  • ডোমেন গবেষণা সম্পাদন করা, আপনার নিজস্ব ডেটাসেট প্রক্রিয়াকরণ এবং মডেল পরীক্ষা স্থাপন করা
  • অত্যাধুনিক স্থাপত্য, ধারণাগুলির অগ্রগতি, কী সেগুলিকে অনন্য করে তোলে এবং কীভাবে সেগুলি বাস্তবায়ন করা যায়
  • KerasCV – একটি আধুনিক পাইপলাইন এবং মডেল তৈরি করার জন্য একটি WIP লাইব্রেরি
  • কিভাবে পার্স এবং পেপার পড়ুন এবং সেগুলি নিজেই প্রয়োগ করুন
  • আপনার আবেদনের উপর নির্ভর করে মডেল নির্বাচন করুন
  • এন্ড-টু-এন্ড মেশিন লার্নিং পাইপলাইন তৈরি করা
  • দ্রুত আর-সিএনএন, রেটিনানেট, এসএসডি এবং ইওলোর সাহায্যে অবজেক্ট সনাক্তকরণের উপর ল্যান্ডস্কেপ এবং অন্তর্দৃষ্টি
  • উদাহরণ এবং শব্দার্থিক বিভাজন
  • YOLOv5 এর সাথে রিয়েল-টাইম অবজেক্ট রিকগনিশন
  • YOLOv5 অবজেক্ট ডিটেক্টর প্রশিক্ষণ
  • KerasNLP ব্যবহার করে ট্রান্সফরমারের সাথে কাজ করা (শিল্প-শক্তি WIP লাইব্রেরি)
  • চিত্রের ক্যাপশন তৈরি করতে ConvNets-এর সাথে ট্রান্সফরমার একীভূত করা
  • ডিপড্রিম

উপসংহার

এই সংক্ষিপ্ত গাইডে, আমরা এক নজরে দেখেছি from_logits কেরাস লস ক্লাসের জন্য যুক্তি, যা প্রায়ই নতুন অনুশীলনকারীদের সাথে প্রশ্ন উত্থাপন করে।

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

সময় স্ট্যাম্প:

থেকে আরো Stackabuse