当代码跨越多个Jupyter单元时,Tensorflow LSTM变量范围ValueError

时间:2017-09-22 17:30:08

标签: tensorflow jupyter-notebook jupyter lstm

起初我以为我误解了Tensorflow API。现在我怀疑我只是误解了Jupyter笔记本中如何管理变量范围。

如果我将所有代码插入jupyter笔记本中的单个单元格并运行它,Tensorflow的LSTM教程示例recurrent_network.py可以很好地工作。但是当我将程序划分为单独的单元格时,即使以正确的顺序运行所有内容(首先是定义等),我也会得到一个变量范围错误:

     15     # Get lstm cell output
---> 16     outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32)
  

ValueError:变量rnn / basic_lstm_cell / kernel已存在,   不允许。你的意思是在VarScope中设置reuse = True吗?本来   定义于:site-packages \ tensorflow \ python \ framework \ ops.py",line   1269,在 init

其他StackOverflow文章解决了人们重复使用基本LSTM单元格时出现此错误的问题,但是我没有重复使用LSTM单元格,而且我的jupyter笔记本中的代码在我的jupyter笔记本中运行正常在一个牢房里。

可能会发生什么?

1 个答案:

答案 0 :(得分:0)

显然,我正在重用LSTM单元格,因为我运行了recurrent_network.py,然后运行了我自己的更改版本。重新启动jupyter内核修复了问题,这就是我发现错误的方法。

值得注意的是会议失败是不够的。显然,只需在同一笔记本中对BasicLSTMCell进行多次调用就会遇到麻烦。