কেরাস ইনপুট ব্যাখ্যা: ইনপুট_শ্যাপ, ইউনিট, ব্যাচ_ আকার, ম্লান ইত্যাদি


260

কোনো Keras স্তর (জন্য Layerবর্গ), করতে পারেন কেউ কিভাবে ব্যাখ্যা মধ্যে পার্থক্য বুঝতে পারা input_shape, units, dim, ইত্যাদি?

উদাহরণস্বরূপ ডক বলছে unitsএকটি স্তরের আউটপুট আকার নির্দিষ্ট করুন।

নীচের নিউরাল নেট এর ছবিতে hidden layer14 টি ইউনিট রয়েছে। এটি কি সরাসরি অবজেক্টের unitsবৈশিষ্ট্যে অনুবাদ করে Layer? বা unitsকেরাসে গোপন স্তরের প্রতিটি ওজনের আকারের সাথে ইউনিটের সংখ্যার সমান হয়?

সংক্ষেপে নীচের চিত্রটি দিয়ে কীভাবে মডেলটির বৈশিষ্ট্যগুলি - বিশেষত স্তরগুলি কীভাবে বোঝা / কল্পনা করা যায়? এখানে চিত্র বর্ণনা লিখুন

উত্তর:


412

ইউনিট:

"নিউরন" বা "কোষ" এর পরিমাণ বা স্তরটির ভিতরে যা কিছু আছে।

এটি প্রতিটি স্তরের সম্পত্তি এবং হ্যাঁ, এটি আউটপুট আকারের সাথে সম্পর্কিত (যেমন আমরা পরে দেখব)। আপনার ছবিতে, ইনপুট স্তরটি বাদে, যা অন্যান্য স্তর থেকে ধারণাগতভাবে পৃথক, আপনার কাছে রয়েছে:

  • লুকানো স্তর 1: 4 ইউনিট (4 নিউরন)
  • লুকানো স্তর 2: 4 ইউনিট
  • শেষ স্তর: 1 ইউনিট

আকার

আকারগুলি মডেলের কনফিগারেশনের পরিণতি। আকারগুলি হ'ল টিপলস প্রতিনিধিত্ব করে যা প্রতিটি মাত্রায় একটি অ্যারে বা টেনসরের কতগুলি উপাদান রয়েছে।

উদাহরণস্বরূপ: একটি আকৃতির (30,4,10)অর্থ 3 টি মাত্রা সহ একটি অ্যারে বা টেনসর, প্রথম মাত্রায় 30 টি উপাদান থাকে, দ্বিতীয়টিতে 4 এবং তৃতীয়তে 10 থাকে, মোট 30 * 4 * 10 = 1200 উপাদান বা সংখ্যা।

ইনপুট আকার

স্তরগুলির মধ্যে প্রবাহিত হ'ল টেনারগুলি are টেনেসরগুলিকে ম্যাট্রিক হিসাবে দেখা যায়, আকার সহ।

কেরাসে, ইনপুট স্তরটি নিজেই একটি স্তর নয়, তবে একটি সেন্সর। এটি আপনি প্রথম লুকানো স্তরে প্রেরণকারী টেনসর। এই টেনসরটির অবশ্যই আপনার প্রশিক্ষণের ডেটার মতোই আকার থাকতে হবে।

উদাহরণ: যদি আপনি আরজিবি মধ্যে 50x50 পিক্সেলের (3 চ্যানেল) 30 ইমেজ উপস্থিত আছে, আপনার ইনপুট ডেটা আকৃতি হয় (30,50,50,3)। তারপরে আপনার ইনপুট লেয়ার টেনসর, অবশ্যই এই আকৃতিটি থাকা উচিত ("কেরাসের আকারগুলি" বিভাগে বিশদটি দেখুন)।

প্রতিটি ধরণের স্তরটির জন্য নির্দিষ্ট সংখ্যক মাত্রার ইনপুট প্রয়োজন:

এখন, ইনপুট আকারটি কেবলমাত্র আপনাকেই সংজ্ঞায়িত করতে হবে কারণ আপনার মডেল এটি জানতে পারে না। আপনার প্রশিক্ষণ ডেটার উপর ভিত্তি করে শুধুমাত্র আপনি এটি জানেন।

অন্যান্য স্তরগুলি প্রতিটি স্তরের ইউনিট এবং বৈশিষ্ট্যের ভিত্তিতে স্বয়ংক্রিয়ভাবে গণনা করা হয়।

আকার এবং ইউনিটগুলির মধ্যে সম্পর্ক - আউটপুট আকার

ইনপুট আকার দেওয়া, অন্যান্য সমস্ত আকার স্তর স্তর গণনার ফলাফল।

