在 Keras 中向后传播?

Backward propagation in Keras?

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

提前致谢

你根本不知道。 (后期编辑:创建自定义训练循环时除外,仅供高级使用)

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

您只需要处理几件事:

  • 您想要使用反向传播更新的变量(即:权重)必须在自定义层中使用 build 方法中的 self.add_weight() 方法进行定义。参见 writing your own keras layers
  • 您正在进行的所有计算都必须使用基本运算符,例如 +-*/backend 函数。后端还支持 tensorflow/theano/CNTK 函数。
  • 您使用的函数必须是可微分的(这意味着反向传播对于使用常量结果的函数将失败,例如)

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

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