يوم مجتمع ML هو 9 نوفمبر! الانضمام إلينا للحصول على التحديثات من TensorFlow، JAX، وأكثر معرفة المزيد

أعد كتابة رموز TF 1.x و Compatible.v1 API تلقائيًا

عرض على TensorFlow.org تشغيل في Google Colab عرض المصدر على جيثب تحميل دفتر

يتضمن الإصدار 2.x TensorFlow العديد من التغييرات API من TF 1.x و ل tf.compat.v1 واجهات برمجة التطبيقات، مثل إعادة ترتيب الحجج، وإعادة تسمية الرموز والقيم الافتراضية تغيير معلمات. سيكون إجراء كل هذه التعديلات يدويًا مملاً وعرضة للخطأ. لتبسيط التغييرات، وجعل الانتقال إلى الإصدار 2.x TF بشكل سلس قدر الإمكان، أنشأت فريق TensorFlow و tf_upgrade_v2 فائدة إلى رمز إرث مساعدة الانتقال إلى API الجديد.

الاستخدام النموذجي مثل هذا:

tf_upgrade_v2 \
  --intree my_project/ \
  --outtree my_project_v2/ \
  --reportfile report.txt

سيؤدي ذلك إلى تسريع عملية الترقية عن طريق تحويل البرامج النصية الحالية لـ TensorFlow 1.x Python إلى TensorFlow 2.x.

يقوم البرنامج النصي للتحويل بأتمتة العديد من عمليات تحويل API الميكانيكية ، على الرغم من أنه لا يمكن ترحيل العديد من واجهات برمجة التطبيقات تلقائيًا. كما أنه غير قادر على جعل الكود الخاص بك متوافقًا تمامًا مع سلوكيات وواجهات برمجة تطبيقات TF2. لذلك ، فهي ليست سوى جزء من رحلة الهجرة الخاصة بك.

وحدات التوافق

لا يمكن ترقية رموز معينة لواجهة برمجة التطبيقات ببساطة عن طريق استخدام استبدال السلسلة. تلك التي لا يمكن أن تتم ترقية تلقائيا سوف يتم تعيينها إلى مواقعها في compat.v1 حدة. هذه الوحدة محل حرف TF 1.X مثل tf.foo مع تعادل tf.compat.v1.foo المرجعية. إذا كنت تستخدم بالفعل compat.v1 واجهات برمجة التطبيقات عن طريق استيراد TF عبر import tensorflow.compat.v1 as tf ، و tf_upgrade_v2 سوف النصي محاولة لتحويل هذه الأعراف إلى واجهات برمجة التطبيقات غير المتوافق حيثما كان ذلك ممكنا. ملاحظة أنه في حين أن بعض compat.v1 واجهات برمجة التطبيقات متوافقة مع السلوكيات TF2.x، والعديد منهم لا. لذلك، من المستحسن أن قمت يدويا استبدال تدقيق وتهاجر منها إلى واجهات برمجة التطبيقات الجديدة في tf.* مساحة الاسم بدلا من tf.compat.v1 مساحة في أسرع وقت ممكن.

بسبب TensorFlow الإستنكار وحدة الإصدار 2.x (على سبيل المثال، tf.flags و tf.contrib )، لا يمكن عمل بعض التغييرات في جميع أنحاء عن طريق التحول إلى compat.v1 . رفع مستوى هذا الرمز قد تتطلب استخدام مكتبة إضافية (على سبيل المثال، absl.flags ) أو التحول إلى حزمة في tensorflow / إضافات .