প্রতিটি স্তরের "ইউনিট" আউটপুট আকারটি নির্ধারণ করবে (স্তর দ্বারা উত্পাদিত টেনসারের আকার এবং এটি পরবর্তী স্তরটির ইনপুট হবে)।

প্রতিটি ধরণের স্তর একটি নির্দিষ্ট উপায়ে কাজ করে। ঘন স্তরগুলির "ইউনিট" এর উপর ভিত্তি করে আউটপুট আকার থাকে, কনভোলজিনাল স্তরগুলির "ফিল্টার" এর উপর ভিত্তি করে আউটপুট আকার থাকে। তবে এটি সর্বদা কিছু স্তরের সম্পত্তির উপর ভিত্তি করে। (প্রতিটি স্তর আউটপুট কীসের জন্য ডকুমেন্টেশন দেখুন)

আসুন দেখা যাক "ঘন" স্তরগুলির সাথে কী ঘটে, যা আপনার গ্রাফে প্রদর্শিত প্রকার।

একটি ঘন স্তর একটি আউটপুট আকার আছে (batch_size,units)। সুতরাং, হ্যাঁ, ইউনিটগুলি, স্তরটির সম্পত্তি, আউটপুট আকারও সংজ্ঞায়িত করে।

  • লুকায়িত স্তর 1: 4 ইউনিট, আউটপুট আকৃতি: (batch_size,4)
  • লুকায়িত স্তর 2: 4 ইউনিট, আউটপুট আকৃতি: (batch_size,4)
  • সর্বশেষ স্তর: 1 ইউনিট, আউটপুট আকৃতি: (batch_size,1)

ওজন

ওজন সম্পূর্ণরূপে ইনপুট এবং আউটপুট আকারের উপর ভিত্তি করে গণনা করা হবে। আবার, প্রতিটি ধরণের স্তর একটি নির্দিষ্ট উপায়ে কাজ করে। তবে ওজনগুলি একটি গাণিতিক ক্রিয়াকলাপ দ্বারা ইনপুট আকারকে আউটপুট আকারে রূপান্তর করতে সক্ষম ম্যাট্রিক্স হবে।

একটি ঘন স্তর মধ্যে, ওজন সমস্ত ইনপুট গুন। এটি ইনপুট প্রতি এক কলাম এবং ইউনিট প্রতি এক সারি সহ একটি ম্যাট্রিক্স, তবে এটি প্রায়শই বেসিক কাজের জন্য গুরুত্বপূর্ণ নয়।

চিত্রটিতে, প্রতিটি তীরটিতে যদি একটি গুণ চিহ্ন থাকে, সমস্ত সংখ্যা একসাথে ওজন ম্যাট্রিক্স গঠন করে।

কেরাসে আকার

এর আগে, আমি 30 টি চিত্র, 50x50 পিক্সেল এবং 3 টি চ্যানেলের উদাহরণ দিয়েছিলাম যার একটি ইনপুট আকার রয়েছে (30,50,50,3)

যেহেতু ইনপুট শেপটি কেবলমাত্র আপনাকে নির্ধারণ করতে হবে তাই কেরাস প্রথম স্তরে এটির দাবি করবে demand

তবে এই সংজ্ঞায় কেরাস প্রথম মাত্রা উপেক্ষা করে যা ব্যাচের আকার। আপনার মডেলটি যে কোনও ব্যাচের আকারের সাথে ডিল করতে সক্ষম হবে, সুতরাং আপনি কেবলমাত্র অন্যান্য মাত্রাগুলি নির্ধারণ করুন:

input_shape = (50,50,3)
    #regardless of how many images I have, each image has this shape        

বৈকল্পিকভাবে, অথবা যখন এটি মডেলের নির্দিষ্ট ধরণের প্রয়োজনীয় যাচ্ছে তুমি কি আকৃতি মাধ্যমে ব্যাচ আকার ধারণকারী পাস করতে পারেন batch_input_shape=(30,50,50,3)বা batch_shape=(30,50,50,3)। এটি আপনার প্রশিক্ষণের সম্ভাব্যতাগুলিকে এই অনন্য ব্যাচের আকারের মধ্যে সীমাবদ্ধ করে, তাই এটি যখন সত্যই প্রয়োজন হয় কেবল তখনই ব্যবহার করা উচিত।

যেভাবেই আপনি চয়ন করেন, মডেলটির টেনারগুলির ব্যাচের মাত্রা থাকবে।

সুতরাং, এমনকি যদি আপনি ব্যবহার করেছেন input_shape=(50,50,3), কেরারা যখন আপনাকে বার্তা প্রেরণ করে বা যখন আপনি মডেলটির সারাংশ প্রিন্ট করেন, এটি প্রদর্শিত হবে (None,50,50,3)

