TensorFlow:Skipping cancelled enqueue attempt with queue not closed

今天运行TensorFlow的代码,没运行完一个epoch就直接报错崩掉了,然后定位错误,发现了一个警告信息如下:

_2_index/fraction_of_32_full/fraction_of_32_full:Skipping cancelled enqueue attempt with queue not closed

接着代码到后面就崩掉了,报错的信息如下:


tensorflow.python.framework.errors_impl.OutOfRangeError:FIFOQueue '_0_batch_join/fifo_queue' is closed and has insufficient elements(requested 64, current size 59)

[[Node: batch_join =QueueDequeueManyV2[component_types=[DT_FLOAT, DT_INT64], timeout_ms=-1,_device="/job:localhost/replica:0/task:0/cpu:0"](batch_join/fifo_queue,batch_join/n)]]

[[Node: batch_join/_2179 =_Recv[client_terminated=false,recv_device="/job:localhost/replica:0/task:0/gpu:0",send_device="/job:localhost/replica:0/task:0/cpu:0",send_device_incarnation=1, tensor_name="edge_12_batch_join",tensor_type=DT_INT64,_device="/job:localhost/replica:0/task:0/gpu:0"]()]]


大致的意思是,在调用batch_join的时候,队列需要64个元素(一个batch_size大小),但是队列中只有59个元素,导致了OutOffRangeError。设置tf.train.batch_join函数中的allow_smaller_final_batch为True可以避免这样的错误发生,不过这会到导致batch_join函数获得的数据的size是不确定的,会带来一系列其他的影响。

在追踪错误发生的过程中,我注意到上述的警告信息,其整个报错和警告关联的业务代码简化版大致如下:


indices_que =tf.train.range_input_producer(range_size, name='index')

deque_op =indices_que.dequeue_many(self.batch_size*self.batch_num,'index_dequeue')

input_queue = tf.FIFOQueue(capacity=100000,dtypes=[tf.string, tf.int64], shapes=[(1,), (1,)], name='input_que')

enque_op = input_queue.enqueue_many([samples],name='enque_op')

batch_sample= tf.train.batch_join(input_queue_list,batch_size= batch_size,enqueue_many=False,capacity=4*num_threads*self.batch_size,allow_smaller_final_batch=False)


其中input_queue_list与input_queue相关,是从input_queue中获取元素处理的一个list(涉及每个线程处理的具体业务逻辑,因此省略)。

而警告信息来自于其中某一个队列,可以看出其enqueue的入队操作没有完成,然后在运行中我尝试打印出deueu_op的结果,其结果无误,每次出对的索引数量都是batch_size*batch_num个,因而问题出现在enque_op部分,猜测是enqueue_many过程没有完成,队列就关闭了。

经过反复检查代码,发现可能导致队列关闭的代码如下:

run_config= tf.ConfigProto()

run_config.operation_timeout_in_ms= 10000

这段代码为TensorFlow所有的阻塞操作定义了一个毫秒级别的超时时间,猜测由于是非主线程的其他线程进行enqueue_many操作,然后入队过程中超时,导致了队列被关闭,但是没有抛出异常到主线程,导致主线程继续运行直至报错。

解决办法也很简单,就是不设置超时时间即可。

上述的问题解决过程中可以看到几点:

1.虽然调用的是enqueue_many操作,但是具体实现的时候,enqueue_many也可能是一个一个元素往队列中存放的。

2.TensorFlow有可能忽略掉非主线程的异常的抛出,因而在运行调试中,要注意一些警告信息,或者自己指定处理非主线程的其他线程的异常信息。

最后,如果上述无法解决你的Skipping cancelled enqueue attempt with queue not closed的问题,那么尝试在Session结束的地方,加入

coord.request_stop()

coord.joint(thread)

这个解决办法来自:http://qiita.com/7of9/items/3b9364444418e128c92a

或者是尝试更新TensorFlow的版本,有人提及这个可能涉及到TensorFlow的版本BUG,详情见:https://github.com/TensorBox/TensorBox/issues/25

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • MachineLP阅读 288评论 0 0
  • Tensorflow的数据读取有三种方式: Preloaded data: 预加载数据,也就是TensorFlow...
    是neinei啊阅读 3,833评论 0 2
  • 多次穿梭于主楼与讲座楼并切切实实感受着扑面而来的妖风的我们最后坐在了306。 这次依旧一样,with辣么美来上课,...
    洋相相相阅读 298评论 0 0
  • 焦虑和恐惧,紧张,全职三年,这种情绪感受的最明显,特别茆同志回来,看他忙碌的身影,越发焦虑,似乎我需要做些什...
    爱自满溢阅读 185评论 0 0
  • 分子集自由人 这一切,源于一碗面的爱情 十二年前 在陕西的一个小县城 那时候 早恋这件事情是学校明令禁止的 况且是...
    哲神阅读 861评论 2 5