This page was translated by the Cloud Translation API.
Switch to English

টিএফএক্স-তে টেনসরফ্লো ২.০

TensorFlow 2.0 2019 মুক্তি পায় সঙ্গে, Keras এর টাইট ইন্টিগ্রেশন , উৎসুক সঞ্চালনের ডিফল্ট দ্বারা, এবং Pythonic ফাংশন মৃত্যুদন্ড , অন্যান্য মধ্যে নতুন বৈশিষ্ট্য ও উন্নতি

এই গাইড টিএফএক্স-এ টিএফ 2.x এর একটি বিস্তৃত প্রযুক্তিগত ওভারভিউ সরবরাহ করে।

কোন সংস্করণ ব্যবহার করবেন?

টিএফএক্স টেনসরফ্লো ২.x এর সাথে সামঞ্জস্যপূর্ণ এবং টেনসরফ্লো ১.x (বিশেষত এসটিমেটর) এর বিদ্যমান উচ্চ-স্তরের এপিআইগুলি কাজ চালিয়ে যায়।

টেনসরফ্লো ২.x এ নতুন প্রকল্প শুরু করুন

যেহেতু টেনসরফ্লো ২.x টেনসরফ্লো ১.x এর উচ্চ-স্তরের ক্ষমতা ধরে রাখে, নতুন বৈশিষ্ট্যগুলি ব্যবহার করার পরিকল্পনা না করলেও নতুন প্রকল্পগুলিতে পুরানো সংস্করণটি ব্যবহার করার কোনও সুবিধা নেই plan

অতএব, আপনি যদি নতুন কোনও টিএফএক্স প্রকল্প শুরু করেন তবে আমরা আপনাকে টেনসরফ্লো ২.x ব্যবহার করার পরামর্শ দিচ্ছি কেরাস এবং অন্যান্য নতুন বৈশিষ্ট্যগুলি উপলভ্য হয়ে ওঠার সম্পূর্ণ সমর্থন হিসাবে আপনি আপনার কোডটি পরে আপডেট করতে চাইতে পারেন এবং টেনসরফ্লো ২.x এর সাথে টেনসরফ্লো ২.x থেকে আপগ্রেড করার চেষ্টা না করে পরিবর্তনের সুযোগটি আরও সীমাবদ্ধ থাকবে you ভবিষ্যৎ.

বিদ্যমান প্রকল্পগুলি টেনসরফ্লো ২.x এ রূপান্তর করা

টেনসরফ্লো 1.x এর জন্য লিখিত কোডটি মূলত টেনসরফ্লো ২.x এর সাথে সামঞ্জস্যপূর্ণ এবং টিএফএক্স-এ কাজ চালিয়ে যাবে।

তবে, আপনি যদি TF 2.x এ উপলব্ধ হওয়ার সাথে সাথে উন্নতি এবং নতুন বৈশিষ্ট্যগুলির সুবিধা নিতে চান, আপনি টিএফ 2.x এ স্থানান্তরিত করার জন্য নির্দেশাবলী অনুসরণ করতে পারেন।

অনুমানক

এসটিমেটর এপিআই টেনসরফ্লো ২.x এ ধরে রাখা হয়েছে, তবে নতুন বৈশিষ্ট্য এবং বিকাশের কেন্দ্রবিন্দু নয়। টেনসরফ্লো 1.x বা 2.x এস্টিমেটর ব্যবহার করে লিখিত কোড টিএফএক্স-তে প্রত্যাশা অনুযায়ী কাজ করা চালিয়ে যাবে।

খাঁটি অনুমানক ব্যবহার করে এখানে একটি শেষ থেকে শেষের টিএফএক্স উদাহরণ রয়েছে: ট্যাক্সি উদাহরণ (অনুমানক)

model_to_estimator সহ কেরাস

কেরাস মডেলগুলিকে tf.keras.estimator.model_to_estimator ফাংশন দিয়ে মুড়িয়ে দেওয়া যেতে পারে, যা তাদেরকে tf.keras.estimator.model_to_estimator হিসাবে কাজ করার অনুমতি দেয়। এটি ব্যবহার করতে:

  1. একটি কেরাস মডেল তৈরি করুন।
  2. সংকলিত মডেলটিকে model_to_estimator পাস করুন।
  3. model_to_estimator ফলাফলটি ব্যবহার করুন, আপনি সাধারণত model_to_estimator ব্যবহার করবেন।
# Build a Keras model.
def _keras_model_builder():
  """Creates a Keras model."""
  ...

  model = tf.keras.Model(inputs=inputs, outputs=output)
  model.compile()

  return model


