Tensorflow.keras:AlreadyExistsError

Posted

技术标签:

【中文标题】Tensorflow.keras:AlreadyExistsError【英文标题】:Tensorflow.keras: AlreadyExistsError 【发布时间】:2020-06-01 19:55:16 【问题描述】:

我正在使用 tensorflow 构建模型。我训练了我的模型,它工作正常。然后,我修改了我的代码,当我尝试训练我的模型时,我得到了一个 AlreadyExistError。我重新启动了 Jupyter Notebook,但仍然遇到同样的错误。我需要一些帮助。 这是我构建网络并训练它的一段代码。问题出现在最后一行。

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, Dropout, Dense, Flatten, LSTM, MaxPooling1D, Bidirectional
from tensorflow.keras.optimizers import Adam
from keras.callbacks import EarlyStopping, TensorBoard

model = Sequential()

model.add(Conv1D(32, kernel_size=3, activation='elu', padding='same',
                 input_shape=(vector_size, 1)))
model.add(Conv1D(32, kernel_size=3, activation='elu', padding='same'))
model.add(Conv1D(32, kernel_size=3, activation='relu', padding='same'))
model.add(MaxPooling1D(pool_size=3))

model.add(Bidirectional(LSTM(512, dropout=0.2, recurrent_dropout=0.3)))

model.add(Dense(512, activation='sigmoid'))
model.add(Dropout(0.2))
model.add(Dense(512, activation='sigmoid'))
model.add(Dropout(0.25))
model.add(Dense(512, activation='sigmoid'))
model.add(Dropout(0.25))

model.add(Dense(2, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.0001, decay=1e-6), metrics=['accuracy'])

tensorboard = TensorBoard(log_dir='logs/', histogram_freq=0, write_graph=True, write_images=True)

model.summary()
model.fit(np.array(x_train), np.array(y_train), batch_size=batch_size, epochs=no_epochs,
         validation_data=(np.array(x_test), np.array(y_test)),  callbacks=[tensorboard, EarlyStopping(min_delta=0.0001, patience=3)])

