ডেটাসেট সংস্করণ

সংজ্ঞা

সংস্করণ বিভিন্ন অর্থ উল্লেখ করতে পারে:

  • TFDS API সংস্করণ (পিপ সংস্করণ): tfds. version
  • সর্বজনীন ডেটাসেট সংস্করণ, TFDS থেকে স্বাধীন (যেমন Voc2007 , Voc2012)। TFDS-এ প্রতিটি পাবলিক ডেটাসেট সংস্করণ একটি স্বাধীন ডেটাসেট হিসাবে প্রয়োগ করা উচিত:
  • TFDS-এ ডেটাসেট জেনারেশন কোড সংস্করণ ( my_dataset:1.0.0 ): উদাহরণস্বরূপ, voc/2007 এর TFDS বাস্তবায়নে একটি বাগ পাওয়া গেলে, voc.py জেনারেশন কোড আপডেট করা হবে ( voc/2007:1.0.0 - > voc/2007:2.0.0 )।

এই গাইডের বাকি অংশ শুধুমাত্র শেষ সংজ্ঞার উপর ফোকাস করে (TFDS সংগ্রহস্থলে ডেটাসেট কোড সংস্করণ)।

সমর্থিত সংস্করণ

একটি সাধারণ নিয়ম হিসাবে:

  • শুধুমাত্র সর্বশেষ বর্তমান সংস্করণ তৈরি করা যেতে পারে.
  • পূর্বে তৈরি করা সমস্ত ডেটাসেট পড়া যেতে পারে (দ্রষ্টব্য: এর জন্য TFDS 4+ দিয়ে তৈরি করা ডেটাসেট প্রয়োজন)।
builder = tfds.builder('my_dataset')
builder.info.version  # Current version is: '2.0.0'

# download and load the last available version (2.0.0)
ds = tfds.load('my_dataset')

# Explicitly load a previous version (only works if
# `~/tensorflow_datasets/my_dataset/1.0.0/` already exists)
ds = tfds.load('my_dataset:1.0.0')

শব্দার্থিক

TFDS-এ সংজ্ঞায়িত প্রতিটি DatasetBuilder একটি সংস্করণ সহ আসে, উদাহরণস্বরূপ:

class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version('2.0.0')
  RELEASE_NOTES = {
      '1.0.0': 'Initial release',
      '2.0.0': 'Update dead download url',
  }

সংস্করণটি সেমান্টিক সংস্করণ 2.0.0 অনুসরণ করে : MAJOR.MINOR.PATCH । সংস্করণটির উদ্দেশ্য হল পুনরুত্পাদনযোগ্যতার গ্যারান্টি দিতে সক্ষম হওয়া: একটি নির্দিষ্ট সংস্করণে একটি প্রদত্ত ডেটাসেট লোড করলে একই ডেটা পাওয়া যায়। আরো নির্দিষ্টভাবে:

  • যদি PATCH সংস্করণ বৃদ্ধি করা হয়, ক্লায়েন্ট দ্বারা পড়া ডেটা একই, যদিও ডেটা ডিস্কে ভিন্নভাবে সিরিয়ালাইজ করা হতে পারে, বা মেটাডেটা পরিবর্তিত হতে পারে। যেকোনো প্রদত্ত স্লাইসের জন্য, স্লাইসিং API একই রেকর্ডের সেট প্রদান করে।
  • যদি MINOR সংস্করণ বৃদ্ধি করা হয়, ক্লায়েন্ট দ্বারা পড়া বিদ্যমান ডেটা একই, তবে অতিরিক্ত ডেটা (প্রতিটি রেকর্ডে বৈশিষ্ট্য) রয়েছে। যেকোনো প্রদত্ত স্লাইসের জন্য, স্লাইসিং API একই রেকর্ডের সেট প্রদান করে।
  • যদি MAJOR সংস্করণ বৃদ্ধি করা হয়, বিদ্যমান ডেটা পরিবর্তন করা হয়েছে এবং/অথবা স্লাইসিং API একটি প্রদত্ত স্লাইসের জন্য রেকর্ডের একই সেটটি ফেরত দেয় না।

যখন TFDS লাইব্রেরিতে একটি কোড পরিবর্তন করা হয় এবং সেই কোড পরিবর্তনটি ডেটাসেটকে সিরিয়ালাইজ করা এবং/অথবা ক্লায়েন্ট দ্বারা পড়ার পদ্ধতিকে প্রভাবিত করে, তখন উপরের নির্দেশিকা অনুসারে সংশ্লিষ্ট নির্মাতা সংস্করণটি বৃদ্ধি করা হয়।