প্রথম মাত্রা হ'ল ব্যাচের আকার, এটি Noneকারণ প্রশিক্ষণের জন্য আপনি কতগুলি উদাহরণ দেন তার উপর নির্ভর করে এটি পৃথক হতে পারে। (আপনি যদি ব্যাচের আকারটি স্পষ্টভাবে সংজ্ঞায়িত করেন তবে আপনার সংখ্যার সংখ্যার পরিবর্তে উপস্থিত হবে None)

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

  • সুতরাং, ইনপুট আকারটি সংজ্ঞায়িত করার সময় আপনি ব্যাচের আকারটিকে উপেক্ষা করবেন: input_shape=(50,50,3)
  • সরাসরি টেনসরগুলিতে অপারেশন করার সময়, আকৃতিটি আবার হবে (30,50,50,3)
  • কেরাস যখন আপনাকে একটি বার্তা প্রেরণ করে তখন আকারটি (None,50,50,3)বা (30,50,50,3)এটি আপনাকে কী ধরণের বার্তা প্রেরণ করে তার উপর নির্ভর করে।

অস্পষ্ট

এবং শেষ পর্যন্ত, কি dim?

যদি আপনার ইনপুট আকারের একটি মাত্র মাত্রা থাকে তবে আপনাকে এটিকে একটি টিউপল হিসাবে দেওয়ার দরকার নেই, আপনি input_dimএকটি স্কেলার নম্বর হিসাবে দেন।

সুতরাং, আপনার মডেলটিতে, যেখানে আপনার ইনপুট স্তরটিতে 3 টি উপাদান রয়েছে, আপনি এই দুটির কোনও ব্যবহার করতে পারেন:

  • input_shape=(3,) - আপনার যখন মাত্র একটি মাত্রা থাকবে তখন কমাটি প্রয়োজনীয়
  • input_dim = 3

কিন্তু সরাসরি টেনারগুলির সাথে কাজ করার সময়, প্রায়শই dimকোনও টেনসর কতটি মাত্রা রয়েছে তা উল্লেখ করবে। উদাহরণস্বরূপ আকৃতির (25,10909) টেন্সরের 2 মাত্রা রয়েছে।


কেরাসে আপনার চিত্রের সংজ্ঞা দিচ্ছেন

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

PS: এখানে আমি অন্যান্য বিষয় যেমন অ্যাক্টিভেশন ফাংশন উপেক্ষা করেছি।

সিক্যুয়াল মডেল সহ :

from keras.models import Sequential  
from keras.layers import *  

model = Sequential()    

#start from the first hidden layer, since the input is not actually a layer   
#but inform the shape of the input, with 3 elements.    
model.add(Dense(units=4,input_shape=(3,))) #hidden layer 1 with input

#further layers:    
model.add(Dense(units=4)) #hidden layer 2
model.add(Dense(units=1)) #output layer   

কার্যকরী এপিআই মডেল সহ :

from keras.models import Model   
from keras.layers import * 

#Start defining the input tensor:
inpTensor = Input((3,))   

#create the layers and pass them the input tensor to get the output tensor:    
hidden1Out = Dense(units=4)(inpTensor)    
hidden2Out = Dense(units=4)(hidden1Out)    
finalOut = Dense(units=1)(hidden2Out)   

#define the model's start and end points    
model = Model(inpTensor,finalOut)

টেনারদের আকার

মনে রাখবেন স্তরগুলি সংজ্ঞায়িত করার সময় আপনি ব্যাচের আকারগুলি উপেক্ষা করবেন:

  • inpTensor: (None,3)
  • hidden1Out: (None,4)
  • hidden2Out: (None,4)
  • finalOut: (None,1)

7
input_shape=পরামিতি সম্পর্কে একটি প্রশ্ন রয়ে গেছে: আর্গুমেন্টের প্রথম মানটি কোন মাত্রায় বোঝায়? আমি এর মতো জিনিস দেখতে পাচ্ছি input_shape=(728, ), তাই আমার মনে প্রথম যুক্তিটি কলামগুলি (স্থির) এবং দ্বিতীয়টি সারিগুলিকে বোঝায় (আলাদা হতে পারে)। তবে কীভাবে পাইথনের সারি-প্রধান অ্যারেটির সাথে এটি বসে?
ম্যাক্সিম.কে

17
সেই কমাটি দ্বিতীয় মাত্রা তৈরি করে না। এটি tupleকেবলমাত্র একটি উপাদান রয়েছে এমনটি তৈরির জন্য অজগর স্বরলিপি । input_shape(728,)হিসাবে একই batch_input=(batch_size,728)। এর অর্থ হ'ল প্রতিটি নমুনার মান 728।
ড্যানিয়েল মুলার