训练 90000 个样本,验证 10000 个样本 Epoch 1/10 500/90000 [.......................] - 预计到达时间:2:00:49 /anaconda3/lib/python3.7/site-packages/keras/callbacks/callbacks.py:846: RuntimeWarning:提前停止取决于指标val_loss 不可用。可用的指标是:(self.monitor, ','.join(list(logs.keys()))), RuntimeWarning -------------------------------------------------- ------------------------- AlreadyExistsError Traceback(最近一次调用 最后)在 1 model.fit(np.array(x_train), np.array(y_train), batch_size=batch_size, epochs=no_epochs, ----> 2 验证数据=(np.array(x_test), np.array(y_test)), 回调=[张量板, EarlyStopping(min_delta=0.0001, 耐心=3)]) 3 print('你可以继续')

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split,validation_data,shuffle,class_weight, sample_weight,initial_epoch,steps_per_epoch,validation_steps, 验证频率,最大队列大小,工人,使用多处理, **kwargs) 第817章 818名工人=工人, --> 819 使用_多处理=使用_多处理) 820 第821章

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py 适合(自我,模型,x,y,batch_size,epochs,详细,回调, validation_split,validation_data,shuffle,class_weight, sample_weight,initial_epoch,steps_per_epoch,validation_steps, 验证频率,最大队列大小,工人,使用多处理, **kwargs) 340 模式=ModeKeys.训练, 第341章 --> 342 total_epochs=epochs) 第343章 第344章

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2.py 在 run_one_epoch(模型,迭代器,execution_function,dataset_size, batch_size,策略,steps_per_epoch,num_samples,模式, training_context,total_epochs) 126 step=step, mode=mode, size=current_batch_size) 作为batch_logs: 127 尝试: --> 128 批输出 = 执行函数(迭代器) 129 除了(StopIteration,errors.OutOfRangeError): 130 # TODO(kaftan): File bug about tf function and errors.OutOfRangeError?

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_v2_utils.py 在 execution_function(input_fn) 96 # numpy 在 Eager 模式下将张量转换为值。 97 返回嵌套映射结构(_non_none_constant_value, ---> 98 分布式函数(input_fn)) 99 100 返回执行函数

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/def_function.py 在调用(自我,*args,**kwds) 第566章 567 其他: --> 568 结果 = self._call(*args, **kwds) 569 570 if tracking_count == self._get_tracing_count():

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/def_function.py 在 _call(self, *args, **kwds) 630 # 提升成功,所以变量被初始化,我们可以运行 631 # 无状态函数。 --> 632 返回 self._stateless_fn(*args, **kwds) 633 其他: 第634章

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py 在 调用(self, *args, **kwargs) 2361 with self._lock: 第2362章 self._maybe_define_function(args, kwargs) -> 2363 return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access 2364 2365 @property

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py 在 _filtered_call(self, args, kwargs) 1609 如果 isinstance(t, (ops.Tensor, 1610 resource_variable_ops.BaseResourceVariable))), -> 1611 self.captured_inputs)1612 1613 def _call_flat(self,args,captured_inputs,cancellation_manager=None):

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py 在 _call_flat(self, args, capture_inputs, cancel_manager) 1690 # 没有磁带在看;跳到运行函数。 1691返回 self._build_call_outputs(self._inference_function.call( -> 1692 ctx,args,cancellation_manager=cancellation_manager)) 1693 forward_backward = self._select_forward_and_backward_functions( 1694 个参数,

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py 通话中(self,ctx,args,cancellation_manager) 543 个输入=参数, 第544章 --> 545 ctx=ctx) 546 其他: 547 个输出 = 执行.execute_with_cancellation(

/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/eager/execute.py 在 quick_execute(op_name, num_outputs, 输入, attrs, ctx, name) 65 其他: 66 消息 = e.message ---> 67 6.raise_from(core._status_to_exception(e.code, message), None) 68 除了 TypeError 为 e: 69 keras_symbolic_tensors = [

/anaconda3/lib/python3.7/site-packages/six.py in raise_from(value, from_value)

AlreadyExistsError: 资源 __per_step_0/sequential/bidirectional/forward_lstm/while_grad/body/_429/gradients/AddN_13/tmp_var/N10tensorflow19TemporaryVariableOp6TmpVarE [[节点 顺序/双向/forward_lstm/while_grad/body/_429/gradients/AddN_13/tmp_var]] [操作:__inference_distributed_function_12060]

函数调用栈:distributed_function

【问题讨论】:

你能给出错误堆栈跟踪吗? 我是通过修改帖子添加的 【参考方案1】:

您必须在训练时发现与之前运行相同的架构存在问题。

这应该重置 keras 会话:

from tensorflow.keras import backend
backend.clear_session()

【讨论】:

我将我的 TF 版本降级到 TF 2.0.0,现在可以正常工作了。感谢您的帮助。【参考方案2】:

在我的例子中,我在 AWS 上使用 EMR 时遇到了问题,我解决了只是卸载 Keras,如果你有 tensorflow,你已经有 Keras,但是还有其他包依赖于旧的 Keras 库。所以你需要卸载旧的 Keras 来避免这个问题。

!pip 卸载 keras

【讨论】:

以上是关于Tensorflow.keras:AlreadyExistsError的主要内容,如果未能解决你的问题,请参考以下文章

使用 Tensorflow.keras 组织项目。应该是 tf.keras.Model 的一个子类吗?

如何在训练 tensorflow.keras 期间替换损失函数

Tensorflow.keras:AlreadyExistsError

如何减少 Tensorflow/Keras 使用的 CPU 数量?

tensorflow.keras.layers:ImportError:无法导入名称“CuDNNLSTM”

TensorFlow 2.0 Keras:如何为 TensorBoard 编写图像摘要