Rei*_*ica 5 machine-learning neural-network tensorflow
我正在TensorFlow中(使用tflearn)训练生成的数据的神经网络。据我所知,每个时期我们都使用所有训练数据。由于我可以控制我拥有的示例数量,因此似乎最好只生成更多的训练数据,直到一个纪元足以训练网络为止。
所以我的问题是:假设我有足够的训练数据,仅使用一个纪元会有任何弊端吗?我假设一百万个示例中的一个纪元比十万个示例中的十个纪元好吗?
与@Prune讨论之后:
假设您有可能生成无限数量的带标签的示例,这些示例是从固定的基础概率分布(即从同一流形)中采样的。
网络看到的示例越多,它就会学得越好,尤其是它能更好地推广。理想情况下,如果您对它进行足够长的培训,则可以在此特定任务上达到100%的准确性。
结论是,只要示例是从同一分布中采样的,则只运行1个历元就可以了。
该策略的局限性可能是:
运行多个时期可能会使它更好地学习一些不常见的情况。
我不同意,多次使用同一示例总是比生成新的未知示例更糟糕。但是,您可能想随时间生成越来越难的示例,以使您的网络在不常见的情况下变得更好。
您需要训练示例才能使网络学习。通常你没有那么多的例子来使网络收敛,所以你需要运行多个 epoch。
如果你有很多例子并且它们很相似,那么只使用一个纪元是可以的。如果你有 100 个类,但其中一些只有很少的示例,那么你不会只用一个 epoch 来学习这些类。所以你需要平衡的课程。
此外,最好有一个可变的学习率,该学习率随着示例数量的增加而降低,这样网络就可以自我微调。它从高学习率开始,然后随着时间的推移而降低,如果你只运行一个时期,你需要记住这一点来调整图表。
我的建议是运行多个 epoch,主要是因为示例越多,存储它们所需的内存就越多。但是,如果内存很好并且学习率是根据示例数量而不是纪元来调整的,那么运行一个纪元就可以了。
编辑:我假设您正在使用一种学习算法,该算法会每批次或类似情况更新网络的权重。
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |