MinDiffModel এর সাথে MinDiff সংহত করা

ভূমিকা

আপনার মডেলে MinDiff সংহত করার দুটি ধাপ রয়েছে:

  1. তথ্য (মধ্যে আবৃত প্রস্তুত ইনপুট প্রস্তুতি গাইড )।

  2. পরিবর্তন বা একটি মডেল তৈরি করুন যা প্রশিক্ষণের সময় 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 প্রয়োগ করুন:

  1. MinDiff ছাড়াই আসল মডেল তৈরি করুন।
original_model = tutorials_utils.get_uci_model()
  1. একটি এটি মোড়ানো MinDiffModel
min_diff_model = min_diff.keras.MinDiffModel(
    original_model=original_model,
    loss=min_diff.losses.MMDLoss(),
    loss_weight=1)
  1. আপনি MinDiff ছাড়া এটি কম্পাইল করুন.
min_diff_model.compile(optimizer='adam', loss='binary_crossentropy')
  1. 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 সরাসরি। পরিবর্তে, আপনি বর্ণনা অনুযায়ী এটা উপশ্রেণী করতে হবে স্বনির্ধারণ নির্দেশিকা

অতিরিক্ত সম্পদ