ভূমিকা
আপনার মডেলে MinDiff সংহত করার দুটি ধাপ রয়েছে:
তথ্য (মধ্যে আবৃত প্রস্তুত ইনপুট প্রস্তুতি গাইড )।
পরিবর্তন বা একটি মডেল তৈরি করুন যা প্রশিক্ষণের সময় MinDiff সংহত করবে।
ব্যবহার করছে: এই নির্দেশিকাটি দ্বিতীয় ধাপ সম্পন্ন করার সবচেয়ে সহজ উপায় আবরণ হবে MinDiffModel
।
সেটআপ
pip install -q --upgrade tensorflow-model-remediation
import tensorflow as tf
tf.get_logger().setLevel('ERROR') # Avoid TF warnings.
from tensorflow_model_remediation import min_diff
from tensorflow_model_remediation.tools.tutorials_utils import uci as tutorials_utils
প্রথমে ডেটা ডাউনলোড করুন। Succinctness তখন ইনপুট প্রস্তুতি যুক্তিবিজ্ঞান বর্ণনা অনুযায়ী সাহায্যকারী ফাংশন ছড়িয়ে উপাদান হয়েছে ইনপুট প্রস্তুতি গাইড । এই প্রক্রিয়ার বিস্তারিত জানার জন্য আপনি সম্পূর্ণ গাইড পড়তে পারেন।
# Original DataFrame for training, sampled at 0.3 for reduced runtimes.
train_df = tutorials_utils.get_uci_data(split='train', sample=0.3)
# Dataset needed to train with MinDiff.
train_with_min_diff_ds = (
tutorials_utils.get_uci_with_min_diff_dataset(split='train', sample=0.3))
আসল মডেল
এই নির্দেশিকাটি একটি মৌলিক, বেসুর ব্যবহার keras.Model
ব্যবহার ক্রিয়াগত এপিআই MinDiff ব্যবহার হাইলাইট করতে। একটি বাস্তব বিশ্বের অ্যাপ্লিকেশনে, আপনি সাবধানে মডেল আর্কিটেকচার বেছে নেবেন এবং ন্যায্যতার সমস্যা সমাধানের চেষ্টা করার আগে মডেলের গুণমান উন্নত করতে টিউনিং ব্যবহার করবেন।
যেহেতু MinDiffModel
সবচেয়ে Keras সঙ্গে কাজ করার জন্য ডিজাইন করা Model
: ক্লাস, আমরা একটি সাহায্যকারী ফাংশন মধ্যে মডেল নির্মাণের যুক্তিবিজ্ঞান আউট উপাদান আছে get_uci_model
।
একটি পান্ডাস ডেটাফ্রেম সহ প্রশিক্ষণ
এই নির্দেশিকাটি গতির জন্য একটি একক যুগের উপর প্রশিক্ষণ দেয়, কিন্তু যুগের সংখ্যা বাড়িয়ে সহজেই মডেলের কর্মক্ষমতা উন্নত করতে পারে।
model = tutorials_utils.get_uci_model()
model.compile(optimizer='adam', loss='binary_crossentropy')
df_without_target = train_df.drop(['target'], axis=1) # Drop 'target' for x.
_ = model.fit(
x=dict(df_without_target), # The model expects a dictionary of features.
y=train_df['target'],
batch_size=128,
epochs=1)
77/77 [==============================] - 3s 23ms/step - loss: 0.8589
একটি সঙ্গে প্রশিক্ষণ tf.data.Dataset
একটি সঙ্গে সমতুল্য প্রশিক্ষণ tf.data.Dataset
অনুরূপ দেখাবে (যদিও আরম্ভের এবং ইনপুট যদৃচ্ছতা কিছুটা ভিন্ন ফলাফল উত্পাদ পারে)।
model = tutorials_utils.get_uci_model()
model.compile(optimizer='adam', loss='binary_crossentropy')
_ = model.fit(
tutorials_utils.df_to_dataset(train_df, batch_size=128), # Converted to Dataset.
epochs=1)
77/77 [==============================] - 3s 23ms/step - loss: 0.6416
প্রশিক্ষণের জন্য MinDiff সংহত করা
একবার ডেটা প্রস্তুত হয়ে গেলে, নিম্নলিখিত পদক্ষেপগুলি সহ আপনার মডেলে MinDiff প্রয়োগ করুন:
- MinDiff ছাড়াই আসল মডেল তৈরি করুন।
original_model = tutorials_utils.get_uci_model()
- একটি এটি মোড়ানো
MinDiffModel
।
min_diff_model = min_diff.keras.MinDiffModel(
original_model=original_model,
loss=min_diff.losses.MMDLoss(),
loss_weight=1)
- আপনি MinDiff ছাড়া এটি কম্পাইল করুন.
min_diff_model.compile(optimizer='adam', loss='binary_crossentropy')
- MinDiff ডেটা সেটটি (সঙ্গে এটি ট্রেন
train_with_min_diff_ds
এই ক্ষেত্রে)।
_ = min_diff_model.fit(train_with_min_diff_ds, epochs=1)
77/77 [==============================] - 6s 31ms/step - loss: 0.7883 - min_diff_loss: 0.0379
মূল্যায়ন এবং প্রেডিক্সন MinDiffModel
মূল্যায়নের এবং একটি সঙ্গে পূর্বাভাসের উভয় MinDiffModel
মূল মডেলের এমনটি একই রকম।
যখন কলিং evaluate
আপনি হয় মূল ডেটা সেটটি বা MinDiff তথ্য ধারণকারী এক পাস করতে পারেন। আপনি যদি পরে বেছে নেন, এছাড়াও আপনি পাবেন min_diff_loss
অন্য কোন বৈশিষ্ট্যের মান ছাড়াও মেট্রিক হচ্ছে মাপা loss
এছাড়াও অন্তর্ভুক্ত করা হবে min_diff_loss
।
যখন কলিং evaluate
আপনি হয় মূল ডেটা সেটটি বা MinDiff তথ্য ধারণকারী এক পাস করতে পারেন। আপনি যদি মূল্যায়নের কলে MinDiff অন্তর্ভুক্ত করেন, তাহলে দুটি জিনিস আলাদা হবে:
- একটি অতিরিক্ত মেট্রিক নামক
min_diff_loss
আউটপুটে উপস্থিত থাকবে। - এর মান
loss
মেট্রিক মূল এর সমষ্টি হতে হবেloss
মেট্রিক (আউটপুটে দেখানো হয়নি) এবংmin_diff_loss
।
_ = min_diff_model.evaluate(
tutorials_utils.df_to_dataset(train_df, batch_size=128))
# Calling with MinDiff data will include min_diff_loss in metrics.
_ = min_diff_model.evaluate(train_with_min_diff_ds)
77/77 [==============================] - 2s 22ms/step - loss: 0.4638 77/77 [==============================] - 3s 32ms/step - loss: 0.5087 - min_diff_loss: 0.0451
যখন কলিং predict
আপনি টেকনিক্যালি এছাড়াও MinDiff ডেটার সাথে ডেটাসেটে পাস করতে পারেন কিন্তু এটি উপেক্ষা করা হবে এবং আউটপুট প্রভাবিত করে না।
_ = min_diff_model.predict(
tutorials_utils.df_to_dataset(train_df, batch_size=128))
_ = min_diff_model.predict(train_with_min_diff_ds) # Identical to results above.
ব্যবহারের সীমাবদ্ধতা MinDiffModel
সরাসরি
ব্যবহার করার সময় MinDiffModel
উপরে বর্ণিত, সবচেয়ে পদ্ধতির ডিফল্ট বাস্তবায়নের ব্যবহার করবে tf.keras.Model
(তালিকাভুক্ত ব্যতিক্রম এপিআই ডকুমেন্টেশন )।
print('MinDiffModel.fit == keras.Model.fit')
print(min_diff.keras.MinDiffModel.fit == tf.keras.Model.fit)
print('MinDiffModel.train_step == keras.Model.train_step')
print(min_diff.keras.MinDiffModel.train_step == tf.keras.Model.train_step)
MinDiffModel.fit == keras.Model.fit True MinDiffModel.train_step == keras.Model.train_step True
জন্য keras.Sequential
বা keras.Model
, এই পুরোপুরি জরিমানা যেহেতু তারা একই ফাংশন ব্যবহার করা হয়।
print('Sequential.fit == keras.Model.fit')
print(tf.keras.Sequential.fit == tf.keras.Model.fit)
print('tf.keras.Sequential.train_step == keras.Model.train_step')
print(tf.keras.Sequential.train_step == tf.keras.Model.train_step)
Sequential.fit == keras.Model.fit True tf.keras.Sequential.train_step == keras.Model.train_step True
যাইহোক, যদি আপনার মডেল একটি হল এর উপশ্রেণী keras.Model
, সঙ্গে এটি মোড়কে MinDiffModel
কার্যকরভাবে স্বনির্ধারণ নষ্ট হয়ে যাবে।
class CustomModel(tf.keras.Model):
def train_step(self, **kwargs):
pass # Custom implementation.
print('CustomModel.train_step == keras.Model.train_step')
print(CustomModel.train_step == tf.keras.Model.train_step)
CustomModel.train_step == keras.Model.train_step False
এই আপনার ব্যবহার কেস হয়, তাহলে আপনি ব্যবহার করা উচিত নয় MinDiffModel
সরাসরি। পরিবর্তে, আপনি বর্ণনা অনুযায়ী এটা উপশ্রেণী করতে হবে স্বনির্ধারণ নির্দেশিকা ।
অতিরিক্ত সম্পদ
- সততা মূল্যায়ন উপর গভীরতা আলোচনায় একটি দেখুন ফর্সা সূচক নির্দেশিকা
- উপসম এবং MinDiff বিষয়ে সাধারণ তথ্যের জন্য, দেখুন উপসম ওভারভিউ ।
- MinDiff পার্শ্ববর্তী প্রয়োজনীয়তা উপর বিস্তারিত জানার জন্য দেখুন এই সহায়িকার ।
- Keras মধ্যে MinDiff ব্যবহার করে একটি এন্ড-টু-এন্ড টিউটোরিয়াল দেখার জন্য, দেখুন এই টিউটোরিয়াল ।