কেরাসে "ফ্ল্যাটেন" এর ভূমিকা কী?


108

আমি Flattenকেরাসে এই অনুষ্ঠানের ভূমিকা বোঝার চেষ্টা করছি । নীচে আমার কোডটি, যা একটি সাধারণ দ্বি-স্তর নেটওয়ার্ক। এটি আকারের ত্রিমাত্রিক ডেটা নেয় (3, 2), এবং আকারের 1-মাত্রিক ডেটা (1, 4) আউটপুট দেয়:

model = Sequential()
model.add(Dense(16, input_shape=(3, 2)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(4))
model.compile(loss='mean_squared_error', optimizer='SGD')

x = np.array([[[1, 2], [3, 4], [5, 6]]])

y = model.predict(x)

print y.shape

এটি মুদ্রণ করে যা yআকার (1, 4) রয়েছে। তবে, আমি যদি Flattenলাইনটি সরিয়ে ফেলি , তবে এটি মুদ্রিত হবে যা yআকৃতিটি রয়েছে (1, 3, 4)।

আমি এটা বুঝতে পারি না। নিউরাল নেটওয়ার্কগুলি সম্পর্কে আমার বোঝার থেকে, model.add(Dense(16, input_shape=(3, 2)))ফাংশনটি 16 টি নোড সহ একটি লুকানো সম্পূর্ণ-সংযুক্ত স্তর তৈরি করছে। এই নোডগুলির প্রতিটি 3x2 ইনপুট উপাদানগুলির সাথে সংযুক্ত। অতএব, এই প্রথম স্তরের আউটপুটে 16 টি নোড ইতিমধ্যে "ফ্ল্যাট"। সুতরাং, প্রথম স্তরের আউটপুট আকার হওয়া উচিত (1, 16)। তারপরে, দ্বিতীয় স্তর এটিকে একটি ইনপুট হিসাবে গ্রহণ করে এবং আকারের ডেটা আউটপুট করে (1, 4)।

সুতরাং যদি প্রথম স্তরের আউটপুট ইতিমধ্যে "সমতল" এবং আকৃতির (1, 16) হয় তবে কেন আমাকে আরও আরও সমতল করার প্রয়োজন হবে?

উত্তর:


122

আপনি যদি কেরাস ডকুমেন্টেশন এন্ট্রির জন্য পড়েন Dense, আপনি দেখতে পাবেন যে এই কল:

Dense(16, input_shape=(5,3))

Dense3 ইনপুট এবং 16 আউটপুট সহ একটি নেটওয়ার্ক তৈরি করবে যা 5 টি পদক্ষেপের প্রতিটি জন্য স্বতন্ত্রভাবে প্রয়োগ করা হবে। সুতরাং, যদি D(x)3-মাত্রিক ভেক্টরকে 16-ডি ভেক্টরে রূপান্তরিত করে তবে আপনি আপনার স্তর থেকে আউটপুট হিসাবে যা পাবেন তা ভেক্টরগুলির ক্রম হবে: [D(x[0,:]), D(x[1,:]),..., D(x[4,:])]আকৃতির সাথে (5, 16)। আচরণটি নির্দিষ্ট করার জন্য আপনি প্রথমে Flattenএকটি 15-ডি ভেক্টরে আপনার ইনপুট দিতে পারেন এবং তারপরে আবেদন করতে পারেন Dense:

model = Sequential()
model.add(Flatten(input_shape=(3, 2)))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(4))
model.compile(loss='mean_squared_error', optimizer='SGD')

সম্পাদনা: কিছু লোক বুঝতে বোঝার লড়াই হিসাবে - আপনার এখানে একটি ব্যাখ্যাযোগ্য চিত্র রয়েছে:

এখানে চিত্র বর্ণনা লিখুন


