退出权重多久更新一次
Posted
技术标签:
【中文标题】退出权重多久更新一次【英文标题】:How often do dropped out weights get updated 【发布时间】:2022-01-04 13:40:21 【问题描述】:我正在处理一个数据很少的问题。我正在扩充训练集,即我将图像在两个方向上最多旋转 12 度:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.rotate.html
因为我只有我的工作 PC 可以使用(只有 i5 CPU),所以我的 batch_size 很小。实际上是如此之小,以至于我每批只处理一个图像及其旋转(ofc。仅使用微小的 learning_rate)。
我需要知道的是,dropout 是按图片还是按批次更新的。因为如果是按批次,我需要改变策略。
【问题讨论】:
【参考方案1】:根据您在 model.fit() 中定义的 batch_size 更新 Dropout,如果未指定,则默认值为 32。
Dropout
Dropout 层在训练期间将输入单元随机设置为 0,并在每个步骤中使用速率频率
Step
一个训练步骤是一个梯度更新。一步处理 batch_size 示例
【讨论】:
在我的例子中,我使用生成器,所以 batch_size 由产生大小来定义。但我明白你的意思。谢谢!不过对我不利 -> 需要改变策略...... 我认为这个问题仍然有效,因为每次 betch 更新的 dropout 并不一定意味着每个 train 输入都会丢弃相同的权重。没有? 回答问题并不会使其无效。被丢弃的权重在每一步都是随机的,前提是对于被丢弃的权重会改变的输入有不止一个训练步骤。 简而言之,是的,相同的批次 = 相同的重量。我想知道这有什么问题,如果你有很多步骤和时期,你的神经网络不会对那些被丢弃的权重产生任何依赖,如果你愿意,我很乐意在讨论中与你讨论. 那么有两个选项,1. 单独批处理类似的输入,这听起来像你不想这样做。 2. 训练多个 epoch。时期是对整个输入的完整传递。如果你有 50 批图像,一个 epoch 将有 50 个步骤。每个步骤的 dropout 都会有所不同,包括在随后的 epoch 中。太多的 Epoch 会导致过拟合,但 dropout 是prevent overfit 的好方法。以上是关于退出权重多久更新一次的主要内容,如果未能解决你的问题,请参考以下文章