Neural network 其输出形状取决于输入值而不是其输入形状的千层面

Neural network 其输出形状取决于输入值而不是其输入形状的千层面,neural-network,theano,lasagne,Neural Network,Theano,Lasagne,我正在做一个有千层面和theano的项目,需要创建一个自定义层。 然而,该层的输出并不取决于输入的大小,而是取决于输入的值。。。 我知道keras(仅使用tensorflow后端)提供了lambda层的可能性,并且我成功地编写了一个表达式,它允许我根据输入的值获得输出。但我不知道如何,甚至不知道是否可以用千层面和西亚诺做到这一点 例如:如果我的输入张量的大小固定为100个值,但我知道最后可能会有一些0值,这些值根本不会影响网络的输出,那么我如何删除这些值,只让包含信息的值进入下一层? 我希望尽量

我正在做一个有千层面和theano的项目,需要创建一个自定义层。 然而,该层的输出并不取决于输入的大小,而是取决于输入的值。。。 我知道keras(仅使用tensorflow后端)提供了lambda层的可能性,并且我成功地编写了一个表达式,它允许我根据输入的值获得输出。但我不知道如何,甚至不知道是否可以用千层面和西亚诺做到这一点

例如:如果我的输入张量的大小固定为100个值,但我知道最后可能会有一些0值,这些值根本不会影响网络的输出,那么我如何删除这些值,只让包含信息的值进入下一层? 我希望尽量减少网络的空间需求:)

有没有可能在千层面上有这样一层呢?如果是这样,我应该如何编写get\u output\u shape\u for()方法? 如果没有,我将切换到keras和tensorflow:D


提前谢谢

感谢Jan Schlüter在这里为我提供了答案:

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

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