דף זה תורגם על ידי Cloud Translation API.
Switch to English

שדרג את הקוד באופן אוטומטי ל- TensorFlow 2

צפה ב- TensorFlow.org הפעל בגוגל קולאב צפה במקור ב- GitHub הורד מחברת

TensorFlow 2.0 כולל שינויים רבים ב- API, כגון סידור מחדש של ארגומנטים, שינוי שם של סמלים ושינוי ערכי ברירת מחדל לפרמטרים. ביצוע ידני של כל השינויים הללו יהיה מייגע ונוטה לטעויות. כדי לייעל את השינויים וכדי להפוך את המעבר שלך ל- TF 2.0 לחלק ככל האפשר, צוות TensorFlow יצר את כלי השירות tf_upgrade_v2 כדי לעזור להעביר קוד מדור קודם ל- API החדש.

שימוש אופייני הוא כך:

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

זה יאיץ את תהליך השדרוג שלך על ידי המרת סקריפטים קיימים של TensorFlow 1.x Python ל- TensorFlow 2.0.

סקריפט ההמרה אוטומטי ככל האפשר, אך עדיין ישנם שינויים תחביריים וסגנוניים שלא ניתן לבצע על ידי התסריט.

מודולי תאימות

לא ניתן לשדרג סמלי API מסוימים באמצעות החלפת מחרוזת. כדי להבטיח שהקוד שלך עדיין נתמך ב- TensorFlow 2.0, סקריפט השדרוג כולל מודול compat.v1 . מודול זה מחליף סמלי TF 1.x כמו tf.foo tf.compat.v1.foo המקבילה tf.compat.v1.foo . בעוד שמודול התאימות נחמד, אנו ממליצים לך לקרוא תחליפים ידנית ולהעביר אותם לממשקי API חדשים במרחב השמות tf.* במקום tf.compat.v1 השמות tf.compat.v1 במהירות האפשרית.

בגלל הוצאת המודולים של TensorFlow 2.x (לדוגמה, tf.flags ו- tf.contrib ), לא ניתן לעקוף כמה שינויים על ידי מעבר ל- compat.v1 . שדרוג קוד זה עשוי לדרוש שימוש בספריה נוספת (לדוגמא, absl.flags ) או לעבור לחבילה ב- tensorflow / addons .

שאר המדריך מדגים כיצד להשתמש בסקריפט השדרוג. אמנם סקריפט השדרוג קל לשימוש, אך מומלץ מאוד להשתמש בתסריט כחלק מהתהליך הבא:

  1. מבחן יחידה : וודא כי לקוד שאתה משדרג יש חבילת בדיקות יחידה עם כיסוי סביר. זהו קוד פייתון, כך שהשפה לא תגן עליך מפני סוגים רבים של טעויות. כמו כן, וודא כי כל התלות שיש לך כבר שודרגה ותואמת ל- TensorFlow 2.0.

  2. התקן את TensorFlow 1.14 : שדרג את TensorFlow לגרסה האחרונה של TensorFlow 1.x, לפחות 1.14. זה כולל את ממשק ה- API הסופי של TensorFlow 2.0 ב- tf.compat.v2 .

  3. מבחן עם 1.14 : ודא שמבחני היחידות שלך עוברים בשלב זה. תריץ אותם שוב ושוב כשאתה משדרג ולכן חשוב להתחיל בירוק.

  4. הפעל את סקריפט השדרוג : הפעל את tf_upgrade_v2 על כל עץ המקור שלך, כולל בדיקות. זה ישדרג את הקוד שלך לפורמט שבו הוא משתמש רק בסמלים הזמינים ב- TensorFlow 2.0. ניתן לגשת tf.compat.v1 משימוש באמצעות tf.compat.v1 . בסופו של דבר אלה ידרשו התייחסות ידנית, אך לא באופן מיידי.

  5. הפעל את הבדיקות שהומרו באמצעות TensorFlow 1.14 : הקוד שלך עדיין אמור לפעול בסדר ב- TensorFlow 1.14. הפעל שוב את בדיקות היחידה שלך. כל שגיאה בבדיקות שלך כאן פירושה שיש באג בסקריפט השדרוג. אנא יידע אותנו .

  6. בדוק אם יש אזהרות ושגיאות בדוח השדרוג : התסריט כותב קובץ דוח שמסביר את כל ההמרות שעליך לבדוק, או כל פעולה ידנית שאתה צריך לבצע. לדוגמא: כל המקרים הנותרים של תרומות ידרשו להסיר פעולה ידנית. אנא עיין ב- RFC לקבלת הוראות נוספות .

  7. התקן את TensorFlow 2.0 : בשלב זה אמור להיות בטוח לעבור ל- TensorFlow 2.0

  8. בדוק עם v1.disable_v2_behavior : v1.disable_v2_behavior מחדש של הבדיקות שלך עם al v1.disable_v2_behavior() בפונקציה הראשית של הבדיקות אמורה לתת את אותן התוצאות כמו לרוץ תחת 1.14.

  9. הפעל התנהגות V2 : כעת, כאשר הבדיקות שלך עובדות באמצעות ממשק ה- API של v2, תוכל להתחיל לבדוק הפעלת התנהגות v2. תלוי איך כתוב את הקוד שלך זה עשוי לדרוש כמה שינויים. לפרטים נוספים עיין במדריך ההגירה .

