【发布时间】:2018-11-04 05:41:14
【问题描述】:
我有一个包含 3372149 行的数据集,我每 3751 行对它们进行批处理,如下所示:
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": train_features_numpy},
y=train_labels_numpy,
batch_size = 3751,
num_epochs= 1,
shuffle=False)
# Train
nn.train(input_fn=train_input_fn)#, steps=10000)
如果我在代码中设置了 num_epochs = 1,这意味着训练过程将遍历数据集一次,对吗?这导致总步数等于 3372149/3751 = 899。
如果我取消注释“steps = 10000”部分,并设置“num_epochs=none”,则训练部分将被强制训练到第 10000 步。
那么我有两个问题:
- 由于我只有899组有效数据但是我设置步长为10000,那么步899之后的Tensorflow训练是什么?它只是回到顶部并重复训练吗?
- 如果我训练的步数超过 899 步,是否会弄乱关联特征和标签的模型?还是因为训练循环一遍又一遍地遍历相同的数据集,所以它是多余的?
我确实在其他帖子中询问过训练期间损失没有减少的问题,我现在正在考虑是否我的数据集太少无法训练,因此所有多余的步骤都是无用的。
【问题讨论】:
-
用相同的数据重新训练可以达到什么效果——除了过度拟合?
-
我不确定是否有比数据集更多的步骤进行重新训练。如果是这样,我们不想浪费时间一次又一次地做同样的事情,对吧?除非这里有一些有益的部分,这就是我问的原因。
标签: python tensorflow machine-learning neural-network deep-learning