如何为自定义层从 Keras Tensortype 切换到 numpy 数组?
How to Switch from Keras Tensortype to numpy array for a custom layer?
所以我有一个自定义层,它没有任何权重。
作为第一步,我尝试在 Kers 中实现操作输入张量的函数。但是因为很多原因我没有成功。我的第二种方法是使用 numpy 操作来实现函数,因为我正在实现的自定义层没有任何权重,根据我的理解,我会说,我可以使用 numpy 操作,因为我不需要反向传播,因为那里没有重量,对吧?然后,我会将我的层的输出转换为张量:
Keras.backend.variable(value = output)
所以主要想法是实现一个自定义层,获取张量,将它们转换为 numpy 数组,使用 numpy 操作对其进行操作,然后将输出转换为张量。
问题是我似乎无法使用 .eval() 将我层的输入张量转换为 numpy 数组,以便可以使用 numpy 操作来操纵它们。
谁能告诉我如何解决这个问题?
正如 Daniel Möller 在评论中提到的,Keras 需要能够反向传播 通过 您的层,以便计算前一层的梯度。由于这个原因,您的层需要是可区分的。
出于同样的原因,您只能使用 Keras 操作,因为这些操作可以使用 autograd 自动区分。如果您的层比较简单,请查看 Lambda layer,您可以在其中快速实现自定义层。
顺便说一句,Keras 后端函数应该涵盖很多用例,所以如果您坚持通过这些编写层,您可能想 post 在这里提出另一个问题。
希望对您有所帮助。
所以我有一个自定义层,它没有任何权重。 作为第一步,我尝试在 Kers 中实现操作输入张量的函数。但是因为很多原因我没有成功。我的第二种方法是使用 numpy 操作来实现函数,因为我正在实现的自定义层没有任何权重,根据我的理解,我会说,我可以使用 numpy 操作,因为我不需要反向传播,因为那里没有重量,对吧?然后,我会将我的层的输出转换为张量:
Keras.backend.variable(value = output)
所以主要想法是实现一个自定义层,获取张量,将它们转换为 numpy 数组,使用 numpy 操作对其进行操作,然后将输出转换为张量。 问题是我似乎无法使用 .eval() 将我层的输入张量转换为 numpy 数组,以便可以使用 numpy 操作来操纵它们。
谁能告诉我如何解决这个问题?
正如 Daniel Möller 在评论中提到的,Keras 需要能够反向传播 通过 您的层,以便计算前一层的梯度。由于这个原因,您的层需要是可区分的。
出于同样的原因,您只能使用 Keras 操作,因为这些操作可以使用 autograd 自动区分。如果您的层比较简单,请查看 Lambda layer,您可以在其中快速实现自定义层。
顺便说一句,Keras 后端函数应该涵盖很多用例,所以如果您坚持通过这些编写层,您可能想 post 在这里提出另一个问题。
希望对您有所帮助。