באמצעות סקריפט השדרוג

להכין

לפני תחילת העבודה וודא שהתקנת TensorlFlow 2.0.

import tensorflow as tf

print(tf.__version__)
2.3.0

שיבט את מאגר git tensorflow / models כך שיהיה לך קוד לבדוק עליו:

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% (2449/2449), done.[K
remote: Total 2927 (delta 509), reused 2036 (delta 403), pack-reused 0[K
Receiving objects: 100% (2927/2927), 369.04 MiB | 44.65 MiB/s, done.
Resolving deltas: 100% (509/509), done.
Checking out files: 100% (2768/2768), done.

קרא את העזרה

יש להתקין את התסריט עם TensorFlow. הנה העזרה המובנית:

tf_upgrade_v2 -h
2020-09-10 01:42:59.274658: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
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.0 הוא אינו פועל:

(cd models/samples/cookbook/regression && python custom_regression.py)
2020-09-10 01:43:01.613673: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
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
2020-09-10 01:43:03.844314: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
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'


התסריט ידפיס שגיאות אם הוא לא יכול למצוא תיקון לקוד.

עץ המדריך

פרויקטים אופייניים, כולל דוגמה פשוטה זו, ישתמשו בהרבה יותר מקובץ אחד. בדרך כלל רוצה לשדרג חבילה שלמה, כך שניתן יהיה להריץ את הסקריפט גם על עץ ספריות:

# upgrade 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
2020-09-10 01:43:06.108169: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
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 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'
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 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'
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 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.0:

שים לב tf.compat.v1 המודול tf.compat.v1 , הסקריפט המומר יפעל גם ב- TensorFlow 1.14.

(cd regression_v2 && python custom_regression.py 2>&1) | tail
    data = raw_dataframe()
  File "/tmpfs/src/temp/site/en/guide/regression_v2/automobile_data.py", line 67, in raw_dataframe
    dtype=COLUMN_TYPES, na_values="?")
  File "/home/kbuilder/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 686, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/home/kbuilder/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 449, in _read
    _validate_names(kwds.get("names", None))
  File "/home/kbuilder/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 417, in _validate_names
    raise ValueError("Names should be an ordered collection.")
ValueError: Names should be an ordered collection.

דו"ח מפורט

התסריט מדווח גם על רשימה של שינויים מפורטים. בדוגמה זו היא מצאה טרנספורמציה אפשרית ואינה כוללת אזהרה בראש הקובץ:

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/linear_regression_categorical.py'
 outputting to 'regression_v2/linear_regression_categorical.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
2020-09-10 01:43:10.977249: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1

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), 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
2020-09-10 01:43:13.488610: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1

זה ייצר את קבצי הפלט:

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/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.
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.

מצב "בטיחות"

לסקריפט ההמרה יש גם מצב 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
2020-09-10 01:43:17.892207: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1

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.argmax מחדש ארגומנטים כמו tf.argmax או tf.batch_to_space גורמות לסקריפט להוסיף באופן שגוי ארגומנטים של מילות מפתח שלא תואמים את הקוד הקיים שלך.

  • התסריט מניח ש- tensorflow מיובא באמצעות import tensorflow as tf .

  • סקריפט זה אינו מסדר מחדש טיעונים. במקום זאת, התסריט מוסיף ארגומנטים של מילות מפתח לפונקציות שמסדרים את הארגומנטים שלהם מחדש.

  • בדוק את tf2up.ml לקבלת כלי נוח לשדרוג מחברות Jupyter וקבצי Python במאגר GitHub.

כדי לדווח על באגים של סקריפטים לשדרוג או על בקשות תכונות, אנא הגיש בעיה ב- GitHub . ואם אתה בודק את TensorFlow 2.0, אנחנו רוצים לשמוע על זה! הצטרף לקהילת הבדיקות TF 2.0 ושלח שאלות ודיון לכתובת testing@tensorflow.org .