Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Tensorflow 2 #140

Open
mcrowson opened this issue Jul 2, 2020 · 15 comments
Open

Support Tensorflow 2 #140

mcrowson opened this issue Jul 2, 2020 · 15 comments

Comments

@mcrowson
Copy link
Contributor

mcrowson commented Jul 2, 2020

Expected behaviour:

Environment fully supports TF2

Actual behaviour:

Only 1.5 is supported for certain scripts

I ran the automatic upgrade tool on the library and it generated the following report. For the most part it moved everything along, but there are several errors in the script for fully deprecated classes that we'll need to reference another way.

TensorFlow 2.0 Upgrade Script
-----------------------------
Converted 109 files
Detected 34 issues that require attention
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
File: btgym/research/b_vae_a3c.py
--------------------------------------------------------------------------------
btgym/research/b_vae_a3c.py:54:32: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
btgym/research/b_vae_a3c.py:54:32: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
btgym/research/b_vae_a3c.py:54:32: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
--------------------------------------------------------------------------------
File: btgym/research/gps/policy.py
--------------------------------------------------------------------------------
btgym/research/gps/policy.py:19:27: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
btgym/research/gps/policy.py:19:27: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
btgym/research/gps/policy.py:19:27: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
--------------------------------------------------------------------------------
File: btgym/research/casual_conv/networks.py
--------------------------------------------------------------------------------
btgym/research/casual_conv/networks.py:140:42: WARNING: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib.seq2seq. (Manual edit required) tf.contrib.seq2seq.* have been migrated to `tfa.seq2seq.*` in TensorFlow Addons. Please see https://github.com/tensorflow/addons for more info.
btgym/research/casual_conv/networks.py:140:42: ERROR: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib. tf.contrib.seq2seq.LuongAttention 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.
btgym/research/casual_conv/networks.py:204:30: WARNING: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib.seq2seq. (Manual edit required) tf.contrib.seq2seq.* have been migrated to `tfa.seq2seq.*` in TensorFlow Addons. Please see https://github.com/tensorflow/addons for more info.
btgym/research/casual_conv/networks.py:204:30: ERROR: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib. tf.contrib.seq2seq.LuongAttention 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.
--------------------------------------------------------------------------------
File: btgym/research/encoder_test/policy.py
--------------------------------------------------------------------------------
btgym/research/encoder_test/policy.py:20:32: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
btgym/research/encoder_test/policy.py:20:32: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
btgym/research/encoder_test/policy.py:20:32: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
--------------------------------------------------------------------------------
File: btgym/algorithms/aac.py
--------------------------------------------------------------------------------
btgym/algorithms/aac.py:801:27: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/aac.py:814:30: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
--------------------------------------------------------------------------------
File: btgym/algorithms/worker.py
--------------------------------------------------------------------------------
btgym/algorithms/worker.py:38:8: WARNING: *.save requires manual check. (This warning is only applicable if the code saves a tf.Keras model) Keras model.save now saves to the Tensorflow SavedModel format by default, instead of HDF5. To continue saving to HDF5, add the argument save_format='h5' to the save() function.
btgym/algorithms/worker.py:178:8: WARNING: *.save requires manual check. (This warning is only applicable if the code saves a tf.Keras model) Keras model.save now saves to the Tensorflow SavedModel format by default, instead of HDF5. To continue saving to HDF5, add the argument save_format='h5' to the save() function.
--------------------------------------------------------------------------------
File: btgym/algorithms/nn/layers.py
--------------------------------------------------------------------------------
btgym/algorithms/nn/layers.py:44:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:45:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:74:15: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:75:18: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:80:19: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:81:22: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:97:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:99:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:129:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:131:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:153:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:155:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:173:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
btgym/algorithms/nn/layers.py:175:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
--------------------------------------------------------------------------------
File: btgym/algorithms/policy/stacked_lstm.py
--------------------------------------------------------------------------------
btgym/algorithms/policy/stacked_lstm.py:30:32: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
btgym/algorithms/policy/stacked_lstm.py:30:32: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
btgym/algorithms/policy/stacked_lstm.py:30:32: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
================================================================================
Detailed log follows:

================================================================================
================================================================================
Input tree: 'btgym'
================================================================================
--------------------------------------------------------------------------------
Processing file 'btgym/spaces.py'
 outputting to 'btgym2/spaces.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/__init__.py'
 outputting to 'btgym2/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/dataserver.py'
 outputting to 'btgym2/dataserver.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/server.py'
 outputting to 'btgym2/server.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/monitor/__init__.py'
 outputting to 'btgym2/monitor/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/monitor/tensorboard2.py'
 outputting to 'btgym2/monitor/tensorboard2.py'
--------------------------------------------------------------------------------

72:22: INFO: tf.summary.FileWriter requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
72:22: INFO: Renamed 'tf.summary.FileWriter' to 'tf.compat.v1.summary.FileWriter'
72:63: INFO: Renamed 'tf.get_default_graph' to 'tf.compat.v1.get_default_graph'
80:38: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
81:26: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
81:26: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
85:38: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
86:26: INFO: tf.summary.image requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
86:26: INFO: Renamed 'tf.summary.image' to 'tf.compat.v1.summary.image'
90:38: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
91:26: INFO: tf.summary.histogram requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
91:26: INFO: Renamed 'tf.summary.histogram' to 'tf.compat.v1.summary.histogram'
95:38: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
96:26: INFO: tf.summary.histogram requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
96:26: INFO: Renamed 'tf.summary.histogram' to 'tf.compat.v1.summary.histogram'
98:23: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
98:23: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/monitor/tensorboard.py'
 outputting to 'btgym2/monitor/tensorboard.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_2.py'
 outputting to 'btgym2/research/strategy_gen_2.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/__init__.py'
 outputting to 'btgym2/research/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_4.py'
 outputting to 'btgym2/research/strategy_gen_4.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/b_vae_a3c.py'
 outputting to 'btgym2/research/b_vae_a3c.py'
--------------------------------------------------------------------------------

