零python基础看程序之版本改动下的tf.contrib.rnn.BasicLSTMCell、placeholder等修改方法

第一种方法 采用compat.v1再修改

博主采用的环境是tf-gpu2.0.0
Github程序应该是比较老的tf1超早期版本。在采用了
import tensorflow.compat.v1 as tf之后依旧出现与tf.contrib相关的属性缺失的问题。原因在于tf版本的不匹配。

主要有以下汇总:
tf.contrib.rnn.BasicLSTMCell 改为 tf.nn.rnn_cell.BasicLSTMCell
tf.contrib.rnn.MultiRNNCell 改为 tf.nn.rnn_cell.MultiRNNCell
tf.contrib.rnn.static_rnn 改为 tf.nn.static_rnn

RuntimeError: tf.placeholder() is not compatible with eager execution.

改动方式:在import tensorflow.compat.v1 as tf之后添加一句tf.disable_eager_execution()用来关闭紧急执行。

附上Debug结束代码:

final test accuracy: 0.8690193295478821
best epoch's test accuracy: 0.9046487808227539

第二种方法直接在TF2环境修改

那么可能有人会问:我不想用compat.v1,就想单单用tf2,怎么改。我在Debug的过程中,pycharm也给我了相关的Warning提示:

WARNING:tensorflow:///py:59: BasicLSTMCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.
Instructions for updating:
This class is equivalent as tf.keras.layers.LSTMCell, and will be replaced by that in Tensorflow 2.0.
WARNING:tensorflow:///.py:61: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.
Instructions for updating:
This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.
WARNING:tensorflow:///.py:63: static_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.
Instructions for updating:
Please use `keras.layers.RNN(cell, unroll=True)`, which is equivalent to this API
WARNING:tensorflow:From E:\anaconda3\envs\tf2_gpu\lib\site-packages\tensorflow_core\python\ops\rnn_cell_impl.py:735: Layer.add_variable (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.
Instructions for updating:
Please use `layer.add_weight` method instead.
WARNING:tensorflow:From E:\anaconda3\envs\tf2_gpu\lib\site-packages\tensorflow_core\python\ops\rnn_cell_impl.py:739: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
(128,)
WARNING:tensorflow:///.py:142: softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be removed in a future version.
Instructions for updating:

Future major versions of TensorFlow will allow gradients to flow
into the labels input on backprop by default.

See `tf.nn.softmax_cross_entropy_with_logits_v2`.

可以尝试在tf2中采用上面代码块中的替换。
具体如下:
tf.contrib.rnn.BasicLSTMCell 改为 tf.keras.layers.LSTMCell
tf.contrib.rnn.MultiRNNCell 改为 tf.keras.layers.StackedRNNCells
tf.contrib.rnn.static_rnn 改为 keras.layers.RNN(cell, unroll=True)

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值