তোমার ব্যাখ্যার জন্য ধন্যবাদ. কেবল যদিও স্পষ্ট করার জন্য: সাথে Dense(16, input_shape=(5,3), প্রতিটি আউটপুট নিউরনটি 16 (এবং, এই নিউরনের সমস্ত 5 সেটগুলির) সেট থেকে সমস্ত (3 x 5 = 15) ইনপুট নিউরনের সাথে সংযুক্ত হবে? অথবা ১ 16 এর প্রথম সেটটিতে প্রতিটি নিউরন কেবলমাত্র 5 ইনপুট নিউরনের প্রথম সেটটিতে 3 টি নিউরনের সাথে সংযুক্ত থাকবে এবং তারপরে 16 এর দ্বিতীয় সেটে প্রতিটি নিউরন কেবল 5 ইনপুটটির দ্বিতীয় সেটে 3 টি নিউরনের সাথে সংযুক্ত থাকবে? নিউরন, ইত্যাদি .... আমি এটি সম্পর্কে বিভ্রান্ত!
কর্নিবাউরাস

1
আপনার কাছে একটি ঘন স্তর রয়েছে যা 3 টি নিউরন এবং আউটপুট 16 পায় যা 3 টি নিউরনের 5 সেট প্রতিটিতে প্রয়োগ করা হয়।
মার্সিন মোয়েজকো

1
আহ, ঠিক আছে. আমি যা করার চেষ্টা করছি তা হ'ল ইনপুট হিসাবে 5 টি রঙিন পিক্সেলের একটি তালিকা নেওয়া এবং আমি চাই যে সেগুলি একটি সম্পূর্ণ-সংযুক্ত স্তরের মধ্য দিয়ে যেতে পারে। সুতরাং এর input_shape=(5,3)মানে হল যে এখানে 5 পিক্সেল রয়েছে এবং প্রতিটি পিক্সেলের তিনটি চ্যানেল রয়েছে (আর, জি, বি)। তবে আপনি যা বলছেন সে অনুসারে প্রতিটি চ্যানেল পৃথকভাবে প্রক্রিয়াজাত হবে, আমি চাই তিনটি চ্যানেলই প্রথম স্তরের সমস্ত নিউরোন দ্বারা প্রক্রিয়াজাত করা হোক। Flattenশুরুতে সঙ্গে সঙ্গে স্তরটি প্রয়োগ করা কি আমাকে দিতে চাইবে?
কর্নিবাউরাস 13

8
সাথে এবং বাইরে একটি অল্প অঙ্কন Flattenবুঝতে সাহায্য করতে পারে।
এক্সভলাক্স

2
ঠিক আছে, বন্ধুরা - আমি আপনাকে একটি চিত্র সরবরাহ করেছি। এখন আপনি আপনার ডাউনভোটগুলি মুছতে পারেন।
মার্সিন মোয়েজকো

52

এখানে চিত্র বর্ণনা লিখুন এভাবেই ফ্ল্যাটেন ম্যাট্রিক্সকে একক অ্যারে রূপান্তর করতে কাজ করে।


4
এই লোকটির আরও ছবি তৈরি করা দরকার। আমি এটি পছন্দ করি এটা বোঝা যায়।
alofgran

10
হ্যাঁ, তবে কেন এটি দরকার, এটি আমার মনে হয় আসল প্রশ্ন।
হেলেন -

35

সংক্ষিপ্ত পড়া:

একটি টেন্সর সমতল করার অর্থ একটি ব্যতীত সমস্ত মাত্রা মুছে ফেলা। ফ্ল্যাটেন স্তরটি ঠিক এটিই করে।

দীর্ঘ পড়া:

যদি আমরা বিবেচনা করে তৈরি করা মূল মডেলটি (ফ্ল্যাটেন স্তর সহ) নিই তবে আমরা নীচের মডেলটির সারাংশ পেতে পারি:

Layer (type)                 Output Shape              Param #   
=================================================================
D16 (Dense)                  (None, 3, 16)             48        
_________________________________________________________________
A (Activation)               (None, 3, 16)             0         
_________________________________________________________________
F (Flatten)                  (None, 48)                0         
_________________________________________________________________
D4 (Dense)                   (None, 4)                 196       
=================================================================
Total params: 244
Trainable params: 244
Non-trainable params: 0

এই সংক্ষিপ্তসারের জন্য পরবর্তী চিত্রটি আশা করি প্রতিটি স্তরের ইনপুট এবং আউটপুট মাপগুলিতে আরও কিছুটা জ্ঞান সরবরাহ করবে।

আপনি পড়তে পারেন ফ্ল্যাটেন স্তর জন্য আউটপুট আকার (None, 48)। এখানে টিপস। আপনি এটা পড়া উচিত (1, 48)বা (2, 48)বা ... বা (16, 48)... বা (32, 48)...

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

কেরাসে ফ্ল্যাটেন স্তরের ভূমিকা অত্যন্ত সহজ:

একটি টেন্সর ওপর চেপ্টা অপারেশন টেন্সর reshapes আকৃতি যে টেন্সর অন্তর্ভুক্ত উপাদানের সংখ্যা সমান আছে ব্যাচ মাত্রা সহ নন

এখানে চিত্র বর্ণনা লিখুন


দ্রষ্টব্য: আমি model.summary()আউটপুট আকার এবং পরামিতি বিশদ সরবরাহ করতে পদ্ধতিটি ব্যবহার করেছি ।


1
খুব অন্তর্দৃষ্টিপূর্ণ ডায়াগ্রাম।
শ্রেয় জোশি

1
ডায়াগ্রামের জন্য ধন্যবাদ। এটি আমাকে একটি পরিষ্কার ছবি দেয়।
সুলতান আহমেদ সাগর

0

আপনি কীভাবে বহুমাত্রিক টেনসরকে সিরিয়ালাইজ করবেন (টিপিকভাবে ইনপুটটি একটি) সমতল করুন Fla এটি (সমতল) ইনপুট টেনসর এবং প্রথম লুকানো স্তরের মধ্যে ম্যাপিংয়ের অনুমতি দেয়। যদি প্রথম লুকানো স্তরটি "ঘন" হয় তবে (সিরিয়ালাইজড) ইনপুট টেনসরের প্রতিটি উপাদান লুকানো অ্যারের প্রতিটি উপাদানের সাথে সংযুক্ত হবে। আপনি যদি ফ্ল্যাটেন ব্যবহার না করেন তবে প্রথম লুকানো স্তরে যেভাবে ইনপুট টেনসর ম্যাপ করা হবে তা অস্পষ্ট হবে।


0

আমি সম্প্রতি এটি পেরেছি, এটি অবশ্যই আমাকে বুঝতে সাহায্য করেছে: https://www.cs.ryerson.ca/~aharley/vis/conv/

সুতরাং একটি ইনপুট রয়েছে, একটি কনভ 2 ডি, ম্যাকপুলিং 2 ডি ইত্যাদি, সমতল স্তরগুলি শেষ হয় এবং ঠিক কীভাবে তারা গঠিত হয় এবং কীভাবে তারা চূড়ান্ত শ্রেণিবদ্ধকরণ (0-9) সংজ্ঞায়িত করতে যায় তা দেখায়।

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