【问题标题】:What operations are supported for automatic differentiation in tensorflowtensorflow中的自动微分支持哪些操作
【发布时间】:2017-11-23 07:28:33
【问题描述】:

我对 tf. 中的自动微分支持哪些类型的操作感到困惑。具体来说,是否支持如下张量索引操作?

...
# feat is output from some conv layer and the shape is B*H*W*C

# case one
loss = feat[:,1:,1:,:] - feat[:,:-1,:-1,:]

# case two
feat[:,1:,1:,:] = feat[:,1:,1:,:]/2. # assign and replace part original value
loss = tf.reduce_sum(feat)

【问题讨论】:

    标签: tensorflow autodiff


    【解决方案1】:

    这不是直接的答案,但作为一个线索,这个自动微分库autograd 列出了不受支持的操作,请参阅Non-differentiable functions,例如floor()round() 不是自动微分的。

    也可以定义自己的操作,前提是你可以自己编码渐变,见extend-autograd-by-defining-your-own

    我猜 tf 与此非常相似。

    【讨论】:

    • 至于索引操作,我的第一个猜测是它不是自动可微分的。但是,maxpooling 是自动可微的,maxpooling 只是选择某个元素,也就是索引操作。所以,我的第二个猜测是索引操作是自动可微分的,至少在理论上是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2020-06-18
    相关资源
    最近更新 更多