我在keras中有一个循环模型,该模型明确实现了for循环超序列。参见模型波纹管[编辑]
我有一个大的矩阵输入,大小为[samples〜1M x time〜1k),并且我需要使用相同的模型,该模型将那段时间的邻居〜(-5,+ 5)作为输入。
那句话似乎是:
问题是:我和我是否应该在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