Lasagne 层,其输出形状取决于输入值而不是其输入形状

Lasagne layer whose output shape depends on the input value and not its input shape

我正在使用烤宽面条和 theano 做一个项目,需要创建一个自定义层。 然而,该层的输出并不取决于输入的大小,而是取决于输入的值...... 我知道 keras(仅具有 tensorflow 后端)提供了 lambda 层的可能性,并且我设法编写了一个表达式,使我能够根据输入值获得输出。但我不知道如何使用烤宽面条和 theano 来做到这一点。

例如:如果我的输入张量的大小固定为 100 个值,但我知道最后可能会有一些 0 值,这根本不会影响网络的输出,我该如何删除那些值,只让带有信息的值更进一步到下一层? 我想尽量减少网络的 space 要求:)

有没有可能在烤宽面条中加一层这样的东西?如果是这样,我应该如何编写 get_output_shape_for() 方法? 如果没有,我将切换到 keras 和 tensorflow :D

提前致谢!

感谢 Jan Schlüter 在这里为我提供答案:
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/lasagne-users/ucjNayfhSu0

总结一下:
1) 是的,可以有一个千层面层,其输出形状取决于输入值(而不是输入形状)和
2) 您必须在具有固定编译时形状的热维度中写入 "None"(因此更改的维度取决于输入值)。

关于示例:
您可以先计算输出形状,然后创建一个具有原始张量中非零条目长度形状的新张量,然后用非零值填充新张量(例如使用 theano.tensor.set_subtensor 函数).但是,我不知道这是否是实现此结果的最佳解决方案...