@ ড্যানিয়েলমেলার: আপনি কি দয়া করে কিছুটা ব্যাখ্যা করতে পারবেন "ইনপুট উপাদানগুলি" এবং "মাত্রা" এর মধ্যে পার্থক্য কী? আমি মনে করব যে উপরের গ্রাফটিতে ত্রিমাত্রিক ইনপুট স্তর ছিল, সুতরাং এটি ধূমপুর্ণ = 3 তৈরি করে , তাই আমি ভাবছি যে আমি এখানে কী অনুপস্থিত, কারণ আমি আপনাকে লিখতে দেখছি যে ইনপুটটি 1-মাত্রিক ...
হেলেন

1
একটি ভেক্টরের একটি মাত্রা রয়েছে তবে অনেকগুলি উপাদান রয়েছে। এর আকার রয়েছে (এন,) ---- একটি ম্যাট্রিক্সের দুটি মাত্রা রয়েছে, মাত্রা 0 টিতে এম উপাদান রয়েছে, মাত্রা 1 এর এন উপাদান রয়েছে, মোট এমএক্সএন উপাদান রয়েছে, আকার (এম, এন)। আপনি যদি কোনও "কিউব" ছোট্ট কিউবগুলিতে বিভক্ত, ডেটাযুক্ত প্রতিটি ছোট ঘনক্ষেত্র কল্পনা করেন তবে এটি 3D হবে, এমএক্সএনএক্সো উপাদানগুলির সাথে, আকার (মি, এন, ও)।
ড্যানিয়েল মুলার 23:58

2
@ প্রিন্স, অর্ডারটি গুরুত্বপূর্ণ। আপনি কেরাস ব্যবহার করতে data_format = 'channels_first'বা কনফিগার করতে পারেন data_format='channels_last'। আমি সর্বদা সর্বদা চ্যানেলগুলি সর্বশেষ (কেরাসের ডিফল্ট) ব্যবহার করার পরামর্শ দিই। এটি অন্যান্য সমস্ত স্তরগুলির সাথে আরও সুসংগত।
ড্যানিয়েল মুলার

11

ইনপুট মাত্রা স্পষ্ট:

সরাসরি উত্তর নয়, তবে আমি কেবল বুঝতে পেরেছি ইনপুট ডাইমেনশন শব্দটি যথেষ্ট বিভ্রান্তিকর হতে পারে, তাই সতর্ক থাকুন:

এটি (একাকী শব্দ মাত্রা) উল্লেখ করতে পারে:

ক) ইনপুট ডেটার মাত্রা (বা স্ট্রিম) যেমন টাইম সিরিজ সিগন্যালটি বিম করার জন্য সেন্সর অক্ষের # এন, বা আরজিবি রঙ চ্যানেল (3): প্রস্তাবিত শব্দ => "ইনপুটস্ট্রিমের মাত্রা"

খ) ইনপুট বৈশিষ্ট্যগুলির মোট সংখ্যা / দৈর্ঘ্য (বা ইনপুট স্তর) (MINST রঙের চিত্রের জন্য 28 x 28 = 784) বা এফএফটি রূপান্তরিত বর্ণালী মানগুলিতে 3000 বা

"ইনপুট স্তর / ইনপুট বৈশিষ্ট্য মাত্রা"

গ) ইনপুটটির মাত্রিকতা (# মাত্রার #) (সাধারণত ক্যারাস এলএসটিএম হিসাবে প্রত্যাশিত 3 ডি) বা (# রাউফসাম্পলস, # সেন্সর, # মানগুলির #) 3 এর উত্তর

"ইনপুট এর এন মাত্রা"

d) এই মোড়কযুক্ত ইনপুট চিত্রের ডেটাতে স্পেসিফিক ইনপুট শেপ (যেমন (30,50,50,3), বা আন-র্যাপড কেরাস (30, 250, 3) :

কেরাস এর ইনপুট_ডিমটি ইনপুট লেয়ারের মাত্রা / ইনপুট বৈশিষ্ট্যের সংখ্যা বোঝায়

model = Sequential()
model.add(Dense(32, input_dim=784))  #or 3 in the current posted example above
model.add(Activation('relu'))

কেরাস এলএসটিএম-এ, এটি মোট সময় ধাপগুলি বোঝায়

শব্দটি খুব বিভ্রান্তিকর হয়েছে, সঠিক এবং আমরা একটি বিভ্রান্তিকর বিশ্বে বাস করি !!

আমি মেশিন লার্নিংয়ের একটি চ্যালেঞ্জ খুঁজে পেয়েছি হ'ল বিভিন্ন ভাষা বা উপভাষা এবং পরিভাষা (যেমন আপনার যদি ইংরেজির 5-8 অতি ভিন্ন সংস্করণ থাকে তবে বিভিন্ন স্পিকারের সাথে কথা বলার জন্য আপনাকে খুব উচ্চ দক্ষতা অর্জন করতে হবে)। সম্ভবত প্রোগ্রামিং ভাষাগুলিতেও এটি একই।

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