【问题标题】:Backward propagation in Keras?Keras 的反向传播?
【发布时间】:2018-05-05 03:19:59
【问题描述】:

谁能告诉我如何在 Keras 中完成反向传播?我读到这在 Torch 中真的很容易,在 Caffe 中很复杂,但我找不到任何关于使用 Keras 来做的事情。我正在 Keras 中实现我自己的层(一个非常初学者),并且想知道如何进行反向传播。

提前谢谢你

【问题讨论】:

    标签: python deep-learning keras keras-layer


    【解决方案1】:

    你根本不知道。 (后期编辑:除非您创建自定义训练循环,仅用于高级用途)

    Keras 会自动进行反向传播。除了使用fit 方法之一训练模型之外,您绝对不需要做任何事情。

    你只需要注意几件事:

    • 您要使用反向传播更新的变量(即权重)必须在自定义层中使用self.add_weight() 方法在build 方法中定义。见writing your own keras layers
    • 您进行的所有计算都必须使用基本运算符,例如+-*/backend 函数。通过后端,还支持 tensorflow/theano/CNTK 函数。

    这就是让自动反向传播正常工作所需的全部内容。

    如果您的层没有可训练的权重,则不需要自定义层,而是创建Lambda 层(仅计算,没有可训练的权重)。

    【讨论】:

    • 非常感谢丹尼尔的快速回答!你能告诉我如何调用这个函数吗?
    • 什么功能?反向传播?当您fit您的模型处理某些数据时,它会自动发生。训练的方法是fit in a keras model.
    • @DanielMöller,我有类似的问题,我想在每次反向传播时对梯度进行二值化(量化)。无论如何我可以在 keras 中实现这一点。在 tensorflow 中,我有可能相信
    • 您需要一个自定义优化器。我建议你从 keras 源代码复制 SGD 并更新它。
    • @Eliethesaiyan 的更新,您还可以使用 Eager 模式并创建自定义训练循环:tensorflow.org/tutorials/customization/…
    猜你喜欢
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2021-03-19
    • 2019-04-11
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2022-10-30
    相关资源
    最近更新 更多