在扩展Tensor2Tensor Transformer TPU教程中出现OutOfRangeError

时间:2018-07-06 21:17:49

标签: google-compute-engine tensor2tensor

我遵循了T2T变压器“训练语言模型”的示例,该示例进行了10个培训步骤。但是,当扩展到25万步时,出现OutOfRange错误(如下)。这是解析问题还是其他问题?

<div class="switch-button-container two-items">
    <label class="switch-btn" v-for="o in data.formsData.departments"> <-- Data from json
        <input type="radio"
               v-model="formData.Department" <-- property and value added on fly
               name="departments"
               :value="o.value"
               :checked="formData.Department === 'Rent'"> 
        <span class="custom-radio">{{o.value}}</span>
    </label>
</div>

2 个答案:

答案 0 :(得分:0)

我假设您已按照此document中的说明进行操作。 输出中的相关错误是“序列结束”上“ OutOfRangeError”的行。此错误是输入管道用于使上游知道没有更多数据要处理的信号。

您需要通过确保以下内容来确保有供TPU处理的数据: TPU可以访问训练数据(例如GCS存储桶) 命令的路径中没有错字,最重要的是, 您的数据集很大,或者您有一个dataset.repeat(),以确保您的训练数据不会在您的TPU完成配置的训练步骤数之前用完。

答案 1 :(得分:0)

Tensor2Tensor库的一位作者。

简短答案:减少--eval_steps

长答案:

不幸的是,TPUEstimator(我们在幕后用来在TPU上运行的库)在输入数据用完时无法捕获OutOfRangeError。在训练期间,这不是问题,因为输入数据是无限的(我们在输入tf.data.Dataset上称为重复)。但是,在评估过程中,您希望对数据进行1次传递,这意味着您需要正确设置--eval_steps,以免耗尽输入数据。希望TPUEstimator会尽快处理该错误,以便您不必弄清楚必须运行多少个评估步骤。