使用for循环在Keras中实现时变神经网络

时间:2018-08-04 00:43:58

标签: python keras lstm rnn

我在keras中有一个循环模型,该模型明确实现了for循环超序列。参见模型波纹管[编辑]

我有一个大的矩阵输入,大小为[samples〜1M x time〜1k),并且我需要使用相同的模型,该模型将那段时间的邻居〜(-5,+ 5)作为输入。

那句话似乎是:

  1. 非自然的Keras用法
  2. for循环可能效率低下,很难说出原因。

问题是:我和我是否应该在keras层中使用更内置的东西来代替模型中的for循环? 在速度方面也有帮助吗?

如果是这样,那么如何做,TimeDistributed keras模型是否正确?无法弄清楚该模型的运行时间段。

谢谢

def my_model(signal_length = 1000 ,pre = 5 ,post = 5, num_classes=4):

    # Define the input 
    X = Input(shape=(signal_length,))
    # output as a list of size (slightly less) as X
    outputs = []
    # sliding window on X, considering each segment as input
    for t in range(pre,signal_length-post):

    # per time unit consider the input signal of the neighboring ~10 signals:

        p1 = t - pre
        p2 = t + post
        Xt = Lambda(lambda x: X[:,p1:p2])(X)

    # Connect to network:
        Xt = Dense(20, activation='relu')(Xt)
        Xt = Dense(20, activation='relu')(Xt)
        Xt = Dense(num_classes, activation='softmax')(Xt)

    #output per unit time in a list:
        outputs.append(Xt)

    model = Model(inputs=X, outputs=outputs)
    mode.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])        

    return model

0 个答案:

没有答案