TensorFlow.org এ দেখুন | Google Colab-এ চালান | GitHub-এ উৎস দেখুন | নোটবুক ডাউনলোড করুন |
ওভারভিউ
এই নোটবুক মধ্যে একটি সংক্ষিপ্ত ভূমিকা দেয় নিয়মমাফিককরণ স্তর TensorFlow করুন। বর্তমানে সমর্থিত স্তরগুলি হল:
- গ্রুপ স্বাভাবিক (TensorFlow অ্যাডঅনস)
- ইন্সটান্স স্বাভাবিক (TensorFlow অ্যাডঅনস)
- লেয়ার স্বাভাবিক (TensorFlow কোর)
এই স্তরগুলির পিছনে মূল ধারণাটি হল প্রশিক্ষণের সময় অভিন্নতা উন্নত করতে একটি সক্রিয়করণ স্তরের আউটপুটকে স্বাভাবিক করা। বিপরীতে ব্যাচ নিয়মমাফিককরণ এই normalizations ব্যাচ কাজ না, পরিবর্তে তারা একটি একক নমুনা সক্রিয়করণব্যবস্থা স্বাভাবিক, তাদের পাশাপাশি পৌনঃপুনিক neual নেটওয়ার্কগুলির জন্য উপযুক্ত হয়।
সাধারণত আপনার ইনপুট টেনসরে একটি সাবগ্রুপের গড় এবং মানক বিচ্যুতি গণনা করে স্বাভাবিকীকরণ করা হয়। এটিতে একটি স্কেল এবং একটি অফসেট ফ্যাক্টর প্রয়োগ করাও সম্ভব।
\(y_{i} = \frac{\gamma ( x_{i} - \mu )}{\sigma }+ \beta\)
\( y\) : আউটপুট
\(x\) : ইনপুট
\(\gamma\) : স্কেল ফ্যাক্টর
\(\mu\): গড়
\(\sigma\): স্ট্যানডার্ড ডেভিয়েশন
\(\beta\): অফসেট ফ্যাক্টর
নিম্নলিখিত চিত্রটি এই কৌশলগুলির মধ্যে পার্থক্য প্রদর্শন করে। প্রতিটি সাবপ্লট একটি ইনপুট টেনসর দেখায়, ব্যাচ অক্ষ হিসাবে N, চ্যানেল অক্ষ হিসাবে C এবং (H, W) স্থানিক অক্ষ হিসাবে (উদাহরণস্বরূপ একটি ছবির উচ্চতা এবং প্রস্থ)। নীল রঙের পিক্সেলগুলিকে একই গড় এবং ভিন্নতা দ্বারা স্বাভাবিক করা হয়, এই পিক্সেলগুলির মানগুলিকে একত্রিত করে গণনা করা হয়।
উত্স: ( https://arxiv.org/pdf/1803.08494.pdf )
ওজন গামা এবং বিটা সমস্ত স্বাভাবিককরণ স্তরে প্রশিক্ষিত হয় যাতে প্রতিনিধিত্বমূলক ক্ষমতার সম্ভাব্য হারানোর জন্য ক্ষতিপূরণ দেওয়া যায়। আপনি সেটিং দ্বারা এই উপাদানগুলির সক্রিয় করতে পারেন center
বা scale
পতাকা True
। অবশ্যই আপনি ব্যবহার করতে পারেন initializers
, constraints
এবং regularizer
জন্য beta
এবং gamma
সুর এই মান প্রশিক্ষণ প্রক্রিয়ার সময়।
সেটআপ
Tensorflow 2.0 এবং Tensorflow-Addons ইনস্টল করুন
pip install -U tensorflow-addons
import tensorflow as tf
import tensorflow_addons as tfa
ডেটাসেট প্রস্তুত করা হচ্ছে
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
গ্রুপ নরমালাইজেশন টিউটোরিয়াল
ভূমিকা
গ্রুপ নরমালাইজেশন (GN) আপনার ইনপুটগুলির চ্যানেলগুলিকে ছোট সাব গ্রুপে বিভক্ত করে এবং এই মানগুলিকে তাদের গড় এবং বৈচিত্রের উপর ভিত্তি করে স্বাভাবিক করে। যেহেতু GN একটি একক উদাহরণে কাজ করে এই কৌশলটি ব্যাচসাইজ স্বাধীন।
GN পরীক্ষামূলকভাবে চিত্র শ্রেণীবিভাগের কাজগুলিতে ব্যাচ স্বাভাবিককরণের জন্য স্কোর করেছে। আপনার সামগ্রিক ব্যাচ_সাইজ কম হলে ব্যাচ স্বাভাবিককরণের পরিবর্তে জিএন ব্যবহার করা উপকারী হতে পারে, যা ব্যাচ স্বাভাবিককরণের খারাপ কর্মক্ষমতার দিকে পরিচালিত করবে
উদাহরণ
একটি সাধারণ "চ্যানেল লাস্ট" সেটিংয়ে একটি Conv2D স্তরের পরে 10টি চ্যানেলকে 5টি উপগোষ্ঠীতে বিভক্ত করা:
model = tf.keras.models.Sequential([
# Reshape into "channels last" setup.
tf.keras.layers.Reshape((28,28,1), input_shape=(28,28)),
tf.keras.layers.Conv2D(filters=10, kernel_size=(3,3),data_format="channels_last"),
# Groupnorm Layer
tfa.layers.GroupNormalization(groups=5, axis=3),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_test, y_test)
313/313 [==============================] - 3s 3ms/step - loss: 0.4707 - accuracy: 0.8613 <keras.callbacks.History at 0x7f63a5c5f490>
ইন্সট্যান্স নরমালাইজেশন টিউটোরিয়াল
ভূমিকা
ইনস্ট্যান্স নরমালাইজেশন হল গ্রুপ নরমালাইজেশনের বিশেষ কেস যেখানে গ্রুপ সাইজ চ্যানেল সাইজ (বা অক্ষ সাইজ) এর সমান।
পরীক্ষামূলক ফলাফলগুলি দেখায় যে ব্যাচ স্বাভাবিককরণ প্রতিস্থাপন করার সময় ইন্সট্যান্স নর্মালাইজেশন স্টাইল ট্রান্সফারে ভাল কাজ করে। সম্প্রতি, ইন্সট্যান্স নর্মালাইজেশনও GAN-এ ব্যাচ স্বাভাবিকীকরণের প্রতিস্থাপন হিসেবে ব্যবহার করা হয়েছে।
উদাহরণ
Conv2D লেয়ারের পরে ইন্সট্যান্স নরমালাইজেশন প্রয়োগ করা এবং ইউনিফর্মড ইনিশিয়ালাইজড স্কেল এবং অফসেট ফ্যাক্টর ব্যবহার করা।
model = tf.keras.models.Sequential([
# Reshape into "channels last" setup.
tf.keras.layers.Reshape((28,28,1), input_shape=(28,28)),
tf.keras.layers.Conv2D(filters=10, kernel_size=(3,3),data_format="channels_last"),
# LayerNorm Layer
tfa.layers.InstanceNormalization(axis=3,
center=True,
scale=True,
beta_initializer="random_uniform",
gamma_initializer="random_uniform"),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_test, y_test)
313/313 [==============================] - 1s 3ms/step - loss: 0.5367 - accuracy: 0.8405 <keras.callbacks.History at 0x7f63a58d9f50>
লেয়ার নরমালাইজেশন টিউটোরিয়াল
ভূমিকা
স্তর স্বাভাবিককরণ হল গ্রুপ স্বাভাবিককরণের বিশেষ ক্ষেত্রে যেখানে গোষ্ঠীর আকার 1। গড় এবং আদর্শ বিচ্যুতি একটি একক নমুনার সমস্ত সক্রিয়করণ থেকে গণনা করা হয়।
পরীক্ষামূলক ফলাফলগুলি দেখায় যে স্তরের স্বাভাবিককরণ পুনরাবৃত্ত নিউরাল নেটওয়ার্কগুলির জন্য উপযুক্ত, কারণ এটি ব্যাচের আকারে স্বাধীনভাবে কাজ করে।
উদাহরণ
একটি Conv2D স্তরের পরে স্তর স্বাভাবিককরণ প্রয়োগ করা এবং একটি স্কেল এবং অফসেট ফ্যাক্টর ব্যবহার করা।
model = tf.keras.models.Sequential([
# Reshape into "channels last" setup.
tf.keras.layers.Reshape((28,28,1), input_shape=(28,28)),
tf.keras.layers.Conv2D(filters=10, kernel_size=(3,3),data_format="channels_last"),
# LayerNorm Layer
tf.keras.layers.LayerNormalization(axis=3 , center=True , scale=True),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_test, y_test)
313/313 [==============================] - 1s 3ms/step - loss: 0.4056 - accuracy: 0.8754 <keras.callbacks.History at 0x7f63a5722d10>