【问题标题】:RuntimeError: Attempted to use a closed Session in tflearnRuntimeError:尝试在 tflearn 中使用已关闭的会话
【发布时间】:2017-07-25 20:15:05
【问题描述】:

我想用 tflearn 训练我的模型,但我得到了上面显示的错误。 这是我的训练循环: 顺便说一句,我将训练输入拆分为单独的 numpy 文件

for i in range(EPOCHS):
    for file in filess:

        file = np.load(file)
        x = []
        y = []
        for a, b in file:
            x.append(a)
            y.append(b[0])
        x = np.array(x).reshape(-1,WIDTH,HEIGHT,1)
        for sd in range(len(y)):
            idx = genres.index(y[sd])
            y[sd] = idx
        print(y)
        y = np.array(y)
        try:
            model.load(MODEL_NAME)
        except:
            print("no model")

        model.fit({'input': x}, {'targets': y}, n_epoch=1, 
snapshot_step=500, show_metric=True, run_id=MODEL_NAME)

        model.save(MODEL_NAME)`

这是完整的错误信息:

`Traceback (most recent call last):
File "main.py", line 39, in <module>
model.fit({'input': x}, {'targets': y}, n_epoch=1, snapshot_step=500, 
show_metric=True, run_id=MODEL_NAME)
File "D:\Anaconda3\envs\python35\lib\site-packages\tflearn\models\dnn.py", 
line 215, in fit
callbacks=callbacks)
File "D:\Anaconda3\envs\python35\lib\site-
packages\tflearn\helpers\trainer.py", line 356, in fit
self.train_ops = original_train_ops
File "D:\Anaconda3\envs\python35\lib\contextlib.py", line 77, in __exit__
self.gen.throw(type, value, traceback)
File "D:\Anaconda3\envs\python35\lib\site-
packages\tensorflow\python\framework\ops.py", line 3625, in get_controller
yield default
File "D:\Anaconda3\envs\python35\lib\site-
packages\tflearn\helpers\trainer.py", line 336, in fit
show_metric)
File "D:\Anaconda3\envs\python35\lib\site-
packages\tflearn\helpers\trainer.py", line 775, in _train
tflearn.is_training(True, session=self.session)
File "D:\Anaconda3\envs\python35\lib\site-packages\tflearn\config.py", line 
95, in is_training
tf.get_collection('is_training_ops')[0].eval(session=session)
File "D:\Anaconda3\envs\python35\lib\site-
packages\tensorflow\python\framework\ops.py", line 569, in eval
return _eval_using_default_session(self, feed_dict, self.graph, session)
File "D:\Anaconda3\envs\python35\lib\site-
packages\tensorflow\python\framework\ops.py", line 3741, in 
_eval_using_default_session
return session.run(tensors, feed_dict)
File "D:\Anaconda3\envs\python35\lib\site-
packages\tensorflow\python\client\session.py", line 778, in run
run_metadata_ptr)
File "D:\Anaconda3\envs\python35\lib\site-
packages\tensorflow\python\client\session.py", line 914, in _run
raise RuntimeError('Attempted to use a closed Session.')
RuntimeError: Attempted to use a closed Session.`

我真的希望你能帮助我,因为我已经尝试了一段时间,但我没有找到任何解决方案

【问题讨论】:

  • 您需要提供更多代码。在 for i in range(EPOCHS): 之前,你应该有类似 with tf.Session() as sess: 的东西,它会打开一个 tensorflow 会话。有关详细信息,请参阅此相关问题:stackoverflow.com/questions/37568980/…

标签: python numpy tflearn


【解决方案1】:

我用if os.path.exists(...)替换了try/except

但是save(MODEL_NAME) 不会创建一个名称为MODEL_NAME 的文件,而是创建一个名称为"MODEL_NAME.meta""MODEL_NAME.index""MODEL_NAME.data-00000-of-00001" 的文件,因此if os.path.exists(...) 必须检查其中一个文件。

import os

if os.path.exists(MODEL_NAME + ".meta"):
    model.load(MODEL_NAME)
else:
    model.fit(...)
    model.save(MODEL_NAME)

创建为问题的答案:Creating an ai chatbot, but getting a traceback error

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。要解决它,你应该删除except:try:,这样:

        print("no model")
    
        model.fit({'input': x}, {'targets': y}, n_epoch=1, 
    

    那么它就会正常工作。

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 1970-01-01
      • 2018-03-09
      • 2017-06-22
      • 2010-11-29
      • 2019-09-11
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多