# Write a typical trainer function
def trainer_fn(trainer_fn_args, schema):
  """Build the estimator, using model_to_estimator."""
  ...

  # Model to estimator
  estimator = tf.keras.estimator.model_to_estimator(
      keras_model=_keras_model_builder(), config=run_config)

  return {
      'estimator': estimator,
      ...
  }

ট্রেনারের ব্যবহারকারী মডিউল ফাইল ব্যতীত বাকি পাইপলাইন অপরিবর্তিত রয়েছে। মডেল_ট_স্টিমেটরের সাথে কেরাস ব্যবহার করে এখানে শেষের শেষে টিএফএক্সের উদাহরণ দেওয়া হয়েছে: আইরিস উদাহরণ (মডেল_ টু_এসটিমেটার)

নেটিভ কেরাস (অর্থাত্ model_to_estimator কেরাস)

উদাহরণ এবং কোলাব

দেশীয় কেরাসের সাথে এখানে বেশ কয়েকটি উদাহরণ রয়েছে:

আমাদের কাছে প্রতি-উপাদান কেরাস কলাব রয়েছে

টিএফএক্স উপাদান

নিম্নলিখিত বিভাগগুলি ব্যাখ্যা করে যে সম্পর্কিত টিএফএক্স উপাদানগুলি কেরাসকে কীভাবে সমর্থন করে।

রূপান্তর

রূপান্তরটির বর্তমানে কেরাস মডেলগুলির জন্য পরীক্ষামূলক সমর্থন রয়েছে।

ট্রান্সফর্ম উপাদানটি নিজেই পরিবর্তন ছাড়াই দেশীয় কেরাসের জন্য ব্যবহার করা যেতে পারে। preprocessing_fn সংজ্ঞা, অবশেষ একই ব্যবহার TensorFlow এবং tf.Transform অপস।

দেশীয় কেরাসের জন্য পরিবেশন ফাংশন এবং ইভাল ফাংশন পরিবর্তিত হয়। নিম্নলিখিত ট্রেনার এবং মূল্যায়ন বিভাগে বিশদ আলোচনা করা হবে।

প্রশিক্ষক

নেটিভ GenericExecutor কনফিগার করতে, GenericExecutor ডিফল্ট এস্টিমেটার ভিত্তিক নির্বাহককে প্রতিস্থাপনের জন্য প্রশিক্ষক উপাদানটির জন্য সেট করা দরকার। বিশদ জন্য, এখানে চেক করুন

ট্রান্সফর্মের সাথে কেরাস মডিউল ফাইল

প্রশিক্ষণ মডিউল ফাইল আবশ্যক রয়েছে run_fn যার দ্বারা ডাকা হবে GenericExecutor , একটি সাধারন Keras run_fn ভালো দেখাবে:

def run_fn(fn_args: TrainerFnArgs):
  """Train the model based on given args.

  Args:
    fn_args: Holds args used to train the model as name/value pairs.
  """
  tf_transform_output = tft.TFTransformOutput(fn_args.transform_output)

  # Train and eval files contains transformed examples.
  # _input_fn read dataset based on transformed schema from tft.
  train_dataset = _input_fn(fn_args.train_files, fn_args.data_accessor,
                            tf_transform_output.transformed_metadata.schema)
  eval_dataset = _input_fn(fn_args.eval_files, fn_args.data_accessor,
                           tf_transform_output.transformed_metadata.schema)

  model = _build_keras_model()

  model.fit(
      train_dataset,
      steps_per_epoch=fn_args.train_steps,
      validation_data=eval_dataset,
      validation_steps=fn_args.eval_steps)

  signatures = {
      'serving_default':
          _get_serve_tf_examples_fn(model,
                                    tf_transform_output).get_concrete_function(
                                        tf.TensorSpec(
                                            shape=[None],
                                            dtype=tf.string,
                                            name='examples')),
  }
  model.save(fn_args.serving_model_dir, save_format='tf', signatures=signatures)

উপরের run_fn , প্রশিক্ষিত মডেল রফতানি করার সময় একটি পরিবেশনকারী স্বাক্ষর প্রয়োজন যাতে মডেল পূর্বাভাসের জন্য কাঁচা উদাহরণ নিতে পারে। একটি সাধারণ পরিবেশন ফাংশন এর মতো দেখতে পাবেন:

def _get_serve_tf_examples_fn(model, tf_transform_output):
  """Returns a function that parses a serialized tf.Example."""

  # the layer is added as an attribute to the model in order to make sure that
  # the model assets are handled correctly when exporting.
  model.tft_layer = tf_transform_output.transform_features_layer()

  @tf.function
  def serve_tf_examples_fn(serialized_tf_examples):
    """Returns the output to be used in the serving signature."""
    feature_spec = tf_transform_output.raw_feature_spec()
    feature_spec.pop(_LABEL_KEY)
    parsed_features = tf.io.parse_example(serialized_tf_examples, feature_spec)

    transformed_features = model.tft_layer(parsed_features)

    return model(transformed_features)

  return serve_tf_examples_fn