يوضح باقي هذا الدليل كيفية استخدام البرنامج النصي لإعادة كتابة الرمز. في حين أن البرنامج النصي سهل الاستخدام ، يوصى بشدة باستخدام البرنامج النصي كجزء من العملية التالية:

  1. اختبار وحدة: تأكد من أن الرمز الذي تقوم بالترقية لديه اختبار جناح الوحدة مع تغطية معقولة. هذا هو كود Python ، لذلك لن تحميك اللغة من العديد من فئات الأخطاء. تأكد أيضًا من ترقية أي تبعية لديك بالفعل لتكون متوافقة مع TensorFlow 2.x.

  2. تثبيت TensorFlow 1.15: ترقية TensorFlow الخاص بك إلى أحدث إصدار TensorFlow 1.X، 1.15 على الأقل. ويشمل هذا النهائي API TensorFlow 2.0 في tf.compat.v2 .

  3. اختبار مع 1.15: ضمان وحدة الاختبارات الخاصة بك تمر في هذه المرحلة. ستقوم بتشغيلها بشكل متكرر أثناء الترقية ، لذا من المهم البدء من اللون الأخضر.

  4. تشغيل البرنامج النصي ترقية: تشغيل tf_upgrade_v2 على هاتفك شجرة المصدر بالكامل، وتضمنت الاختبارات. سيؤدي هذا إلى ترقية التعليمات البرمجية الخاصة بك إلى تنسيق يستخدم فيه الرموز المتوفرة فقط في TensorFlow 2.0. سيتم الوصول حرف إهمال مع tf.compat.v1 . سيتطلب ذلك في النهاية اهتمامًا يدويًا ، ولكن ليس على الفور.

  5. قم بإجراء اختبارات المحولة مع TensorFlow 1.15: كود الخاص بك ينبغي أن لا تزال تعمل بشكل جيد في TensorFlow 1.15. قم بتشغيل اختبارات الوحدة الخاصة بك مرة أخرى. أي خطأ في الاختبارات الخاصة بك هنا يعني أن هناك خطأ في البرنامج النصي للترقية. واسمحوا لنا أن نعرف .

  6. مراجعة تقرير الترقية لالتحذيرات والأخطاء: السيناريو يكتب ملف التقرير أن يفسر أي تحويلات يجب مضاعفة الاختيار، أو أي عمل اليدوي تحتاج إلى أن تأخذ. على سبيل المثال: ستتطلب أي مثيلات متبقية من المساهمات إجراء يدويًا لإزالتها. يرجى الرجوع إلى RFC لمزيد من التعليمات .

  7. تثبيت TensorFlow الإصدار 2.x: عند هذه النقطة يجب أن تكون آمنة للتبديل إلى TensorFlow الإصدار 2.x الثنائيات، حتى لو كنت تعمل مع السلوكيات تراث

  8. اختبار مع v1.disable_v2_behavior : إعادة تشغيل الاختبارات الخاصة بك مع v1.disable_v2_behavior() في وظيفة الرئيسية الاختبارات "يجب أن تعطي نفس النتائج كما يعمل تحت 1.15.

  9. تمكين V2 السلوك: الآن بعد أن الاختبارات الخاصة بك تعمل باستخدام الثنائيات TF2، يمكنك الآن أن تبدأ ترحيل التعليمات البرمجية لتجنب tf.estimator الصورة وفقط باستخدام دعم TF2 السلوكيات (مع أي سلوك TF2 تعطيل). انظر أدلة الهجرة للحصول على التفاصيل.

باستخدام-إعادة كتابة رمز tf_upgrade_v2 النصي

اقامة

قبل البدء تأكد من تثبيت TensorFlow 2.x.

import tensorflow as tf

print(tf.__version__)
2.6.0

استنساخ tensorflow / نماذج بوابة مستودع بحيث يكون لديك بعض التعليمات البرمجية للاختبار على:

