如何移除keras中张量的第一个元素作为层?

如何移除keras中张量的第一个元素作为层?,keras,conv-neural-network,Keras,Conv Neural Network,如何移除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) layer=In

如何移除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)
layer=Input(Input\u shape=(100,),name='Input')
层=Conv1D(97,内核大小=10,步幅=10)(层)

layer=>删除第一个元素的东西如果你的唯一目标是从卷积中得到9个值而不是10个值,为什么不试试这个:

层=Conv1D(97,内核大小=11,步幅=11)(层)

??因为如果删除第一个元素,这意味着您不关心序列的10个第一个值,因此您最好输入90个值的序列,而不是100个值的序列。。。 如果您关心前10个值,并且只想输出更少,那么请使用更大的内核:-)


这有用吗?否则,我们可以找出一个lambda层来实现这个技巧,因为@NadavB想知道答案:

layer = Input(input_shape=(100,),name='input')
layer = Conv1D(97,kernel_size=10,strides=10)(layer)
layer = Lambda(lambda x : x[:,1:,:])(layer)
layer = Flaten()(layer)
model = Model(input,layer)

我希望这能帮到你:)

如果是时间顺序,我会这样做:

def firstElementRemoved(inputTensor):
    return inputTensor[:, 1:]

LSTMMinusFirstElement  = Lambda(firstElementRemoved) (LSTM)

非常感谢你的回答!我更新了我原来的帖子,以澄清我为什么要使用它。我也需要它,以便在左LSTM和右LSTM之间实现偏移量为2的bi di LSTMLSTM@NadavB嘿,我为你加了一个答案:)