Update README.md doc for tf_upgrade_v2.py.
PiperOrigin-RevId: 223857830
This commit is contained in:
parent
73a84a2289
commit
cb3dbf7e83
tensorflow/tools/compatibility
@ -126,22 +126,22 @@ py_test(
|
||||
genrule(
|
||||
name = "generate_upgraded_file_v2",
|
||||
testonly = 1,
|
||||
srcs = ["testdata/test_file_v1_10.py"],
|
||||
srcs = ["testdata/test_file_v1_12.py"],
|
||||
outs = [
|
||||
"test_file_v2_0.py",
|
||||
"report_v2.txt",
|
||||
],
|
||||
cmd = ("$(location :tf_upgrade_v2)" +
|
||||
" --infile $(location testdata/test_file_v1_10.py)" +
|
||||
" --infile $(location testdata/test_file_v1_12.py)" +
|
||||
" --outfile $(location test_file_v2_0.py)" +
|
||||
" --reportfile $(location report_v2.txt)"),
|
||||
tools = [":tf_upgrade_v2"],
|
||||
)
|
||||
|
||||
py_test(
|
||||
name = "test_file_v1_10",
|
||||
name = "test_file_v1_12",
|
||||
size = "small",
|
||||
srcs = ["testdata/test_file_v1_10.py"],
|
||||
srcs = ["testdata/test_file_v1_12.py"],
|
||||
srcs_version = "PY2AND3",
|
||||
deps = [
|
||||
"//tensorflow:tensorflow_py",
|
||||
@ -164,6 +164,6 @@ exports_files(
|
||||
"tf_upgrade.py",
|
||||
"renames_v2.py",
|
||||
"testdata/test_file_v0_11.py",
|
||||
"testdata/test_file_v1_10.py",
|
||||
"testdata/test_file_v1_12.py",
|
||||
],
|
||||
)
|
||||
|
@ -1,60 +1,77 @@
|
||||
# TensorFlow Python API Upgrade Utility
|
||||
|
||||
This tool allows you to upgrade your existing TensorFlow Python scripts.
|
||||
This script can be run on a single Python file:
|
||||
Specifically: \
|
||||
`tf_upgrade_v2.py`: upgrades code from TensorFlow 1.12 to TensorFlow 2.0 preview. \
|
||||
`tf_upgrade.py`: upgrades code to TensorFlow 1.0 from TensorFlow 0.11.
|
||||
|
||||
## Running the script from pip package
|
||||
|
||||
First, install TensorFlow pip package. See
|
||||
https://www.tensorflow.org/install/pip.
|
||||
|
||||
Upgrade script can be run on a single Python file:
|
||||
|
||||
```
|
||||
tf_upgrade.py --infile foo.py --outfile foo-upgraded.py
|
||||
tf_upgrade_v2 --infile foo.py --outfile foo-upgraded.py
|
||||
```
|
||||
|
||||
It will print a list of errors it finds that it can't fix. You can also run
|
||||
it on a directory tree:
|
||||
|
||||
```
|
||||
# upgrade the .py files and copy all the other files to the outtree
|
||||
tf_upgrade_v2 --intree coolcode --outtree coolcode-upgraded
|
||||
|
||||
# just upgrade the .py files
|
||||
tf_upgrade.py --intree coolcode --outtree coolcode-upgraded
|
||||
# after upgrade the .py files, then copy all the other files to the outtree
|
||||
tf_upgrade.py --intree coolcode --outtree coolcode-upgraded --copyotherfiles True
|
||||
tf_upgrade_v2 --intree coolcode --outtree coolcode-upgraded --copyotherfiles False
|
||||
```
|
||||
|
||||
In either case, it will also dump out a report e.g. which will detail changes
|
||||
|
||||
## Report
|
||||
|
||||
The script will also dump out a report e.g. which will detail changes
|
||||
e.g.:
|
||||
|
||||
```
|
||||
third_party/tensorflow/tools/compatibility/test_file_v0.11.py Line 125
|
||||
'tensorflow/tools/compatibility/testdata/test_file_v1_12.py' Line 65
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Renamed keyword argument from `dim` to `axis`
|
||||
Renamed keyword argument from `squeeze_dims` to `axis`
|
||||
Added keyword 'input' to reordered function 'tf.argmax'
|
||||
Renamed keyword argument from 'dimension' to 'axis'
|
||||
|
||||
Old: tf.argmax([[1, 3, 2]], dimension=0))
|
||||
~~~~~~~~~~
|
||||
New: tf.argmax(input=[[1, 3, 2]], axis=0))
|
||||
|
||||
Old: [[1, 2, 3]], dim=1), squeeze_dims=[1]).eval(),
|
||||
~~~~ ~~~~~~~~~~~~~
|
||||
New: [[1, 2, 3]], axis=1), axis=[1]).eval(),
|
||||
~~~~~ ~~~~~
|
||||
```
|
||||
|
||||
## Caveats
|
||||
|
||||
- Don't update parts of your code manually before running this script. In
|
||||
particular, functions that have had reordered arguments like `tf.concat`
|
||||
or `tf.split` will cause the script to incorrectly add keyword arguments that
|
||||
mismap arguments.
|
||||
particular, functions that have had reordered arguments like `tf.argmax`
|
||||
or `tf.batch_to_space` will cause the script to incorrectly add keyword
|
||||
arguments that mismap arguments.
|
||||
|
||||
- This script wouldn't actually reorder arguments. Instead, the script will add
|
||||
keyword arguments to functions that had their arguments reordered.
|
||||
|
||||
- This script is not able to upgrade all functions. One notable example is
|
||||
`tf.reverse()` which has been changed to take a list of indices rather than
|
||||
a tensor of bools. If the script detects this, it will report this to stdout
|
||||
`tf.nn.conv2d` that no longer takes `use_cudnn_on_gpu` argument.
|
||||
If the script detects this, it will report this to stdout
|
||||
(and in the report), and you can fix it manually. For example if you have
|
||||
`tf.reverse(a, [False, True, True])` you will need to manually change it to
|
||||
`tf.reverse(a, [1, 2])`.
|
||||
`tf.nn.conv2d(inputs, filters, strides, padding, use_cudnn_on_gpu=True)`
|
||||
you will need to manually change it to
|
||||
`tf.nn.conv2d(input, filters, strides, padding)`.
|
||||
|
||||
- There are some syntaxes that are not handleable with this script as this
|
||||
script was designed to use only standard python packages. If the script fails
|
||||
with "A necessary keyword argument failed to be inserted." or
|
||||
script was designed to use only standard python packages.
|
||||
There is an alternative available for TensorFlow 0.* to 1.0 upgrade script.
|
||||
If the script fails with "A necessary keyword argument failed to be inserted." or
|
||||
"Failed to find keyword lexicographically. Fix manually.", you can try
|
||||
[@machrisaa's fork of this script](https://github.com/machrisaa/tf0to1).
|
||||
[@machrisaa](https://github.com/machrisaa) has used the
|
||||
[RedBaron Python refactoring engine](https://redbaron.readthedocs.io/en/latest/)
|
||||
which is able to localize syntactic elements more reliably than the built-in
|
||||
`ast` module this script is based upon.
|
||||
`ast` module this script is based upon. Note that the alternative script is not
|
||||
available for TensorFlow 2.0 upgrade.
|
||||
|
Loading…
Reference in New Issue
Block a user