54:32: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
54:32: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
54:32: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
110:25: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
111:26: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
114:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
115:30: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
117:30: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
118:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
136:26: INFO: Added keywords to args of function 'tf.shape'
161:51: INFO: Added keywords to args of function 'tf.shape'
170:47: INFO: Added keywords to args of function 'tf.shape'
180:44: INFO: Added keywords to args of function 'tf.shape'
191:46: INFO: Added keywords to args of function 'tf.shape'
197:40: INFO: Added keywords to args of function 'tf.shape'
198:49: INFO: Added keywords to args of function 'tf.shape'
199:56: INFO: Added keywords to args of function 'tf.shape'
202:35: INFO: Added keywords to args of function 'tf.transpose'
215:49: INFO: Added keywords to args of function 'tf.shape'
234:42: INFO: Added keywords to args of function 'tf.shape'
239:40: INFO: Added keywords to args of function 'tf.shape'
240:49: INFO: Added keywords to args of function 'tf.shape'
241:56: INFO: Added keywords to args of function 'tf.shape'
247:47: INFO: Added keywords to args of function 'tf.shape'
277:26: INFO: Added keywords to args of function 'tf.shape'
400:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
424:31: INFO: Renamed 'tf.placeholder_with_default' to 'tf.compat.v1.placeholder_with_default'
429:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
429:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
431:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
431:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
431:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
432:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
432:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
432:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
435:24: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
435:42: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
435:76: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
468:19: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
506:21: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
534:24: INFO: Added keywords to args of function 'tf.gradients'
542:44: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
542:44: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/policy_rl2.py'
 outputting to 'btgym2/research/policy_rl2.py'
--------------------------------------------------------------------------------

44:23: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/misc_utils.py'
 outputting to 'btgym2/research/misc_utils.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_7/__init__.py'
 outputting to 'btgym2/research/strategy_gen_7/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_7/base.py'
 outputting to 'btgym2/research/strategy_gen_7/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/gps/strategy.py'
 outputting to 'btgym2/research/gps/strategy.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/gps/aac.py'
 outputting to 'btgym2/research/gps/aac.py'
--------------------------------------------------------------------------------

96:41: INFO: tf.train.polynomial_decay requires manual check. To use learning rate decay schedules with TensorFlow 2.0, switch to the schedules in `tf.keras.optimizers.schedules`.

96:41: INFO: Renamed 'tf.train.polynomial_decay' to 'tf.compat.v1.train.polynomial_decay'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/gps/oracle.py'
 outputting to 'btgym2/research/gps/oracle.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/gps/__init__.py'
 outputting to 'btgym2/research/gps/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/gps/loss.py'
 outputting to 'btgym2/research/gps/loss.py'
--------------------------------------------------------------------------------

17:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

17:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
20:26: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
22:19: INFO: Added keywords to args of function 'tf.argmax'
24:15: INFO: Added keywords to args of function 'tf.reduce_mean'
27:25: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
27:25: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
47:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

47:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
51:26: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
55:15: INFO: Added keywords to args of function 'tf.reduce_mean'
58:25: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
58:25: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
78:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

78:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
85:15: INFO: 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.
85:15: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
91:25: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
91:25: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/gps/policy.py'
 outputting to 'btgym2/research/gps/policy.py'
--------------------------------------------------------------------------------

19:27: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
19:27: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
19:27: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/strategy.py'
 outputting to 'btgym2/research/model_based/strategy.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/aac.py'
 outputting to 'btgym2/research/model_based/aac.py'
--------------------------------------------------------------------------------

47:21: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

47:21: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
49:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
49:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
50:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
50:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
52:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
52:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
55:44: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
55:44: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
55:81: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
59:24: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
59:24: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
64:25: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
65:20: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
66:21: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
67:24: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
68:18: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
69:22: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
70:21: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
71:18: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
76:22: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
80:34: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
80:34: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
81:13: INFO: tf.summary.image requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
81:13: INFO: Renamed 'tf.summary.image' to 'tf.compat.v1.summary.image'
85:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
85:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
87:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
87:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
88:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
88:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
89:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
89:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
90:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
90:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
91:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
91:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
92:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
92:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
97:43: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
97:43: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
99:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
99:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
100:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
100:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
104:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
104:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
106:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
106:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
107:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
107:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
283:12: INFO: Added keywords to args of function 'tf.gradients'
288:12: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
292:12: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
320:36: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/runner.py'
 outputting to 'btgym2/research/model_based/runner.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/__init__.py'
 outputting to 'btgym2/research/model_based/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/model/utils.py'
 outputting to 'btgym2/research/model_based/model/utils.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/model/rec.py'
 outputting to 'btgym2/research/model_based/model/rec.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/model/univariate.py'
 outputting to 'btgym2/research/model_based/model/univariate.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/model/bivariate.py'
 outputting to 'btgym2/research/model_based/model/bivariate.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/model/__init__.py'
 outputting to 'btgym2/research/model_based/model/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/model/stochastic.py'
 outputting to 'btgym2/research/model_based/model/stochastic.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/datafeed/ou.py'
 outputting to 'btgym2/research/model_based/datafeed/ou.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/datafeed/bivariate.py'
 outputting to 'btgym2/research/model_based/datafeed/bivariate.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/datafeed/__init__.py'
 outputting to 'btgym2/research/model_based/datafeed/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/model_based/datafeed/base.py'
 outputting to 'btgym2/research/model_based/datafeed/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/casual_conv/strategy.py'
 outputting to 'btgym2/research/casual_conv/strategy.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/casual_conv/networks.py'
 outputting to 'btgym2/research/casual_conv/networks.py'
--------------------------------------------------------------------------------

35:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
56:20: INFO: Added keywords to args of function 'tf.pad'
86:20: INFO: Changing keep_prob arg of tf.nn.dropout to rate

140:42: WARNING: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib.seq2seq. (Manual edit required) tf.contrib.seq2seq.* have been migrated to `tfa.seq2seq.*` in TensorFlow Addons. Please see https://github.com/tensorflow/addons for more info.
140:42: ERROR: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib. tf.contrib.seq2seq.LuongAttention 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.
174:47: INFO: Added keywords to args of function 'tf.shape'
204:30: WARNING: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib.seq2seq. (Manual edit required) tf.contrib.seq2seq.* have been migrated to `tfa.seq2seq.*` in TensorFlow Addons. Please see https://github.com/tensorflow/addons for more info.
204:30: ERROR: Using member tf.contrib.seq2seq.LuongAttention in deprecated module tf.contrib. tf.contrib.seq2seq.LuongAttention 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.
222:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
243:20: INFO: Added keywords to args of function 'tf.pad'
271:20: INFO: Changing keep_prob arg of tf.nn.dropout to rate

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/casual_conv/__init__.py'
 outputting to 'btgym2/research/casual_conv/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/casual_conv/policy.py'
 outputting to 'btgym2/research/casual_conv/policy.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/casual_conv/layers.py'
 outputting to 'btgym2/research/casual_conv/layers.py'
--------------------------------------------------------------------------------

7:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

7:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
8:16: INFO: Added keywords to args of function 'tf.shape'
10:17: INFO: Added keywords to args of function 'tf.pad'
12:21: INFO: Added keywords to args of function 'tf.transpose'
17:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

17:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
18:16: INFO: Added keywords to args of function 'tf.shape'
20:21: INFO: Added keywords to args of function 'tf.transpose'
22:27: INFO: Renamed 'tf.div' to 'tf.compat.v1.div'
35:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

35:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
59:20: INFO: Added keywords to args of function 'tf.shape'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/metalearn_2/_env_runner.py'
 outputting to 'btgym2/research/metalearn_2/_env_runner.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/metalearn_2/_mldg_batch.py'
 outputting to 'btgym2/research/metalearn_2/_mldg_batch.py'
--------------------------------------------------------------------------------

ERROR: Failed to parse.
Traceback (most recent call last):
  File "/home/matthew/Documents/btgym/env/lib/python3.8/site-packages/tensorflow/tools/compatibility/ast_edits.py", line 940, in update_string_pasta
    t = pasta.parse(text)
  File "/home/matthew/Documents/btgym/env/lib/python3.8/site-packages/pasta/__init__.py", line 23, in parse
    t = ast_utils.parse(src)
  File "/home/matthew/Documents/btgym/env/lib/python3.8/site-packages/pasta/base/ast_utils.py", line 56, in parse
    tree = ast.parse(sanitize_source(src))
  File "/usr/lib/python3.8/ast.py", line 47, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 402
    test_feed_dict = self.test_aac.process_data(sess,,,,, test_data,,
                                                     ^
SyntaxError: invalid syntax

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/metalearn_2/__init__.py'
 outputting to 'btgym2/research/metalearn_2/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/metalearn_2/loss.py'
 outputting to 'btgym2/research/metalearn_2/loss.py'
--------------------------------------------------------------------------------

22:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

22:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
23:32: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
27:31: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
31:18: INFO: Added keywords to args of function 'tf.reduce_mean'
34:30: INFO: 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.
34:30: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
35:29: INFO: 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.
35:29: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
37:18: INFO: Added keywords to args of function 'tf.reduce_mean'
41:23: INFO: Added keywords to args of function 'tf.reduce_mean'
42:24: INFO: Added keywords to args of function 'tf.reduce_mean'
45:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
45:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
46:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
46:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
50:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
50:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
51:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
51:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
52:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
52:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/metalearn_2/_fwrnn_aac.py'
 outputting to 'btgym2/research/metalearn_2/_fwrnn_aac.py'
--------------------------------------------------------------------------------

ERROR: Failed to parse.
Traceback (most recent call last):
  File "/home/matthew/Documents/btgym/env/lib/python3.8/site-packages/tensorflow/tools/compatibility/ast_edits.py", line 940, in update_string_pasta
    t = pasta.parse(text)
  File "/home/matthew/Documents/btgym/env/lib/python3.8/site-packages/pasta/__init__.py", line 23, in parse
    t = ast_utils.parse(src)
  File "/home/matthew/Documents/btgym/env/lib/python3.8/site-packages/pasta/base/ast_utils.py", line 56, in parse
    tree = ast.parse(sanitize_source(src))
  File "/usr/lib/python3.8/ast.py", line 47, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 154
    feed_dict = self.process_data(sess,,,,, train_data,,
                                       ^
SyntaxError: invalid syntax

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/metalearn_2/_aac_t2d.py'
 outputting to 'btgym2/research/metalearn_2/_aac_t2d.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/encoder_test/networks.py'
 outputting to 'btgym2/research/encoder_test/networks.py'
--------------------------------------------------------------------------------

36:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
55:20: INFO: Changing keep_prob arg of tf.nn.dropout to rate

75:27: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
88:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
89:12: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/encoder_test/aac.py'
 outputting to 'btgym2/research/encoder_test/aac.py'
--------------------------------------------------------------------------------

556:13: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

556:13: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
558:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
561:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
562:32: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
579:27: INFO: 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.
579:27: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
585:23: INFO: tf.metrics.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.
585:23: INFO: Renamed 'tf.metrics.mean_squared_error' to 'tf.compat.v1.metrics.mean_squared_error'
591:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
591:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
592:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
592:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
618:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
622:12: INFO: Added keywords to args of function 'tf.gradients'
625:33: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
650:52: INFO: Added keywords to args of function 'tf.shape'
668:21: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

668:21: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
670:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
670:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
671:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
671:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
673:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
673:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
676:44: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
676:44: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
676:81: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
680:24: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
680:24: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
685:25: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
686:20: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
687:21: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
688:24: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
689:18: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
693:38: INFO: tf.summary.image requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
693:38: INFO: Renamed 'tf.summary.image' to 'tf.compat.v1.summary.image'
699:26: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
703:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
703:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
704:17: INFO: tf.summary.image requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
704:17: INFO: Renamed 'tf.summary.image' to 'tf.compat.v1.summary.image'
708:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
708:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
710:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
710:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
711:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
711:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
716:43: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
716:43: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
718:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
718:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
722:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
722:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
724:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
724:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
725:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
725:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/encoder_test/runner.py'
 outputting to 'btgym2/research/encoder_test/runner.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/encoder_test/__init__.py'
 outputting to 'btgym2/research/encoder_test/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/encoder_test/policy.py'
 outputting to 'btgym2/research/encoder_test/policy.py'
--------------------------------------------------------------------------------

20:32: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
20:32: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
20:32: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
75:40: INFO: Renamed 'tf.AUTO_REUSE' to 'tf.compat.v1.AUTO_REUSE'
91:28: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
96:33: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
99:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
100:30: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
114:31: INFO: Renamed 'tf.placeholder_with_default' to 'tf.compat.v1.placeholder_with_default'
149:30: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
168:35: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
187:12: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
194:26: INFO: Added keywords to args of function 'tf.shape'
283:35: INFO: Added keywords to args of function 'tf.transpose'
366:18: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
382:18: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
397:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
397:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
399:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
399:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
399:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
400:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
400:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
400:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
403:24: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
403:42: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
403:76: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
437:19: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
476:15: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_6/utils.py'
 outputting to 'btgym2/research/strategy_gen_6/utils.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_6/__init__.py'
 outputting to 'btgym2/research/strategy_gen_6/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_6/base.py'
 outputting to 'btgym2/research/strategy_gen_6/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/casual/aac.py'
 outputting to 'btgym2/research/casual/aac.py'
--------------------------------------------------------------------------------

282:41: INFO: tf.train.polynomial_decay requires manual check. To use learning rate decay schedules with TensorFlow 2.0, switch to the schedules in `tf.keras.optimizers.schedules`.

282:41: INFO: Renamed 'tf.train.polynomial_decay' to 'tf.compat.v1.train.polynomial_decay'
330:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
334:12: INFO: Added keywords to args of function 'tf.gradients'
337:33: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
354:52: INFO: Added keywords to args of function 'tf.shape'
359:24: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
363:47: INFO: Renamed 'tf.assign' to 'tf.compat.v1.assign'
368:47: INFO: Renamed 'tf.scatter_nd_update' to 'tf.compat.v1.scatter_nd_update'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/casual/__init__.py'
 outputting to 'btgym2/research/casual/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/mldg/aac.py'
 outputting to 'btgym2/research/mldg/aac.py'
--------------------------------------------------------------------------------

238:45: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
238:45: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
282:12: INFO: Added keywords to args of function 'tf.gradients'
286:12: INFO: Added keywords to args of function 'tf.gradients'
323:12: INFO: Added keywords to args of function 'tf.shape'
330:24: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
334:34: INFO: tf.train.polynomial_decay requires manual check. To use learning rate decay schedules with TensorFlow 2.0, switch to the schedules in `tf.keras.optimizers.schedules`.

334:34: INFO: Renamed 'tf.train.polynomial_decay' to 'tf.compat.v1.train.polynomial_decay'
344:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
356:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
356:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
356:55: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
357:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
357:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
851:12: INFO: Added keywords to args of function 'tf.gradients'
855:12: INFO: Added keywords to args of function 'tf.gradients'
892:12: INFO: Added keywords to args of function 'tf.shape'
895:36: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
896:35: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
902:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/mldg/aac_1.py'
 outputting to 'btgym2/research/mldg/aac_1.py'
--------------------------------------------------------------------------------

76:36: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
76:36: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
101:41: INFO: tf.train.polynomial_decay requires manual check. To use learning rate decay schedules with TensorFlow 2.0, switch to the schedules in `tf.keras.optimizers.schedules`.

101:41: INFO: Renamed 'tf.train.polynomial_decay' to 'tf.compat.v1.train.polynomial_decay'
155:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
156:30: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
160:12: INFO: Added keywords to args of function 'tf.gradients'
164:12: INFO: Added keywords to args of function 'tf.gradients'
192:52: INFO: Added keywords to args of function 'tf.shape'
207:13: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

207:13: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
209:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
209:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
209:59: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/mldg/__init__.py'
 outputting to 'btgym2/research/mldg/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/mldg/aac_1d.py'
 outputting to 'btgym2/research/mldg/aac_1d.py'
--------------------------------------------------------------------------------

100:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
101:30: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
105:12: INFO: Added keywords to args of function 'tf.gradients'
109:12: INFO: Added keywords to args of function 'tf.gradients'
137:52: INFO: Added keywords to args of function 'tf.shape'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/mldg/policy.py'
 outputting to 'btgym2/research/mldg/policy.py'
--------------------------------------------------------------------------------

49:19: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/mldg/memory.py'
 outputting to 'btgym2/research/mldg/memory.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/mldg/aac_1s.py'
 outputting to 'btgym2/research/mldg/aac_1s.py'
--------------------------------------------------------------------------------

226:13: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

226:13: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
230:45: INFO: tf.train.polynomial_decay requires manual check. To use learning rate decay schedules with TensorFlow 2.0, switch to the schedules in `tf.keras.optimizers.schedules`.

230:45: INFO: Renamed 'tf.train.polynomial_decay' to 'tf.compat.v1.train.polynomial_decay'
252:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
255:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
256:32: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
276:35: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
278:35: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
279:33: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
299:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
326:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
327:30: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
331:12: INFO: Added keywords to args of function 'tf.gradients'
335:12: INFO: Added keywords to args of function 'tf.gradients'
357:52: INFO: Added keywords to args of function 'tf.shape'
504:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
508:12: INFO: Added keywords to args of function 'tf.gradients'
512:12: INFO: Added keywords to args of function 'tf.gradients'
519:30: INFO: Renamed 'tf.train.GradientDescentOptimizer' to 'tf.compat.v1.train.GradientDescentOptimizer'
542:52: INFO: Added keywords to args of function 'tf.shape'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_5/__init__.py'
 outputting to 'btgym2/research/strategy_gen_5/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/research/strategy_gen_5/base.py'
 outputting to 'btgym2/research/strategy_gen_5/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/strategy/utils.py'
 outputting to 'btgym2/strategy/utils.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/strategy/observers.py'
 outputting to 'btgym2/strategy/observers.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/strategy/__init__.py'
 outputting to 'btgym2/strategy/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/strategy/base.py'
 outputting to 'btgym2/strategy/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/rollout.py'
 outputting to 'btgym2/algorithms/rollout.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/utils.py'
 outputting to 'btgym2/algorithms/utils.py'
--------------------------------------------------------------------------------

22:25: INFO: Renamed 'tf.contrib.rnn.LSTMStateTuple' to 'tf.nn.rnn_cell.LSTMStateTuple'
24:12: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
25:12: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
26:15: INFO: Renamed 'tf.contrib.rnn.LSTMStateTuple' to 'tf.nn.rnn_cell.LSTMStateTuple'
29:12: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
52:14: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/aac.py'
 outputting to 'btgym2/algorithms/aac.py'
--------------------------------------------------------------------------------

201:16: INFO: Renamed 'tf.set_random_seed' to 'tf.compat.v1.set_random_seed'
408:31: INFO: Renamed 'tf.train.replica_device_setter' to 'tf.compat.v1.train.replica_device_setter'
420:21: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
432:36: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
432:54: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
443:46: INFO: tf.train.polynomial_decay requires manual check. To use learning rate decay schedules with TensorFlow 2.0, switch to the schedules in `tf.keras.optimizers.schedules`.

443:46: INFO: Renamed 'tf.train.polynomial_decay' to 'tf.compat.v1.train.polynomial_decay'
510:13: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

510:13: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
512:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
515:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
516:32: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
537:35: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
539:35: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
540:33: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
561:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
562:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
577:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
589:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
616:25: INFO: Renamed 'tf.train.AdamOptimizer' to 'tf.compat.v1.train.AdamOptimizer'
627:12: INFO: Added keywords to args of function 'tf.gradients'
630:33: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
652:52: INFO: Added keywords to args of function 'tf.shape'
669:21: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

669:21: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
671:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
671:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
674:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
674:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
675:24: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
675:24: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
680:44: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
680:44: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
680:81: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
684:24: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
684:24: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
689:25: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
690:20: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
691:21: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
692:24: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
693:18: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
697:38: INFO: tf.summary.image requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
697:38: INFO: Renamed 'tf.summary.image' to 'tf.compat.v1.summary.image'
703:26: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
707:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
707:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
708:17: INFO: tf.summary.image requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
708:17: INFO: Renamed 'tf.summary.image' to 'tf.compat.v1.summary.image'
712:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
712:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
714:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
714:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
715:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
715:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
716:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
716:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
717:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
717:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
722:43: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
722:43: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
724:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
724:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
725:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
725:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
726:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
726:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
730:38: INFO: tf.summary.merge requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
730:38: INFO: Renamed 'tf.summary.merge' to 'tf.compat.v1.summary.merge'
732:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
732:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
733:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
733:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
801:27: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
801:27: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
805:24: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
805:24: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
811:8: INFO: Renamed 'tf.add_to_collection' to 'tf.compat.v1.add_to_collection'
811:29: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
814:30: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
814:30: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
818:24: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
818:24: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
840:13: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
1316:44: INFO: Renamed 'tf.Summary' to 'tf.compat.v1.Summary'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/test.py'
 outputting to 'btgym2/algorithms/test.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/__init__.py'
 outputting to 'btgym2/algorithms/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/memory.py'
 outputting to 'btgym2/algorithms/memory.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/envs.py'
 outputting to 'btgym2/algorithms/envs.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/worker.py'
 outputting to 'btgym2/algorithms/worker.py'
--------------------------------------------------------------------------------

19:0: INFO: Renamed 'tf.logging.set_verbosity' to 'tf.compat.v1.logging.set_verbosity'
19:25: INFO: Renamed 'tf.logging.INFO' to 'tf.compat.v1.logging.INFO'
22:16: INFO: Renamed 'tf.train.Saver' to 'tf.compat.v1.train.Saver'
38:8: WARNING: *.save requires manual check. (This warning is only applicable if the code saves a tf.Keras model) Keras model.save now saves to the Tensorflow SavedModel format by default, instead of HDF5. To continue saving to HDF5, add the argument save_format='h5' to the save() function.
178:8: WARNING: *.save requires manual check. (This warning is only applicable if the code saves a tf.Keras model) Keras model.save now saves to the Tensorflow SavedModel format by default, instead of HDF5. To continue saving to HDF5, add the argument save_format='h5' to the save() function.
191:12: INFO: Renamed 'tf.reset_default_graph' to 'tf.compat.v1.reset_default_graph'
201:25: INFO: Renamed 'tf.train.Server' to 'tf.distribute.Server'
205:27: INFO: Renamed 'tf.ConfigProto' to 'tf.compat.v1.ConfigProto'
212:25: INFO: Renamed 'tf.train.Server' to 'tf.distribute.Server'
216:27: INFO: Renamed 'tf.ConfigProto' to 'tf.compat.v1.ConfigProto'
311:48: INFO: Renamed 'tf.global_variables' to 'tf.compat.v1.global_variables'
312:46: INFO: Renamed 'tf.global_variables' to 'tf.compat.v1.global_variables'
312:92: INFO: Renamed 'tf.local_variables' to 'tf.compat.v1.local_variables'
313:26: INFO: Renamed 'tf.initializers.variables' to 'tf.compat.v1.initializers.variables'
314:32: INFO: Renamed 'tf.initializers.variables' to 'tf.compat.v1.initializers.variables'
315:30: INFO: Renamed 'tf.global_variables_initializer' to 'tf.compat.v1.global_variables_initializer'
335:30: INFO: Renamed 'tf.ConfigProto' to 'tf.compat.v1.ConfigProto'
337:31: INFO: Renamed 'tf.train.SessionManager' to 'tf.compat.v1.train.SessionManager'
340:44: INFO: Renamed 'tf.report_uninitialized_variables' to 'tf.compat.v1.report_uninitialized_variables'
367:42: INFO: tf.summary.FileWriter requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
367:42: INFO: Renamed 'tf.summary.FileWriter' to 'tf.compat.v1.summary.FileWriter'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/math_utils.py'
 outputting to 'btgym2/algorithms/math_utils.py'
--------------------------------------------------------------------------------

39:18: INFO: Added keywords to args of function 'tf.reduce_max'
41:9: INFO: Added keywords to args of function 'tf.reduce_sum'
43:11: INFO: Added keywords to args of function 'tf.reduce_sum'
43:31: INFO: Renamed 'tf.log' to 'tf.math.log'
47:20: INFO: Added keywords to args of function 'tf.reduce_max'
48:20: INFO: Added keywords to args of function 'tf.reduce_max'
51:9: INFO: Added keywords to args of function 'tf.reduce_sum'
52:9: INFO: Added keywords to args of function 'tf.reduce_sum'
54:11: INFO: Added keywords to args of function 'tf.reduce_sum'
54:36: INFO: Renamed 'tf.log' to 'tf.math.log'
54:54: INFO: Renamed 'tf.log' to 'tf.math.log'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/launcher/__init__.py'
 outputting to 'btgym2/algorithms/launcher/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/launcher/base.py'
 outputting to 'btgym2/algorithms/launcher/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/launcher/meta.py'
 outputting to 'btgym2/algorithms/launcher/meta.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/runner/synchro.py'
 outputting to 'btgym2/algorithms/runner/synchro.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/runner/__init__.py'
 outputting to 'btgym2/algorithms/runner/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/runner/base.py'
 outputting to 'btgym2/algorithms/runner/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/runner/threadrunner.py'
 outputting to 'btgym2/algorithms/runner/threadrunner.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/nn/networks.py'
 outputting to 'btgym2/algorithms/nn/networks.py'
--------------------------------------------------------------------------------

39:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
58:20: INFO: Changing keep_prob arg of tf.nn.dropout to rate

126:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
129:22: INFO: Renamed 'tf.nn.static_rnn' to 'tf.compat.v1.nn.static_rnn'
134:22: INFO: Renamed 'tf.nn.dynamic_rnn' to 'tf.compat.v1.nn.dynamic_rnn'
140:24: INFO: Renamed 'tf.nn.rnn_cell.DropoutWrapper' to 'tf.compat.v1.nn.rnn_cell.DropoutWrapper'
146:35: INFO: Added keywords to args of function 'tf.shape'
186:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
250:18: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
251:23: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
261:8: INFO: Added keywords to args of function 'tf.reduce_mean'
263:12: INFO: Added keywords to args of function 'tf.nn.max_pool'
263:12: INFO: Renamed keyword argument for tf.nn.max_pool from value to input
263:12: INFO: Renamed 'tf.nn.max_pool' to 'tf.nn.max_pool2d'
288:24: INFO: Changing tf.contrib.layers xavier initializer to a tf.compat.v1.keras.initializers.VarianceScaling and converting arguments.

299:16: INFO: Added keywords to args of function 'tf.reduce_mean'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/nn/losses.py'
 outputting to 'btgym2/algorithms/nn/losses.py'
--------------------------------------------------------------------------------

28:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

28:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
29:26: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
33:18: INFO: Added keywords to args of function 'tf.reduce_mean'
34:24: INFO: 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.
34:24: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
35:18: INFO: Added keywords to args of function 'tf.reduce_mean'
39:18: INFO: Added keywords to args of function 'tf.reduce_mean'
40:24: INFO: Added keywords to args of function 'tf.reduce_mean'
43:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
43:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
44:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
44:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
48:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
48:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
49:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
49:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
82:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

82:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
83:24: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
88:14: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
98:25: INFO: Added keywords to args of function 'tf.reduce_mean'
99:18: INFO: 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.
99:18: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
100:18: INFO: Added keywords to args of function 'tf.reduce_mean'
105:24: INFO: Added keywords to args of function 'tf.reduce_mean'
106:18: INFO: Added keywords to args of function 'tf.reduce_mean'
107:26: INFO: Added keywords to args of function 'tf.reduce_mean'
110:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
110:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
111:12: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
111:12: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
115:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
115:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
116:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
116:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
117:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
117:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
118:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
118:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
139:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

139:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
140:15: INFO: 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.
140:15: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
143:25: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
143:25: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
175:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

175:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
177:60: INFO: Added keywords to args of function 'tf.shape'
179:22: INFO: Added keywords to args of function 'tf.reduce_sum'
181:21: INFO: Added keywords to args of function 'tf.shape'
182:15: INFO: Added keywords to args of function 'tf.reduce_sum'
185:25: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
185:25: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
216:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

216:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
217:15: INFO: Renamed 'tf.nn.softmax_cross_entropy_with_logits_v2' to 'tf.nn.softmax_cross_entropy_with_logits'
222:25: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
222:25: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
244:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

244:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
245:15: INFO: 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.
245:15: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
248:25: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
248:25: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
277:9: INFO: `name` passed to `name_scope`. Because you may be re-entering an existing scope, it is not safe to convert automatically,  the v2 name_scope does not support re-entering scopes by name.

277:9: INFO: Renamed 'tf.name_scope' to 'tf.compat.v1.name_scope'
278:17: INFO: 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.
278:17: INFO: Renamed 'tf.losses.mean_squared_error' to 'tf.compat.v1.losses.mean_squared_error'
279:19: INFO: Added keywords to args of function 'tf.reduce_mean'
283:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
283:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
284:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
284:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/nn/__init__.py'
 outputting to 'btgym2/algorithms/nn/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/nn/ae.py'
 outputting to 'btgym2/algorithms/nn/ae.py'
--------------------------------------------------------------------------------

34:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
86:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
94:16: INFO: Renamed 'tf.image.resize_images' to 'tf.image.resize'
159:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
226:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
316:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
361:14: INFO: Renamed 'tf.random_normal' to 'tf.random.normal'
362:19: INFO: Added keywords to args of function 'tf.shape'
408:19: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
413:24: INFO: Added keywords to args of function 'tf.reduce_mean'
416:25: INFO: Added keywords to args of function 'tf.gradients'
419:35: INFO: Added keywords to args of function 'tf.reduce_mean'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/nn/layers.py'
 outputting to 'btgym2/algorithms/nn/layers.py'
--------------------------------------------------------------------------------

34:23: INFO: Added keywords to args of function 'tf.multinomial'
34:23: INFO: Renamed 'tf.multinomial' to 'tf.random.categorical'
43:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
44:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
44:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
45:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
45:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
45:54: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
45:54: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
59:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
64:18: INFO: tf.random_uniform_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
64:18: INFO: Renamed 'tf.random_uniform_initializer' to 'tf.compat.v1.random_uniform_initializer'
66:21: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
66:21: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
68:12: INFO: Renamed 'tf.random_normal' to 'tf.random.normal'
69:12: INFO: Renamed 'tf.random_normal' to 'tf.random.normal'
74:15: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
74:15: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
75:18: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
75:18: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
80:19: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
80:19: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
81:22: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
81:22: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
93:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
97:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
97:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
97:66: INFO: Changing tf.contrib.layers xavier initializer to a tf.compat.v1.keras.initializers.VarianceScaling and converting arguments.

99:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
99:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
99:69: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
99:69: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
101:15: INFO: Added keywords to args of function 'tf.nn.conv2d'
101:15: INFO: Renamed keyword argument for tf.nn.conv2d from filter to filters
110:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
113:21: INFO: Added keywords to args of function 'tf.shape'
129:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
129:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
129:68: INFO: Changing tf.contrib.layers xavier initializer to a tf.compat.v1.keras.initializers.VarianceScaling and converting arguments.

131:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
131:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
131:75: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
131:75: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
144:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
153:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
153:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
153:66: INFO: Changing tf.contrib.layers xavier initializer to a tf.compat.v1.keras.initializers.VarianceScaling and converting arguments.

155:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
155:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
155:66: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
155:66: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
157:15: INFO: Added keywords to args of function 'tf.nn.conv1d'
157:15: INFO: Renamed keyword argument for tf.nn.conv1d from value to input
165:9: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
173:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
173:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
174:28: INFO: Changing tf.contrib.layers xavier initializer to a tf.compat.v1.keras.initializers.VarianceScaling and converting arguments.

175:12: WARNING: tf.get_variable requires manual check. tf.get_variable returns ResourceVariables by default in 2.0, which have well-defined semantics and are stricter about shapes. You can disable this behavior by passing use_resource=False, or by calling tf.compat.v1.disable_resource_variables().
175:12: INFO: Renamed 'tf.get_variable' to 'tf.compat.v1.get_variable'
176:40: INFO: tf.constant_initializer requires manual check. Initializers no longer have the dtype argument in the constructor or partition_info argument in the __call__ method.
The calls have been converted to compat.v1 for safety (even though they may already have been correct).
176:40: INFO: Renamed 'tf.constant_initializer' to 'tf.compat.v1.constant_initializer'
177:15: INFO: Added keywords to args of function 'tf.nn.depthwise_conv2d'
177:15: INFO: Renamed keyword argument for tf.nn.depthwise_conv2d from rate to dilations
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/policy/stacked_lstm.py'
 outputting to 'btgym2/algorithms/policy/stacked_lstm.py'
--------------------------------------------------------------------------------

30:32: WARNING: tf.contrib.rnn.LayerNormBasicLSTMCell requires manual check. (Manual edit required) `tf.contrib.rnn.LayerNormBasicLSTMCell` has been migrated to `tfa.rnn.LayerNormLSTMCell` in TensorFlow Addons. The API spec may have changed during the migration. Please see https://github.com/tensorflow/addons for more info.
30:32: WARNING: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib.rnn. (Manual edit required) tf.contrib.rnn.* has been deprecated, and widely used cells/functions will be moved to tensorflow/addons repository. Please check it there and file Github issues if necessary.
30:32: ERROR: Using member tf.contrib.rnn.LayerNormBasicLSTMCell in deprecated module tf.contrib. tf.contrib.rnn.LayerNormBasicLSTMCell 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.
80:40: INFO: Renamed 'tf.AUTO_REUSE' to 'tf.compat.v1.AUTO_REUSE'
96:28: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
101:33: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
103:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
108:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
111:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
112:30: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
114:30: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
115:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
125:31: INFO: Renamed 'tf.placeholder_with_default' to 'tf.compat.v1.placeholder_with_default'
164:26: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
183:31: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
203:12: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
210:26: INFO: Added keywords to args of function 'tf.shape'
311:35: INFO: Added keywords to args of function 'tf.transpose'
393:26: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
412:31: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
429:26: INFO: Added keywords to args of function 'tf.shape'
605:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
617:30: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
636:35: INFO: Renamed 'tf.layers.flatten' to 'tf.compat.v1.layers.flatten'
658:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
658:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
660:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
660:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
660:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
661:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
661:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
661:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
664:24: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
664:42: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
664:76: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
724:19: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/policy/__init__.py'
 outputting to 'btgym2/algorithms/policy/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/policy/base.py'
 outputting to 'btgym2/algorithms/policy/base.py'
--------------------------------------------------------------------------------

81:28: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
86:33: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
88:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
93:34: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
96:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
97:30: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
99:30: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
100:31: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
107:31: INFO: Renamed 'tf.placeholder_with_default' to 'tf.compat.v1.placeholder_with_default'
117:26: INFO: Added keywords to args of function 'tf.shape'
170:26: INFO: Added keywords to args of function 'tf.shape'
242:29: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
255:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
255:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
257:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
257:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
257:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
258:26: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
258:44: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
258:75: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
261:24: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
261:42: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
261:76: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
276:15: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
296:19: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
356:15: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
383:15: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/algorithms/policy/meta.py'
 outputting to 'btgym2/algorithms/policy/meta.py'
--------------------------------------------------------------------------------

22:13: INFO: Renamed 'tf.variable_scope' to 'tf.compat.v1.variable_scope'
27:33: INFO: Renamed 'tf.placeholder' to 'tf.compat.v1.placeholder'
29:30: INFO: Added keywords to args of function 'tf.reduce_mean'
46:36: INFO: Renamed 'tf.scatter_nd_add' to 'tf.compat.v1.scatter_nd_add'
52:33: INFO: Renamed 'tf.scatter_nd_update' to 'tf.compat.v1.scatter_nd_update'
54:28: INFO: Renamed 'tf.assign' to 'tf.compat.v1.assign'
60:19: INFO: Renamed 'tf.layers.dense' to 'tf.compat.v1.layers.dense'
66:34: INFO: Renamed 'tf.layers.dense' to 'tf.compat.v1.layers.dense'
72:32: INFO: Renamed 'tf.distributions.Bernoulli' to 'tf.compat.v1.distributions.Bernoulli'
73:22: INFO: Added keywords to args of function 'tf.reduce_max'
77:28: INFO: Renamed 'tf.get_collection' to 'tf.compat.v1.get_collection'
77:46: INFO: Renamed 'tf.GraphKeys' to 'tf.compat.v1.GraphKeys'
77:80: INFO: Renamed 'tf.get_variable_scope' to 'tf.compat.v1.get_variable_scope'
88:24: INFO: Added keywords to args of function 'tf.reduce_mean'
91:25: INFO: Added keywords to args of function 'tf.gradients'
94:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
94:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
95:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
95:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
97:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
97:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
98:16: INFO: tf.summary.histogram requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
98:16: INFO: Renamed 'tf.summary.histogram' to 'tf.compat.v1.summary.histogram'
99:16: INFO: tf.summary.scalar requires manual check. The TF 1.x summary API cannot be automatically migrated to TF 2.0, so symbols have been converted to tf.compat.v1.summary.* and must be migrated manually. Typical usage will only require changes to the summary writing logic, not to individual calls like scalar(). For examples of the new summary API, see the Effective TF 2.0 migration document or check the TF 2.0 TensorBoard tutorials.
99:16: INFO: Renamed 'tf.summary.scalar' to 'tf.compat.v1.summary.scalar'
99:48: INFO: Renamed 'tf.global_norm' to 'tf.linalg.global_norm'
103:15: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
108:15: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
125:15: INFO: Renamed 'tf.get_default_session' to 'tf.compat.v1.get_default_session'
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/rendering/__init__.py'
 outputting to 'btgym2/rendering/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/rendering/renderer.py'
 outputting to 'btgym2/rendering/renderer.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/rendering/plotter.py'
 outputting to 'btgym2/rendering/plotter.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/envs/__init__.py'
 outputting to 'btgym2/envs/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/envs/multidiscrete.py'
 outputting to 'btgym2/envs/multidiscrete.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/envs/base.py'
 outputting to 'btgym2/envs/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/envs/portfolio.py'
 outputting to 'btgym2/envs/portfolio.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/test_data.py'
 outputting to 'btgym2/datafeed/test_data.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/test_casual_data.py'
 outputting to 'btgym2/datafeed/test_casual_data.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/multi.py'
 outputting to 'btgym2/datafeed/multi.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/__init__.py'
 outputting to 'btgym2/datafeed/__init__.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/base.py'
 outputting to 'btgym2/datafeed/base.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/derivative.py'
 outputting to 'btgym2/datafeed/derivative.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/casual.py'
 outputting to 'btgym2/datafeed/casual.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Processing file 'btgym/datafeed/stateful.py'
 outputting to 'btgym2/datafeed/stateful.py'
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------


@Kismuz
Copy link
Owner

Kismuz commented Jul 10, 2020

@mcrowson , sorry for late reply/ I do not have plans to make support for TF2 ( should been mentioned that in package description) in near future due to lack of time/ If you can do commit on that - think it would be extremely helpful for others/ note that current tf code relies heavily on variables collections which needs to be refactored manually, so the process could take more time than expected

@woj-i
Copy link
Contributor

woj-i commented Aug 28, 2020

Hi @mcrowson! Are you going to work on this upgrade? If not- I can take it. If you have some work already done please commit it to your repo, then I could start from that point.

@mcrowson
Copy link
Contributor Author

I do not plan to work on this. Go for it.

@woj-i
Copy link
Contributor

woj-i commented Sep 10, 2020

I did some fixes and now I am try to run all notebooks in examples. I can't see any unit tests in the project. Are they somewhere? Any suggestions how to test my changes?

@Kismuz
Copy link
Owner

Kismuz commented Sep 20, 2020

@woj-i - sorry for late reply,
no there is no unit tests for algorithms-related code.
I only used it for some complex data iteration checks like here:
https://github.com/Kismuz/btgym/blob/master/btgym/datafeed/test_data.py

@woj-i
Copy link
Contributor

woj-i commented Oct 5, 2020

The migration process is not easy in this case. I would need some help here #144

@viper7882
Copy link

Hi @Kismuz,

Using Virtual Environment created through PyCharm UBuntu Linux, I'm getting the following error during installation of setup.py:

ERROR: Could not find a version that satisfies the requirement tensorflow<2,>=1.5 (from btgym) (from versions: 2.2.0rc1, 2.2.0rc2, 2.2.0rc3, 2.2.0rc4, 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.3.0rc0, 2.3.0rc1, 2.3.0rc2, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.4.0rc0, 2.4.0rc1, 2.4.0rc2, 2.4.0rc3, 2.4.0rc4, 2.4.0, 2.4.1, 2.4.2, 2.4.3, 2.5.0rc0, 2.5.0rc1, 2.5.0rc2, 2.5.0rc3, 2.5.0, 2.5.1, 2.6.0rc0, 2.6.0rc1, 2.6.0rc2, 2.6.0, 2.7.0rc0, 2.7.0rc1)
ERROR: No matching distribution found for tensorflow<2,>=1.5

It does not seems like PyPI is officially supporting tensorflow <2 anymore. If no one is willing to migrate this btgym to Tensorflow 2, I foresee that btgym is going to EOL soon because new user like myself could no longer install btgym.

If that's the direction btgym is heading to, I feel sad to see this fantastic project going to EOL.

Alternatively, is there a plan to allow user to switch to other backend such as PyTorch besides Tensorflow?

Or even better, strip btgym from any backend and let user hook them up by their own?

My understanding for matplotlib to plot chart is slower than Plotly. Is there any plan to allow user to switch to Plotly as graph backend as well?

@Kismuz
Copy link
Owner

Kismuz commented Nov 5, 2021

@viper7882

  • environment itself does not requires TF, it is only algorithms subpackage that uses it. One can comment out the requirement and proceed with installation. As far as I know there are users running standalone btgym env with pytorch-implemented policies
  • TF 2 can be run in v1 compatibility mode, there is a branch by contributing people went to stall, see Migration to Tensorflow2 #144
  • in general, yes, I do not see reasons to further develop the project since it became evident that one can't build realistic trading strategies based only on OHLC data and its derivative indicators. To get good predictors one should utilise level2 data and build features upon order flow and order book events. This can't be implemented without rebuilding Btgym from scratch since it is the limitation imposed by Backtrader package -- a core backtesting library Btgym uses under the hood.

@mysl
Copy link

mysl commented Nov 24, 2021

it became evident that one can't build realistic trading strategies based only on OHLC data and its derivative indicators.

@Kismuz even for statistical arbitrage scenario? I remembered you have mentioned some fund had success in applying RL in arbitrage (sure, we don't know if they use level2 or OHLC)? Maybe you could share some of your personal experience? thanks!

@Kismuz
Copy link
Owner

Kismuz commented Nov 25, 2021

@Kismuz even for statistical arbitrage scenario?

@mysl - It depends on market efficiency. From my experience OHLC-data approach does not works steadily on FX, stocks and other mature markets. A year ago it was possible to apply it to crypto; but as for now these strategies performance has been degraded.

I remembered you have mentioned some fund had success in applying RL in arbitrage (sure, we don't know if they use level2 or OHLC)? Maybe you could share some of your personal experience? thanks!

to my humble experience LOB and trade flow data bear sufficient predictive ability even on mature markets

@mysl
Copy link

mysl commented Nov 26, 2021

@Kismuz , thanks so much for the sharing. May I know the timeframe of the trade driven by the prediction from LOB? Holding position for a few or dozens of seconds?

@yglpyn8888
Copy link

  • in general, yes, I do not see reasons to further develop the project since it became evident that one can't build realistic trading strategies based only on OHLC data and its derivative indicators. To get good predictors one should utilise level2 data and build features upon order flow and order book events. This can't be implemented without rebuilding Btgym from scratch since it is the limitation imposed by Backtrader package -- a core backtesting library Btgym uses under the hood.

Hello, it's so sad to see this project will not be updated. You mentioned before " To get good predictors one should utilise level2 data and build features upon order flow and order book events. This can't be implemented without rebuilding Btgym from scratch",
I really don't know why I can't use features like order flow to train in this environment. Because I don't think what features users use has anything to do with the environment framework itself, the environment just need receive my feature dataframe (eg. the df include ohlcv columns and other features columns), and then it's ok.
The environment does not need to be related to the specific feature implementation at all, and users will use other methods to generate this feature DF.
Therefore, I only need an environment, which can provide the correct order matching process, correctly simulate the commission fee, margin, support long and short selling, etc., and provide users with their own reward function and action space. thats enough! Thank you again for your work.

@Kismuz
Copy link
Owner

Kismuz commented Dec 6, 2021

@yglpyn8888 , you're correct

which can provide the correct order matching process,

... and that's exactly what is not possible with current environment implementation which uses Backtrader package as core backtesting engine

@yglpyn8888
Copy link

@yglpyn8888 , you're correct

which can provide the correct order matching process,

... and that's exactly what is not possible with current environment implementation which uses Backtrader package as core backtesting engine

OK,do you have plan to implement a new trading environment in the future, which is not based on backtrader, just provides the core functions of an environment ?
(by the way, a fully functional trading environment is hard to find. I tried tensortrade before, but they don't support short selling)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants
@mysl @mcrowson @woj-i @Kismuz @viper7882 @yglpyn8888 and others