روز جامعه ML 9 نوامبر است! برای به روز رسانی از TensorFlow، JAX به ما بپیوندید، و بیشتر بیشتر بدانید

بازنویسی خودکار نمادهای API TF 1.x و compat.v1

مشاهده در TensorFlow.org در Google Colab اجرا کنید مشاهده منبع در GitHub دانلود دفترچه یادداشت

TensorFlow نسخه 2.x شامل بسیاری از تغییرات API از نگارش 1.x TF و 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 را خودکار می کند ، اگرچه بسیاری از API ها نمی توانند به طور خودکار منتقل شوند. همچنین نمی تواند کد شما را کاملاً با رفتارها و API های TF2 سازگار کند. بنابراین ، این تنها بخشی از سفر مهاجرت شما است.

ماژول های سازگاری

نمادهای API خاصی را نمی توان به سادگی با استفاده از جایگزین رشته ارتقا داد. کسانی که نمیتواند به طور خودکار به روز رسانی خواهد شد به مکان خود را در نقشه برداری compat.v1 ماژول. این ماژول جایگزین علامت TF نگارش 1.x مانند tf.foo با معادل tf.compat.v1.foo مرجع است. اگر شما در حال حاضر با استفاده از compat.v1 رابط های برنامه کاربردی با وارد TF طریق import tensorflow.compat.v1 as tf از tf_upgrade_v2 اسکریپت تلاش خواهد کرد به تبدیل این کاربردهای به API غیر compat که در آن امکان پذیر است. توجه داشته باشید که در حالی که برخی compat.v1 رابط های برنامه کاربردی سازگار با رفتارهای TF2.x هستند، بسیاری از آنها نیست. بنابراین، توصیه می کنیم که شما به صورت دستی تعویض ویرایش و آنها را مهاجرت به API های جدید در tf.* فضای نام به جای tf.compat.v1 فضای نام با بیشترین سرعت ممکن.

از آنجا که از TensorFlow deprecations ماژول نسخه 2.x (به عنوان مثال، tf.flags و tf.contrib )، برخی از تغییرات نمیتوانند در اطراف با تعویض به کار compat.v1 . به روز رسانی این کد ممکن است با استفاده از یک کتابخانه های اضافی (برای مثال، نیاز به absl.flags ) و یا تعویض به یک بسته در tensorflow / افزونه .

بقیه این راهنما نحوه استفاده از اسکریپت بازنویسی نمادها را نشان می دهد. در حالی که استفاده از اسکریپت آسان است ، توصیه می شود که از اسکریپت به عنوان بخشی از فرایند زیر استفاده کنید:

  1. تست واحد: اطمینان حاصل کنید که کد شما به روز رسانی هستیم تا به یک مجموعه تست واحد با پوشش مناسب. این کد پایتون است ، بنابراین زبان شما را از بسیاری از اشتباهات محافظت نمی کند. همچنین اطمینان حاصل کنید که هر گونه وابستگی که قبلاً ارتقا داده اید تا با TensorFlow 2.x سازگار باشد.

  2. نصب TensorFlow 1.15 ارتقا TensorFlow خود را به آخرین نسخه TensorFlow نگارش 1.x، حداقل 1.15. این شامل نهایی TensorFlow 2.0 API در 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'

تک فایل

اسکریپت را می توان روی یک فایل پایتون اجرا کرد:

!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 و فایل های پایتون در یک مخزن گیتهاب.

به گزارش اشکالات اسکریپت ارتقا و یا درخواست ویژگی را، لطفا یک موضوع در گیتهاب .