কেরাসে মডেল মার্জ হওয়ার তাৎপর্য কী?


10

আমি শিখেছি কেরার নিম্নলিখিত অনুযায়ী দুটি মডেল "মার্জ" করার কার্যকারিতা রয়েছে:

from keras.layers import Merge

left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))

right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))

merged = Merge([left_branch, right_branch], mode='concat')

মার্জিন্ট এনএন-এর কী অর্থ, কোন পরিস্থিতিতে এটি কার্যকর? এটি কি একধরণের পোশাকের মডেলিং? পারফরম্যান্সের অর্থে বেশ কয়েকটি "মোড" (কনক্যাট, গড়, ডট ইত্যাদি ...) এর মধ্যে পার্থক্য কী?

উত্তর:


14

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

চিত্র -> কনভ -> সর্বাধিক পুলিং -> কনভ -> সর্বাধিক পুলিং -> ঘন

TAG -> এম্বেডিং -> ঘন স্তর

এই নেটওয়ার্কগুলিকে একটি পূর্বাভাসের সাথে একত্রিত করতে এবং তাদের একসাথে প্রশিক্ষণের জন্য আপনি চূড়ান্ত শ্রেণিবিন্যাসের আগে এই ঘন স্তরগুলি মার্জ করতে পারেন could

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

মাল্টিমোডাল নিউরাল নেটওয়ার্ক

অন্য একটি উদাহরণ হ'ল গুগলের ইনসেপশন লেয়ার যেখানে আপনার বিভিন্ন কনভলিউশন রয়েছে যা পরের স্তরটিতে যাওয়ার আগে একসাথে যুক্ত হয়েছিল।

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

x_input_image = [image1, image2, image3]
x_input_word = ['Feline', 'Dog', 'TV']
y_output = [1, 0, 0]

তারপরে আপনি নিম্নলিখিত হিসাবে ফিট করতে পারেন:

model.fit(x=[x_input_image, x_input_word], y=y_output]

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

আপনি কীভাবে উপযুক্ত পর্যায়ে তাদের খাওয়াবেন? ইনপুটগুলি সর্বদা পৃথক থাকে, আপনি আপনার লেবেলে আপনার কনভলিউশন স্তরটি ব্যবহার করতে পারবেন না যাতে এই স্তরগুলি কোনওভাবে একত্রীকরণের প্রয়োজন।
জান ভ্যান ডের Vegt

কেরাসে model.fit()X এবং y উভয়ই ফিটিংয়ের জন্য গ্রহণ করে এবং এক্ষেত্রে modelএকটি "অ-মার্জড" মডেলও হতে পারে। অনেকটা উদাহরণস্বরূপ স্ক্লার্নে অন্যান্য মডেলের ধরণের মতো।
হেন্ডরিক

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

3
@ হেনড্রিক: "উপাদান উপাদান" নেই, কেবল একটি মডেল রয়েছে। এটি একটি জটিল যা স্তর সংযুক্তি বৈশিষ্ট্য দ্বারা সক্ষম করা হয়েছে। আপনি কোনও একক মডেলের জন্য যেমন করেন তেমন মূল্যায়ন করেন - অর্থাত্ কোনও হোল্ড-আউট টেস্ট ডেটা সেটের বিপরীতে একটি মেট্রিক সহ (চিত্র / শব্দগুলির উদাহরণে চিত্রগুলি সমন্বিত চিত্র, সম্পর্কিত আংশিক পাঠ্য এবং পরবর্তী শব্দটি ভবিষ্যদ্বাণী করার লেবেল হিসাবে)। আপনি যদি চান, আপনি মডেলটির মধ্যে থাকা স্তরগুলি তারা কী করছে তা পরীক্ষা করে দেখতে পারেন - যেমন সিএনএন বৈশিষ্ট্য বিশ্লেষণটি এখনও কনভোলশনাল স্তরগুলিতে প্রয়োগ করা যেতে পারে।
নিল স্লেটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.