所以我有一个自定义图层,没有任何权重。 首先,我尝试在Kers中实现操作输入张量的函数。但由于种种原因,我没有成功。我的第二种方法是使用numpy操作实现这些函数,因为我实现的自定义层没有任何权重,从我的理解,我会说,我可以使用numpy操作,因为我不需要反向传播,因为那里没有重量,对吗?然后,我只需将我的图层的输出转换为张量:
Keras.backend.variable(value = output)
因此,主要思想是实现一个自定义层,它采用张量,将它们转换为numpy数组,使用numpy操作对它们进行操作,然后将输出转换为张量。 问题是我似乎无法使用.eval()将我的图层的输入张量转换为numpy数组,因此可以使用numpy操作来操作它们。
任何人都可以告诉我,我如何解决这个问题?
答案 0 :(得分:0)
正如DanielMöller在评论中所提到的,Keras需要能够反向传播到您的图层,以便计算前一层的渐变。因此,您的图层必须是可区分的。
出于同样的原因,您只能使用Keras操作,因为这些操作可以通过autograd自动区分。如果您的图层很简单,请查看Lambda layer,您可以在其中快速实现自定义图层。
顺便说一句,Keras后端功能应该涵盖很多用例,所以如果你不想通过这些来编写你的图层,你可能想在这里发布另一个问题。
希望这有帮助。