无法在 Jupyter Notebook 中多次 运行 Tensorflow 代码
Cannot run Tensorflow code multiple times in Jupyter Notebook
我在挣扎运行 Tensorflow (v1.1) 在 Jupyter Notebook 中多次编码。
例如,我执行了这个为 seq2seq 模型创建编码层的简单代码片段:
# Construct encoder layer (LSTM)
encoder_cell = tf.contrib.rnn.LSTMCell(encoder_hidden_units)
encoder_outputs, encoder_final_state = tf.nn.dynamic_rnn(
encoder_cell, encoder_inputs_embedded,
dtype=tf.float32, time_major=False
)
第一次完全没问题,我的编码器已创建。
但是,如果我重新运行它(无论我应用了哪些更改),我都会收到此错误:
Attempt to have a second RNNCell use the weights of a variable scope that already has weights
这很烦人,因为每次我想更改图层时它都迫使我重新启动内核。
有人可以向我解释为什么会发生这种情况以及我该如何解决这个问题吗?
谢谢!
您试图两次构建完全相同的图,因此 TensorFlow 会报错,因为变量已经存在于默认图中。
您可以做的是在尝试第二次调用该方法之前调用 tf.reset_default_graph()
,以确保在需要时创建新图形。
以防万一,我还建议使用 here 在 启动 TensorFlow InteractiveSession 部分中描述的交互式会话:
import tensorflow as tf
sess = tf.InteractiveSession()
我在挣扎运行 Tensorflow (v1.1) 在 Jupyter Notebook 中多次编码。
例如,我执行了这个为 seq2seq 模型创建编码层的简单代码片段:
# Construct encoder layer (LSTM)
encoder_cell = tf.contrib.rnn.LSTMCell(encoder_hidden_units)
encoder_outputs, encoder_final_state = tf.nn.dynamic_rnn(
encoder_cell, encoder_inputs_embedded,
dtype=tf.float32, time_major=False
)
第一次完全没问题,我的编码器已创建。
但是,如果我重新运行它(无论我应用了哪些更改),我都会收到此错误:
Attempt to have a second RNNCell use the weights of a variable scope that already has weights
这很烦人,因为每次我想更改图层时它都迫使我重新启动内核。
有人可以向我解释为什么会发生这种情况以及我该如何解决这个问题吗?
谢谢!
您试图两次构建完全相同的图,因此 TensorFlow 会报错,因为变量已经存在于默认图中。
您可以做的是在尝试第二次调用该方法之前调用 tf.reset_default_graph()
,以确保在需要时创建新图形。
以防万一,我还建议使用 here 在 启动 TensorFlow InteractiveSession 部分中描述的交互式会话:
import tensorflow as tf
sess = tf.InteractiveSession()