我的输入函数如下:
binarySearch([2, 6, 9, 14, 21], 0) // => -1
binarySearch([2, 6, 9, 14, 21], -4) // => -1
binarySearch([2, 6, 9, 14, 21], 40) // => -1
如何通知我的模型这是数据集中的第n次重复(历元)?我想实现诸如降低学习率,在最初n个时期内没有对抗损失的训练模型之类的功能。我正在使用tf.data.Dataset和tf.estimator.Estimator。 如果我多次调用火车方法:
def input_fn():
dataset.repeat(epochs).batch(16)
estimator_model.train(input_fn, steps)
它将重建模型(不同的权重,不同的检查点目录,不同的tensorflow日志)-这对我来说是不可接受的。
在估算师之前,我会做:
def input_fn():
dataset.batch(16)
for epoch in range(epochs):
estimator_model.train(input_fn, steps)
现在,这样的代码深深地存在于Estimator和Dataset的内胆之中,我无法控制它-因此,我很难做诸如降低学习速度之类的事情。(首先/最后{{1}做点事情}时代。
答案 0 :(得分:0)
如果您知道火车的大小,则可以设置参数std::future
。然后在您的steps_per_epoch = train_size//batch_size
中查询model_fn
张量,然后获取作为张量global_step = tf.train.get_global_step()
传递的历元数。
对于您提到的像学习率表这样的许多应用程序,仅使用基于类似概念的tf.train.piecewise_constant_decay
通常更为惯用。