在 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
层(仅计算,没有可训练的权重)。
谁能告诉我反向传播在 Keras 中是如何完成的?我读到它在 Torch 中真的很容易,在 Caffe 中很复杂,但我找不到任何关于用 Keras 做的事情。我正在 Keras 中实现我自己的层(一个非常初学者)并且想知道如何进行反向传播。
提前致谢
你根本不知道。 (后期编辑:创建自定义训练循环时除外,仅供高级使用)
Keras 自动进行反向传播。除了使用 fit
方法之一训练模型外,您绝对不需要为此做任何事情。
您只需要处理几件事:
- 您想要使用反向传播更新的变量(即:权重)必须在自定义层中使用
build
方法中的self.add_weight()
方法进行定义。参见 writing your own keras layers。 - 您正在进行的所有计算都必须使用基本运算符,例如
+
、-
、*
、/
或 backend 函数。后端还支持 tensorflow/theano/CNTK 函数。 - 您使用的函数必须是可微分的(这意味着反向传播对于使用常量结果的函数将失败,例如)
这就是让自动反向传播正常工作所需的全部内容。
如果您的层没有可训练的权重,则不需要自定义层,而是创建 Lambda
层(仅计算,没有可训练的权重)。