git clone --branch r1.13.0 --depth 1 https://github.com/tensorflow/models
Cloning into 'models'...
remote: Enumerating objects: 2927, done.[K
remote: Counting objects: 100% (2927/2927), done.[K
remote: Compressing objects: 100% (2428/2428), done.[K
remote: Total 2927 (delta 504), reused 2113 (delta 424), pack-reused 0[K
Receiving objects: 100% (2927/2927), 369.04 MiB | 27.58 MiB/s, done.
Resolving deltas: 100% (504/504), done.
Checking out files: 100% (2768/2768), done.

اقرأ التعليمات

يجب تثبيت البرنامج النصي باستخدام TensorFlow. هذه هي المساعدة المضمنة:

tf_upgrade_v2 -h
usage: tf_upgrade_v2 [-h] [--infile INPUT_FILE] [--outfile OUTPUT_FILE]
                     [--intree INPUT_TREE] [--outtree OUTPUT_TREE]
                     [--copyotherfiles COPY_OTHER_FILES] [--inplace]
                     [--no_import_rename] [--no_upgrade_compat_v1_import]
                     [--reportfile REPORT_FILENAME] [--mode {DEFAULT,SAFETY}]
                     [--print_all]

Convert a TensorFlow Python file from 1.x to 2.0

Simple usage:
  tf_upgrade_v2.py --infile foo.py --outfile bar.py
  tf_upgrade_v2.py --infile foo.ipynb --outfile bar.ipynb
  tf_upgrade_v2.py --intree ~/code/old --outtree ~/code/new

optional arguments:
  -h, --help            show this help message and exit
  --infile INPUT_FILE   If converting a single file, the name of the file to
                        convert
  --outfile OUTPUT_FILE
                        If converting a single file, the output filename.
  --intree INPUT_TREE   If converting a whole tree of files, the directory to
                        read from (relative or absolute).
  --outtree OUTPUT_TREE
                        If converting a whole tree of files, the output
                        directory (relative or absolute).
  --copyotherfiles COPY_OTHER_FILES
                        If converting a whole tree of files, whether to copy
                        the other files.
  --inplace             If converting a set of files, whether to allow the
                        conversion to be performed on the input files.
  --no_import_rename    Not to rename import to compat.v2 explicitly.
  --no_upgrade_compat_v1_import
                        If specified, don't upgrade explicit imports of
                        `tensorflow.compat.v1 as tf` to the v2 APIs.
                        Otherwise, explicit imports of the form
                        `tensorflow.compat.v1 as tf` will be upgraded.
  --reportfile REPORT_FILENAME
                        The name of the file where the report log is
                        stored.(default: report.txt)
  --mode {DEFAULT,SAFETY}
                        Upgrade script mode. Supported modes: DEFAULT: Perform
                        only straightforward conversions to upgrade to 2.0. In
                        more difficult cases, switch to use compat.v1. SAFETY:
                        Keep 1.* code intact and import compat.v1 module.
  --print_all           Print full log to stdout instead of just printing
                        errors

مثال على رمز TF1

إليك برنامج نصي بسيط TensorFlow 1.0:

head -n 65 models/samples/cookbook/regression/custom_regression.py | tail -n 10
# Calculate loss using mean squared error
  average_loss = tf.losses.mean_squared_error(labels, predictions)

  # Pre-made estimators use the total_loss instead of the average,
  # so report total_loss for compatibility.
  batch_size = tf.shape(labels)[0]
  total_loss = tf.to_float(batch_size) * average_loss

  if mode == tf.estimator.ModeKeys.TRAIN:
    optimizer = params.get("optimizer", tf.train.AdamOptimizer)

مع تثبيت TensorFlow 2.x ، فإنه لا يعمل:

(cd models/samples/cookbook/regression && python custom_regression.py)
Traceback (most recent call last):
  File "custom_regression.py", line 162, in <module>
    tf.logging.set_verbosity(tf.logging.INFO)
AttributeError: module 'tensorflow' has no attribute 'logging'

ملف واحد

يمكن تشغيل البرنامج النصي على ملف Python واحد:

!tf_upgrade_v2 \
  --infile models/samples/cookbook/regression/custom_regression.py \
  --outfile /tmp/custom_regression_v2.py
INFO line 38:8: Renamed 'tf.feature_column.input_layer' to 'tf.compat.v1.feature_column.input_layer'
INFO line 43:10: Renamed 'tf.layers.dense' to 'tf.compat.v1.layers.dense'
INFO line 46:17: Renamed 'tf.layers.dense' to 'tf.compat.v1.layers.dense'
INFO line 57:17: tf.losses.mean_squared_error requires manual check. tf.losses have been replaced with object oriented versions in TF 2.0 and after. The loss function calls have been converted to compat.v1 for backward compatibility. Please update these calls to the TF 2.0 versions.
INFO line 57:17: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
INFO line 61:15: Added keywords to args of function 'tf.shape'
INFO line 62:15: Changed tf.to_float call to tf.cast(..., dtype=tf.float32).
INFO line 65:40: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
INFO line 68:39: Renamed 'tf.train.get_global_step' to 'tf.compat.v1.train.get_global_step'
INFO line 83:9: tf.metrics.root_mean_squared_error requires manual check. tf.metrics have been replaced with object oriented versions in TF 2.0 and after. The metric function calls have been converted to compat.v1 for backward compatibility. Please update these calls to the TF 2.0 versions.
INFO line 83:9: Renamed 'tf.metrics.root_mean_squared_error' to 'tf.compat.v1.metrics.root_mean_squared_error'
INFO line 142:23: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
INFO line 162:2: Renamed 'tf.logging.set_verbosity' to 'tf.compat.v1.logging.set_verbosity'
INFO line 162:27: Renamed 'tf.logging.INFO' to 'tf.compat.v1.logging.INFO'
INFO line 163:2: Renamed 'tf.app.run' to 'tf.compat.v1.app.run'
TensorFlow 2.0 Upgrade Script
-----------------------------
Converted 1 files
Detected 0 issues that require attention
--------------------------------------------------------------------------------


Make sure to read the detailed log 'report.txt'

سيقوم البرنامج النصي بطباعة الأخطاء إذا لم يتمكن من العثور على إصلاح للرمز.

شجرة الدليل

ستستخدم المشاريع النموذجية ، بما في ذلك هذا المثال البسيط ، أكثر من ملف واحد. تريد عادةً تحديث حزمة كاملة ، لذلك يمكن أيضًا تشغيل البرنامج النصي على شجرة دليل:

# update the .py files and copy all the other files to the outtree
!tf_upgrade_v2 \
    --intree models/samples/cookbook/regression/ \
    --outtree regression_v2/ \
    --reportfile tree_report.txt
INFO line 82:10: tf.estimator.LinearRegressor: Default value of loss_reduction has been changed to SUM_OVER_BATCH_SIZE; inserting old default value tf.keras.losses.Reduction.SUM.

INFO line 105:2: Renamed 'tf.logging.set_verbosity' to 'tf.compat.v1.logging.set_verbosity'
INFO line 105:27: Renamed 'tf.logging.INFO' to 'tf.compat.v1.logging.INFO'
INFO line 106:2: Renamed 'tf.app.run' to 'tf.compat.v1.app.run'
INFO line 38:8: Renamed 'tf.feature_column.input_layer' to 'tf.compat.v1.feature_column.input_layer'
INFO line 43:10: Renamed 'tf.layers.dense' to 'tf.compat.v1.layers.dense'
INFO line 46:17: Renamed 'tf.layers.dense' to 'tf.compat.v1.layers.dense'
INFO line 57:17: tf.losses.mean_squared_error requires manual check. tf.losses have been replaced with object oriented versions in TF 2.0 and after. The loss function calls have been converted to compat.v1 for backward compatibility. Please update these calls to the TF 2.0 versions.
INFO line 57:17: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
INFO line 61:15: Added keywords to args of function 'tf.shape'
INFO line 62:15: Changed tf.to_float call to tf.cast(..., dtype=tf.float32).
INFO line 65:40: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
INFO line 68:39: Renamed 'tf.train.get_global_step' to 'tf.compat.v1.train.get_global_step'
INFO line 83:9: tf.metrics.root_mean_squared_error requires manual check. tf.metrics have been replaced with object oriented versions in TF 2.0 and after. The metric function calls have been converted to compat.v1 for backward compatibility. Please update these calls to the TF 2.0 versions.
INFO line 83:9: Renamed 'tf.metrics.root_mean_squared_error' to 'tf.compat.v1.metrics.root_mean_squared_error'
INFO line 142:23: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
INFO line 162:2: Renamed 'tf.logging.set_verbosity' to 'tf.compat.v1.logging.set_verbosity'
INFO line 162:27: Renamed 'tf.logging.INFO' to 'tf.compat.v1.logging.INFO'
INFO line 163:2: Renamed 'tf.app.run' to 'tf.compat.v1.app.run'
INFO line 58:10: tf.estimator.LinearRegressor: Default value of loss_reduction has been changed to SUM_OVER_BATCH_SIZE; inserting old default value tf.keras.losses.Reduction.SUM.

INFO line 101:2: Renamed 'tf.logging.set_verbosity' to 'tf.compat.v1.logging.set_verbosity'
INFO line 101:27: Renamed 'tf.logging.INFO' to 'tf.compat.v1.logging.INFO'
INFO line 102:2: Renamed 'tf.app.run' to 'tf.compat.v1.app.run'
INFO line 72:10: tf.estimator.DNNRegressor: Default value of loss_reduction has been changed to SUM_OVER_BATCH_SIZE; inserting old default value tf.keras.losses.Reduction.SUM.

INFO line 96:2: Renamed 'tf.logging.set_verbosity' to 'tf.compat.v1.logging.set_verbosity'
INFO line 96:27: Renamed 'tf.logging.INFO' to 'tf.compat.v1.logging.INFO'
INFO line 97:2: Renamed 'tf.app.run' to 'tf.compat.v1.app.run'
WARNING line 125:15: Changing dataset.make_one_shot_iterator() to tf.compat.v1.data.make_one_shot_iterator(dataset). Please check this transformation.

INFO line 40:7: Renamed 'tf.test.mock' to 'tf.compat.v1.test.mock'
TensorFlow 2.0 Upgrade Script
-----------------------------
Converted 7 files
Detected 1 issues that require attention
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
File: models/samples/cookbook/regression/automobile_data.py
--------------------------------------------------------------------------------
models/samples/cookbook/regression/automobile_data.py:125:15: WARNING: Changing dataset.make_one_shot_iterator() to tf.compat.v1.data.make_one_shot_iterator(dataset). Please check this transformation.



Make sure to read the detailed log 'tree_report.txt'

ملاحظة التحذير واحدة عن dataset.make_one_shot_iterator وظيفة.

يعمل النص الآن مع TensorFlow 2.x:

علما بأن لأن tf.compat.v1 يتم تضمين وحدة في TF 1.15، سيتم تشغيل البرنامج النصي تحويله أيضا في TensorFlow 1.15.

(cd regression_v2 && python custom_regression.py 2>&1) | tail
I0922 22:16:42.778216 140254758430528 estimator.py:2074] Saving dict for global step 1000: global_step = 1000, loss = 651.5428, rmse = 3.684265
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 1000: /tmp/tmpk2_4r192/model.ckpt-1000
I0922 22:16:42.817190 140254758430528 estimator.py:2135] Saving 'checkpoint_path' summary for global step 1000: /tmp/tmpk2_4r192/model.ckpt-1000
Tensor("IteratorGetNext:25", shape=(None,), dtype=float64, device=/device:CPU:0)
Tensor("Squeeze:0", shape=(None,), dtype=float32)

********************************************************************************

RMS error for the test set: $3684

تقرير مفصل

يقدم البرنامج النصي أيضًا قائمة بالتغييرات التفصيلية. في هذا المثال ، عثرت على عملية تحويل ربما تكون غير آمنة وتضمنت تحذيرًا في أعلى الملف:

head -n 20 tree_report.txt
TensorFlow 2.0 Upgrade Script
-----------------------------
Converted 7 files
Detected 1 issues that require attention
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
File: models/samples/cookbook/regression/automobile_data.py
--------------------------------------------------------------------------------
models/samples/cookbook/regression/automobile_data.py:125:15: WARNING: Changing dataset.make_one_shot_iterator() to tf.compat.v1.data.make_one_shot_iterator(dataset). Please check this transformation.

================================================================================
Detailed log follows:

================================================================================
================================================================================
Input tree: 'models/samples/cookbook/regression/'
================================================================================
--------------------------------------------------------------------------------
Processing file 'models/samples/cookbook/regression/__init__.py'
 outputting to 'regression_v2/__init__.py'

ملاحظة ثانية التحذير واحدة عن Dataset.make_one_shot_iterator function .

في حالات أخرى ، سيشرح المخرج أسباب التغييرات غير التافهة:

%%writefile dropout.py
import tensorflow as tf

d = tf.nn.dropout(tf.range(10), 0.2)
z = tf.zeros_like(d, optimize=False)
Writing dropout.py
!tf_upgrade_v2 \
  --infile dropout.py \
  --outfile dropout_v2.py \
  --reportfile dropout_report.txt > /dev/null
cat dropout_report.txt
TensorFlow 2.0 Upgrade Script
-----------------------------
Converted 1 files
Detected 0 issues that require attention
--------------------------------------------------------------------------------
================================================================================
Detailed log follows:

================================================================================
--------------------------------------------------------------------------------
Processing file 'dropout.py'
 outputting to 'dropout_v2.py'
--------------------------------------------------------------------------------

3:4: INFO: Changing keep_prob arg of tf.nn.dropout to rate, and recomputing value.

4:4: INFO: Renaming tf.zeros_like to tf.compat.v1.zeros_like because argument optimize is present. tf.zeros_like no longer takes an optimize argument, and behaves as if optimize=True. This call site specifies something other than optimize=True, so it was converted to compat.v1.
--------------------------------------------------------------------------------

فيما يلي محتويات الملف المعدلة ، لاحظ كيف يضيف البرنامج النصي أسماء وسيطات للتعامل مع الوسائط المنقولة والمعاد تسميتها:

cat dropout_v2.py
import tensorflow as tf

d = tf.nn.dropout(tf.range(10), rate=1 - (0.2))
z = tf.compat.v1.zeros_like(d, optimize=False)

قد يحتوي مشروع أكبر على بعض الأخطاء. على سبيل المثال ، قم بتحويل نموذج deeplab:

!tf_upgrade_v2 \
    --intree models/research/deeplab \
    --outtree deeplab_v2 \
    --reportfile deeplab_report.txt > /dev/null

أنتجت ملفات الإخراج:

ls deeplab_v2
README.md   datasets        input_preprocess.py        train.py
__init__.py deeplab_demo.ipynb  local_test.sh          utils
common.py   eval.py         local_test_mobilenetv2.sh  vis.py
common_test.py  export_model.py     model.py
core        g3doc           model_test.py

لكن كانت هناك أخطاء. سيساعدك التقرير في تحديد ما تحتاج إلى إصلاحه قبل تشغيله. فيما يلي الأخطاء الثلاثة الأولى:

cat deeplab_report.txt | grep -i models/research/deeplab | grep -i error | head -n 3
models/research/deeplab/eval.py:28:7: ERROR: Using member tf.contrib.slim in deprecated module tf.contrib. tf.contrib.slim cannot be converted automatically. tf.contrib will not be distributed with TensorFlow 2.0, please consider an alternative in non-contrib TensorFlow, a community-maintained repository such as tensorflow/addons, or fork the required code.
models/research/deeplab/eval.py:146:8: ERROR: Using member tf.contrib.metrics.aggregate_metric_map in deprecated module tf.contrib. tf.contrib.metrics.aggregate_metric_map cannot be converted automatically. tf.contrib will not be distributed with TensorFlow 2.0, please consider an alternative in non-contrib TensorFlow, a community-maintained repository such as tensorflow/addons, or fork the required code.
models/research/deeplab/export_model.py:25:7: ERROR: Using member tf.contrib.slim in deprecated module tf.contrib. tf.contrib.slim cannot be converted automatically. tf.contrib will not be distributed with TensorFlow 2.0, please consider an alternative in non-contrib TensorFlow, a community-maintained repository such as tensorflow/addons, or fork the required code.

"وضع الامان

لديه سيناريو تحويل أيضا أقل الغازية SAFETY الوضع الذي ببساطة يغير الواردات إلى استخدام tensorflow.compat.v1 حدة:

cat dropout.py
import tensorflow as tf

d = tf.nn.dropout(tf.range(10), 0.2)
z = tf.zeros_like(d, optimize=False)
tf_upgrade_v2 --mode SAFETY --infile dropout.py --outfile dropout_v2_safe.py > /dev/null
cat dropout_v2_safe.py
import tensorflow.compat.v1 as tf

d = tf.nn.dropout(tf.range(10), 0.2)
z = tf.zeros_like(d, optimize=False)

كما ترى ، لا يؤدي هذا إلى ترقية التعليمات البرمجية الخاصة بك ، ولكنه يسمح بتشغيل كود TensorFlow 1 مقابل ثنائيات TensorFlow 2. لاحظ أن هذا لا يعني أن التعليمات البرمجية الخاصة بك تعمل بسلوكيات TF 2.x المدعومة!

تحفظات

  • لا تقم بتحديث أجزاء من التعليمات البرمجية الخاصة بك يدويًا قبل تشغيل هذا البرنامج النصي. على وجه الخصوص، المهام التي كان الحجج إعادة ترتيب مثل tf.argmax أو tf.batch_to_space قضية النصي لإضافة الحجج الكلمات الرئيسية التي mismap التعليمات البرمجية الموجودة بشكل غير صحيح.

  • يفترض السيناريو الذي tensorflow يتم استيرادها باستخدام import tensorflow as tf ، أو import tensorflow.compat.v1 as tf .

  • هذا البرنامج النصي لا يعيد ترتيب الحجج. بدلاً من ذلك ، يضيف البرنامج النصي وسيطات الكلمات الأساسية إلى الوظائف التي تم إعادة ترتيب وسيطاتها.

  • تحقق من tf2up.ml عن أداة ملائمة لترقية أجهزة الكمبيوتر المحمولة Jupyter وملفات بيثون في مستودع جيثب.

للإبلاغ عن الأخطاء النصي الترقية أو طلبات ميزة جعل، يرجى تقديم قضية على جيثب .