কেরাসে মাল্টি টাস্ক লার্নিং


12

আমি কেরাসে ভাগ স্তরগুলি প্রয়োগ করার চেষ্টা করছি। আমি দেখতে পাচ্ছি যে কেরাসের রয়েছে keras.layers.concatenate, তবে আমি এর ব্যবহার সম্পর্কে নথি থেকে অনিশ্চিত। আমি একাধিক ভাগ স্তর তৈরি করতে এটি ব্যবহার করতে পারি? কেরাস ব্যবহার করে নীচে দেখানো হিসাবে একটি সাধারণ শেয়ার্ড নিউরাল নেটওয়ার্ক কার্যকর করার সর্বোত্তম উপায় কী হবে?শেয়ার করা নিউরাল নেটওয়ার্ক

নোট করুন যে সমস্ত 3 এনএন এর জন্য সমস্ত ইনপুট, আউটপুট এবং ভাগ স্তরগুলি একই। তিনটি এনএন-তে একাধিক ভাগ ভাগ স্তর (এবং অ-ভাগ করা স্তর) রয়েছে। রঙিন স্তরগুলি প্রতিটি এনএন এর কাছে স্বতন্ত্র এবং একই আকারে থাকে।

মূলত, চিত্রটি একাধিক ভাগ ভাগ করা গোপন স্তরগুলির সাথে তিনটি অভিন্ন এনএনকে প্রতিনিধিত্ব করে, তারপরে একাধিক অ-ভাগ করা গোপন স্তরগুলি অনুসরণ করে।

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

উত্তর:


10

Input এক্সDenseDense

x = Input(shape=(n, ))
shared = Dense(32)(x)
sub1 = Dense(16)(shared)
sub2 = Dense(16)(shared)
sub3 = Dense(16)(shared)
out1 = Dense(1)(sub1)
out2 = Dense(1)(sub2)
out3 = Dense(1)(sub3)

আমরা এখন আমাদের মডেলটিকে এভাবে সংজ্ঞায়িত করতে পারি:

model = Model(inputs=x, outputs=[out1, out2, out3])

এটি এখন তিনটি উপাদানের একটি টুপল / তালিকা আশা করবে, প্রতিটি আউটপুটের জন্য একটি।

এই ধারণাগুলি নিয়ে আপনি আরও অনেকখানি যেতে পারেন। ধরা যাক আমরা ব্যক্তি স্তরগুলির জন্য পৃথক ওজন শিখতে চাই কিন্তু আউটপুট স্তরের দিকে রৈখিক সংমিশ্রণের জন্য একই ওজন পেতে চাই, আমরা এটি করে এটি অর্জন করতে পারি:

out = Dense(1)
out1 = out(sub1)
out2 = out(sub2)
out3 = out(sub3)

সম্পাদনা: কনটেকেনটিং মূলত আপনি যা করতে চান তার বিপরীত, এটি আপনার নেটওয়ার্কের বিভিন্ন অংশের আউটপুটগুলিকে একটি নতুন স্তরে আটকানো (মধ্যবর্তী) আটকানো হয়। আপনি আসলে একাধিক বিভিন্ন অংশে বিভক্ত করতে চান।


অনেক ধন্যবাদ. যখন আমরা একটি করি model.fit([data1, data2], [labels1, labels2]), এটি কি একক মডেল হিসাবে প্রশিক্ষিত হবে (পিছনের প্রচার), তাই না?
আদিত্য

1
হ্যাঁ এটি কেবল একটি জিনিস হবে, যদি লেবেলগুলির সাথে বিভিন্ন লোকসানের পরিমাণ যুক্ত থাকে তবে আপনাকে আরও কিছু কাজ করা দরকার, এটি কেরাসে খুব সহজ নয় তবে অসম্ভব নয়, যদি তারা যদি ক্ষতি না করে একই ক্ষতি ফাংশনটিকে ভাগ করে না ফেলে কেবল বাক্সের বাইরে কাজ করে if
জান ভ্যান ডের Vegt

এটির জন্য ইউনিফাইড মডেলটিকে পুনরায় প্রশিক্ষণের প্রয়োজন হবে। আপনার যদি ইতিমধ্যে সাব-মডেলগুলির প্রশিক্ষণের ওজন হয়? সংযুক্ত মডেলটির জন্য উইগট তৈরির জন্য সেই ওজনগুলি ব্যবহার করার কোনও উপায় আছে কি?
শাহহার_ম

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