tensorflow训练时警告:BaseCollectiveExecutor::StartAbort Out of range: End of sequence

在训练的时候一直有这个警告,红红的在一堆训信息中间很突兀,之前没去管它,现在决定除掉它!简单查找消息后大概知道是迭代器到了序列末尾没有停止的原因,比如训练集大小是60000,你设置的batchsize是128,那么一个epoch中会有多少个step呢?很容易计算得到60000/128=468.75,这里出现的小数,说明最后一个step的数据不够128,从输出信息可以知道最后跑了是469个step,如下,可以看到警告信息:

tensorflow训练时警告:BaseCollectiveExecutor::StartAbort Out of range: End of sequence_第1张图片

 那么一下子就想到是不是把batchsize设置成能被训练集大小整除问题就解决了那呢?经过试验,我将batchsize设置成200,跑了300个step是没错,但是warning还是有哇。

再去网上搜寻了一遍,最后试验了这么一种方法:加上预处理数据集的时候repeat()函数设置为空(不要有参数),在fit()函数中加入step_per_epoch参数,设置其等于训练集大小整除于batchsize,如下所示:

再次运行一遍,此时讨厌的红色warning没有啦!

 tensorflow训练时警告:BaseCollectiveExecutor::StartAbort Out of range: End of sequence_第2张图片

 

具体原理暂不深究,等以后再遇到相关问题再答。

你可能感兴趣的:(tensorflow,python,深度学习,tensorflow,机器学习,神经网络)