【发布时间】:2017-08-03 20:56:00
【问题描述】:
如何将 keras 中张量的第一个元素作为层移除? 例如:
layer = Input(input_shape=(100,),name='input')
layer = Conv1D(97,kernel_size=10,strides=10)(layer)
layer = >something that removes the first element<(layer)
layer = Flaten()(layer)
model = Model(input,layer)
此模型将具有 97*9 输出。 97 来自 Conv 层,每个 conv 过滤器将输出 10 节点,但这些节点中的第一个将被我正在寻找的层删除。因为conv层有(batch_size,10,97)的形状,所以我正在寻找一种方法来删除axis=1的第一个元素。
我该怎么做呢?我尝试使用 Lambda 层,但我不知道如何进行这项工作。
编辑:
我问这个问题是因为我想做的是如果我有一层形状(batch_size, x, y) 我想将其转换为形状(batch_size, 0.5x, 2y),如果x 是例如10,元素0,2,4,6,8 和1,3,5,7,9 相互堆叠。现在我正在使用Maxpooling1D(pool_size=1, strides=2) 来生成0,2,4,6,8。要生成1,3,5,7,9,我必须在应用 maxpooling 层之前以上述方式从一开始就删除 1 个元素。非常感谢您的宝贵时间!
【问题讨论】:
-
+1。我也需要它,以便在左 LSTM 和右 LSTM 之间实现偏移为 2 的双向 LSTM
-
@NadavB 嘿,我为你添加了一个答案 :)