• 精简版SGD理解随机梯度下降过程


     1 #精简版SGD
     2 def SGD(self, training_data, epochs, mini_batch_size, eta,):
     3         n = len(training_data)
     4         # 进行epochs次主循环来计算weights和biases
     5         for j in xrange(epochs):
     6             # 每个主循环走一遍所有训练数据,并shuffle一下提供好的随机性
     7             random.shuffle(training_data)
     8             # 对于每个计算随机梯度的具体事件,设置一个mini_batch,用这mini_batch_size个样本来计算随机梯度
     9             mini_batches = [
    10                 training_data[k:k+mini_batch_size]
    11                 for k in xrange(0, n, mini_batch_size)]
    12             # 计算随机梯度,更新weights和biases,eta是学习率
    13             for mini_batch in mini_batches:
    14                 self.update_mini_batch(mini_batch, eta)
    知乎上看到一个直观的解释...
    链接:https://www.zhihu.com/question/43673341/answer/730181826

    涉及到的基础概念有批数量,迭代次数,训练集数量。

    打个比方吧,比如田径跑步。

    一次只能8个人一起跑,这就是模型的批数量,也就是说batch number 为8

    然后开始跑步,也就是说进行模型的前向传播,

    然后跑步到终点,一次迭代完成,这整个的一次过程称为模型的一次迭代。

    那么剩下的田径选手怎么办,继续从头开始跑,也就是说开始下一次的迭代。

    所有的选手都跑完之后,也就是说数据集中的数据在模型中都训练完了,这就是一次epoch。

    epoch与epoch之间是独立的,一次接一次的迭代,一个epoch接一个epoch。

  • 相关阅读:
    课后作业-阅读任务-阅读笔记-4
    《团队--学生成绩管理-阶段互评》
    《团队-学生成绩管理-阶段互评》
    团队编程项目作业4-开发文档
    阅读任务--阅读提问-3
    课后作业-阅读任务-阅读笔记3
    课后作业-阅读任务-阅读提问-3
    课后作业-阅读任务-阅读笔记-3
    结对编程项目作业5
    结对编程项目作业4
  • 原文地址:https://www.cnblogs.com/wind-chaser/p/11359884.html
Copyright © 2020-2023  润新知