উপরের পরিবেশন ফাংশনে, tf.Transform রূপান্তরগুলি tft.TransformFeaturesLayer স্তর ব্যবহার করে অনুমানের জন্য কাঁচা ডেটা প্রয়োগ করা দরকার। পূর্ববর্তী _serving_input_receiver_fn যা _serving_input_receiver_fn জন্য প্রয়োজনীয় ছিল _serving_input_receiver_fn সাথে আর তার প্রয়োজন হবে না।

রূপান্তর ছাড়াই কেরাস মডিউল ফাইল

এটি উপরে প্রদর্শিত মডিউল ফাইলের মতো, তবে রূপান্তর ছাড়া:

def _get_serve_tf_examples_fn(model, schema):

  @tf.function
  def serve_tf_examples_fn(serialized_tf_examples):
    feature_spec = _get_raw_feature_spec(schema)
    feature_spec.pop(_LABEL_KEY)
    parsed_features = tf.io.parse_example(serialized_tf_examples, feature_spec)
    return model(parsed_features)

  return serve_tf_examples_fn


def run_fn(fn_args: TrainerFnArgs):
  schema = io_utils.parse_pbtxt_file(fn_args.schema_file, schema_pb2.Schema())

  # Train and eval files contains raw examples.
  # _input_fn reads the dataset based on raw data schema.
  train_dataset = _input_fn(fn_args.train_files, fn_args.data_accessor, schema)
  eval_dataset = _input_fn(fn_args.eval_files, fn_args.data_accessor, schema)

  model = _build_keras_model()

  model.fit(
      train_dataset,
      steps_per_epoch=fn_args.train_steps,
      validation_data=eval_dataset,
      validation_steps=fn_args.eval_steps)

  signatures = {
      'serving_default':
          _get_serve_tf_examples_fn(model, schema).get_concrete_function(
              tf.TensorSpec(shape=[None], dtype=tf.string, name='examples')),
  }
  model.save(fn_args.serving_model_dir, save_format='tf', signatures=signatures)
tf.distribute.Strategy

এই সময়ে TFX শুধুমাত্র একক কর্মী কৌশল (যেমন, সমর্থন MirroredStrategy , OneDeviceStrategy )।

বিতরণ কৌশলটি ব্যবহার করার জন্য, একটি উপযুক্ত tf.distribute.Strategy তৈরি করুন এবং কেরাস মডেল তৈরি এবং সংকলনকে কৌশল স্কোপের ভিতরে নিয়ে যান।

উদাহরণস্বরূপ, উপরের model = _build_keras_model() সাথে প্রতিস্থাপন করুন:

  mirrored_strategy = tf.distribute.MirroredStrategy()
  with mirrored_strategy.scope():
    model = _build_keras_model()

  # Rest of the code can be unchanged.
  model.fit(...)

ডিভাইস (CPU- র / GPU) দ্বারা ব্যবহৃত যাচাই করতে MirroredStrategy সক্ষম তথ্য স্তর tensorflow লগিং:

import logging
logging.getLogger("tensorflow").setLevel(logging.INFO)

এবং আপনি লগের মধ্যে Using MirroredStrategy with devices (...) দেখতে সক্ষম হবেন।

মূল্যায়নকারী

টিএফএমএ v0.2x এ, মডেলভালিডেটর এবং মূল্যায়নকারীকে একক নতুন মূল্যায়নকারী উপাদান হিসাবে একত্রিত করা হয়েছে। নতুন মূল্যায়নকারী উপাদানটি একক মডেল মূল্যায়ন উভয়ই করতে পারে এবং পূর্ববর্তী মডেলের তুলনায় বর্তমান মডেলটিকে বৈধতা দিতে পারে। এই পরিবর্তনের সাথে, পুশার উপাদান এখন মডেলভালিডেটরের পরিবর্তে মূল্যায়নকারী থেকে একটি আশীর্বাদ ফলাফল গ্রহণ করে।

নতুন মূল্যায়নকারী কেরাস মডেলগুলির পাশাপাশি অনুমানের মডেলগুলিকে সমর্থন করে। _eval_input_receiver_fn এবং savedভাল সেভ মডেল যা পূর্বে প্রয়োজন ছিল _eval_input_receiver_fn আর প্রয়োজন হবে না, যেহেতু SavedModel এখন একই SavedModel উপর ভিত্তি করে যা SavedModel জন্য ব্যবহৃত হয়।

আরও তথ্যের জন্য মূল্যায়নকারী দেখুন