মনে রাখবেন যে উপরের শব্দার্থকটি সর্বোত্তম প্রচেষ্টা, এবং সংস্করণটি বৃদ্ধি না করার সময় একটি ডেটাসেটকে প্রভাবিত করে এমন অ-লক্ষ্য বাগ থাকতে পারে। এই ধরনের বাগগুলি শেষ পর্যন্ত সংশোধন করা হয়েছে, কিন্তু আপনি যদি সংস্করণের উপর খুব বেশি নির্ভর করেন, আমরা আপনাকে একটি প্রকাশিত সংস্করণ থেকে TFDS ব্যবহার করার পরামর্শ দিই ( HEAD এর বিপরীতে)।

এছাড়াও মনে রাখবেন যে কিছু ডেটাসেটে TFDS সংস্করণ থেকে স্বাধীন আরেকটি সংস্করণ স্কিম আছে। উদাহরণস্বরূপ, ওপেন ইমেজ ডেটাসেটের বেশ কয়েকটি সংস্করণ রয়েছে এবং TFDS-এ সংশ্লিষ্ট নির্মাতারা হল open_images_v4 , open_images_v5 , ...

একটি নির্দিষ্ট সংস্করণ লোড হচ্ছে

একটি ডেটাসেট বা DatasetBuilder লোড করার সময়, আপনি ব্যবহার করার জন্য সংস্করণ নির্দিষ্ট করতে পারেন৷ উদাহরণ স্বরূপ:

tfds.load('imagenet2012:2.0.1')
tfds.builder('imagenet2012:2.0.1')

tfds.load('imagenet2012:2.0.0')  # Error: unsupported version.

# Resolves to 3.0.0 for now, but would resolve to 3.1.1 if when added.
tfds.load('imagenet2012:3.*.*')

যদি কোনো প্রকাশনার জন্য TFDS ব্যবহার করেন, তাহলে আমরা আপনাকে পরামর্শ দিই:

  • শুধুমাত্র সংস্করণের MAJOR উপাদান ঠিক করুন ;
  • আপনার ফলাফলে ডেটাসেটের কোন সংস্করণ ব্যবহার করা হয়েছে তার বিজ্ঞাপন দিন।

এটি করা আপনার ভবিষ্যতের স্ব, আপনার পাঠক এবং পর্যালোচকদের জন্য আপনার ফলাফলগুলি পুনরুত্পাদন করা সহজ করে তুলবে৷

BUILDER_CONFIGS এবং সংস্করণ

কিছু ডেটাসেট বিভিন্ন BUILDER_CONFIGS সংজ্ঞায়িত করে। যখন এটি হয়, version এবং supported_versions কনফিগার অবজেক্টে সংজ্ঞায়িত করা হয়। তা ছাড়া, শব্দার্থবিদ্যা এবং ব্যবহার অভিন্ন। উদাহরণ স্বরূপ:

class OpenImagesV4(tfds.core.GeneratorBasedBuilder):

  BUILDER_CONFIGS = [
      OpenImagesV4Config(
          name='original',
          version=tfds.core.Version('0.2.0'),
          supported_versions=[
            tfds.core.Version('1.0.0', "Major change in data"),
          ],
          description='Images at their original resolution and quality.'),
      ...
  ]

tfds.load('open_images_v4/original:1.*.*')

পরীক্ষামূলক সংস্করণ

একই সময়ে 2টি সংস্করণ তৈরি করার অনুমতি দেওয়া সম্ভব। একটি ডিফল্ট এবং একটি পরীক্ষামূলক সংস্করণ। উদাহরণ স্বরূপ:

class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version("1.0.0")  # Default version
  SUPPORTED_VERSIONS = [
      tfds.core.Version("2.0.0"),  # Experimental version
  ]


# Download and load default version 1.0.0
builder = tfds.builder('mnist')

#  Download and load experimental version 2.0.0
builder = tfds.builder('mnist', version='experimental_latest')

কোডে, আপনাকে 2টি সংস্করণ সমর্থন করার বিষয়টি নিশ্চিত করতে হবে:

class MNIST(tfds.core.GeneratorBasedBuilder):

  ...

  def _generate_examples(self, path):
    if self.info.version >= '2.0.0':
      ...
    else:
      ...