PyTorch中"诡异"的动量SGD实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyTorch中"诡异"的动量SGD实现相关的知识,希望对你有一定的参考价值。

参考技术A pytorch中SGD的动量实现是如下这个样子的

将pytorch的实现翻译为公式,就是如下这个样子:

为什么说它诡异呢?因为它与Polyak, Sutskever等人的论文中的表达方式是不同的:

是学习率, 是动量因子。

对一下,其实就是 换了个位置,从传统的 换到了 。 但是其实通过展开,可以发现,在学习率保持不变的的情况下,这两种实现方式是等价的。而在学习率变化的情况下,直观的来说,前一种方法学习率会立马作用在动量上:

使得学习率的更改立马产生效果,而使用原始的方法往往要好几个batch之后学习率才生效(因为动量太大了)。
因此,一般来说使用pytorch采用的实现方法会适用一些。
[1] https://zhuanlan.zhihu.com/p/43016574
[2] https://github.com/pytorch/pytorch/issues/1099

React Native Scrollview 停止动量? (世博会)

【中文标题】React Native Scrollview 停止动量? (世博会)【英文标题】:React Native Scrollview Stop Momentum? (expo) 【发布时间】:2018-08-04 15:04:12 【问题描述】:

我正在使用ScrollView,当我滚动并松开时,它会因为动量而继续滚动。我希望它只在手指触摸屏幕时滚动,我不想要这种势头。这可能吗,如果可以,怎么做?

【问题讨论】:

decelerationRate 设置为"fast"。 facebook.github.io/react-native/docs/… 这只是IOS 这 8 个月后运气好吗? 【参考方案1】:

使用带有值0decelerationRate 属性可以提供帮助。

基于the document,它的值接受字符串normal | fast和从01的浮点数,从最慢到最快。

<ScrollView decelerationRate=0>

</ScrollView>

** 我正在使用 RN v0.59 **

【讨论】:

【参考方案2】:

将以下 2 个属性添加到 ScrollView

snapToInterval=1
disableIntervalMomentum=true

【讨论】:

【参考方案3】:

为什么不试试这个(RN 0.55)

<ScrollView 
  ref=r => (this.scrollView = r)
  onScrollEndDrag=e => 
    return this.scrollView.scrollTo( y: e.nativeEvent.contentOffset.y );
  >
  ...
</ScrollView>

【讨论】:

以上是关于PyTorch中"诡异"的动量SGD实现的主要内容,如果未能解决你的问题,请参考以下文章

lua "诡异"的return用法

BatchNorm 动量约定 PyTorch

PyTorch-线性回归_SGD_动量梯度下降

一些诡异的变换

React Native Scrollview 停止动量? (世博会)

qbytearray初始化问题,太诡异了,有人知道啥原因不