据我所知 Estimator API,方法 train 训练给定数据,直到 input_fn 函数引发异常或直到达到步数 . 因此,如果我想循环直到估计器收敛(对于它的某些定义),我需要自己编写循环并测试我的标准 . 像这样的东西,估算器 e

prevloss = 999999999999
while True:
    e.train(input_fn)
    loss = e.evaluate(input_fn)['loss']
    if abs(prevloss - loss) < 1e-4:
        break

    prevloss = loss

但有一些事情对我来说仍然模糊不清 .

  • 什么时候调用输入函数?它应该始终返回相同的数据吗?它的正确用途是什么?

  • 每次迭代都会将数据上传到GPU吗?

  • 如果是这样,我该如何避免?

  • 输入函数返回的数据是否仅作为常量嵌入到图形中?

  • 如果是这样,我该如何让它可以喂食?

  • 总的来说,启动张量流工作需要0.8秒(即每次迭代不能进行1.6秒),这个循环不会更好地存在于GPU上吗?

  • 如果是这样,我该怎么做?