TensorFlow 2.x . के साथ tf.Transform का उपयोग करना

tf.Transform के 0.30 रिलीज से शुरू होकर, डिफ़ॉल्ट व्यवहार TF 2.x SavedModel को निर्यात करना है जब तक कि TF 2.x व्यवहार स्पष्ट रूप से अक्षम न हो। यह पृष्ठ ट्रांसफ़ॉर्म ग्राफ़ को TensorFlow 2.x SavedModel के रूप में निर्यात करने के लिए tf.Transform उपयोग करने के लिए एक मार्गदर्शिका प्रदान करता है।

TF 2.x के साथ tf.Transform में नया

preprocessing_fn के भीतर केरस मॉडल लोड हो रहा है

कृपया केरस मॉडल लोड करने के लिए tft.make_and_track_object API का उपयोग करें जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।

def preprocessing_fn(inputs):
  keras_model = tft.make_and_track_object(lambda: tf.keras.models.load_model(...), name='_unique_name')
  ...
  return {'keras_model_output': keras_model(inputs[...])}

TF 2.x tf.hub मॉड्यूल का उपयोग करना

TF 2.x हब मॉड्यूल tf.Transform में तभी काम करते हैं जब preprocessing_fn पता लगाया जाता है और TF 2.x SavedModel के रूप में निर्यात किया जाता है (यह tensorflow_transform 0.30 से शुरू होने वाला डिफ़ॉल्ट व्यवहार है)। कृपया tf.hub मॉड्यूल लोड करने के लिए tft.make_and_track_object API का उपयोग करें जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।

def preprocessing_fn(inputs):
  hub_module = tft.make_and_track_object(lambda: hub.load(...))
  ...
  return {'hub_module_output': hub_module(inputs[...])}

संभावित प्रवासन मुद्दे

यदि मौजूदा tf.Transform पाइपलाइन को TF 1.x से TF 2.x में स्थानांतरित किया जाता है, तो निम्नलिखित समस्याओं का सामना करना पड़ सकता है:

रनटाइम त्रुटि: आपके preprocessing_fn में विश्लेषकों का क्रम गैर-नियतात्मक प्रतीत होता है।

TF 2.x में, उपयोगकर्ता द्वारा प्रदान किए गए preprocessing_fn कई बार पता लगाया जाता है। यदि टीएफटी विश्लेषकों का सामना करने का क्रम प्रत्येक ट्रेस के साथ बदलता है, तो यह त्रुटि उत्पन्न हो जाएगी। टीएफटी विश्लेषकों को लागू करने के क्रम में किसी भी गैर-नियतत्ववाद को हटाकर इसे ठीक किया जा सकता है।

transform_raw_features के आउटपुट में अपेक्षित सुविधा शामिल नहीं है।

उदाहरण अपवाद:

KeyError: \<feature key

या

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features पैरामीटर drop_unused_features अनदेखा करता है और ऐसा व्यवहार करता है मानो यह सत्य हो। कृपया इस एपीआई से आउटपुट डिक्शनरी के किसी भी उपयोग को अपडेट करें ताकि यह जांचा जा सके कि आप जिस कुंजी को पुनः प्राप्त करने का प्रयास कर रहे हैं वह इसमें मौजूद है या नहीं।

tf.estimator.BaselineClassifier को तालिका प्रारंभ न होने की त्रुटि दिखाई देती है।

उदाहरण अपवाद:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.

अनुमानक आधारित निष्पादक के साथ ट्रेनर के लिए समर्थन सर्वोत्तम प्रयास है। जबकि अन्य अनुमानकर्ता काम करते हैं, हमने बेसलाइनक्लासिफायर में तालिका आरंभीकरण के साथ समस्याएं देखी हैं। कृपया tf.Transform में TF 2.x को अक्षम करें

ज्ञात समस्याएँ/सुविधाएँ अभी तक समर्थित नहीं हैं

TFRecord प्रारूप में शब्दावलियाँ आउटपुट करना अभी तक समर्थित नहीं है।

tfrecord_gzip अभी तक tft.vocabulary (और अन्य शब्दावली एपीआई) में file_format पैरामीटर के लिए मान्य मान के रूप में समर्थित नहीं है।

व्यवहार परिवर्तन की विरासत को बरकरार रखना

यदि आपकी tf.Transform पाइपलाइन TF 2.x के साथ नहीं चलनी चाहिए, तो आप निम्नलिखित में से किसी एक तरीके से विरासत व्यवहार को बनाए रख सकते हैं:

  • tf.compat.v1.disable_v2_behavior() पर कॉल करके tf.Transform में TF2 को अक्षम करें
  • यदि tf.Transform एक स्टैंडअलोन लाइब्रेरी के रूप में या TFX में ट्रांसफॉर्म घटक के रूप में उपयोग किया जाता है, तो force_tf_compat_v1=True को tft_beam.Context में पास करना।