【问题标题】:How to Switch from Keras Tensortype to numpy array for a custom layer?如何从 Keras Tensortype 切换到自定义层的 numpy 数组?
【发布时间】:2018-05-14 14:16:54
【问题描述】:

所以我有一个自定义层,它没有任何权重。 第一步,我尝试在 Kers 中实现操纵输入张量的函数。但是因为很多原因我没有成功。我的第二种方法是使用 numpy 操作来实现函数,因为我正在实现的自定义层没有任何权重,据我了解,我会说,我可以使用 numpy 操作,因为我不需要反向传播,因为那里没有重量,对吧?然后,我只需将层的输出转换为张量:

 Keras.backend.variable(value = output) 

所以主要思想是实现一个自定义层,它接受张量,将它们转换为 numpy 数组,使用 numpy 操作对它们进行操作,然后将输出转换为张量。 问题是我似乎无法使用 .eval() 将我层的输入张量转换为 numpy 数组,以便可以使用 numpy 操作对其进行操作。

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 嗯...你确实需要反向传播,除非你在这个层之前没有任何可训练的层。

标签: python numpy keras theano tensor


【解决方案1】:

正如 Daniel Möller 在 cmets 中提到的,Keras 需要能够通过您的层反向传播,以便计算前一层的梯度。因此,您的层需要可区分。

出于同样的原因,您只能使用 Keras 操作,因为这些操作可以使用 autograd 自动区分。如果您的图层很简单,请查看Lambda layer,您可以在其中快速实现自定义图层。

顺便说一句,Keras 后端函数应该涵盖很多用例,所以如果您无法通过这些函数编写层,您可能想在此处发布另一个问题。

希望这会有所帮助。

【讨论】:

  • 谢谢!之前的层确实是可训练的。但是我的层会采用分数和框,并会根据分数生成最好的 N 个框。 Keras 还需要通过它传播吗?
  • 是的,它总是需要通过它进行反向传播。如果您在实施方面需要帮助,请发布另一个问题,并展示您已有的内容。
  • 请在这里找到新问题和我的工作stackoverflow.com/questions/47583221/…
  • 请问,你有没有找到将张量转换为 numpy 的方法?事实上,我坚持你正在尝试做的事情((使用自定义层将张量转换为 numpy))。请,如果你分享你的问题的答案,会救我的命来帮助我。
猜你喜欢
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
相关资源
最近更新 更多