python - 使用for循环在keras中实现时间相关的神经网络
问题描述
我在 keras 中有一个循环模型,它明确地实现了 for-loop over 序列。见下面的模型[编辑]
我有一个大小为 [samples~1M x time ~1k) 的大矩阵输入,我需要使用相同的模型,该模型将那个时间邻居的一部分作为输入 ~ (-5,+5)。
那个写法好像:
- 就 Keras 的使用而言,非自然
- for-loop 可能效率低下,而且很难说出原因。
问题是:我应该并且可以用 keras 层中更内置的东西替换模型中 for-loop 的使用吗?这对速度也有帮助吗?
如果是这样,那将如何完成,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
解决方案
推荐阅读
- mysql - 如果记录已在 mySQL 表中删除,如何避免重复?
- sql - 将列添加到 sqlite 数据库并根据主键分配行
- azure - ExecutionContext 对通过 IoC 的非函数方法为空,替代 ExecutionContext.FunctionAppDirectory
- javascript - Electron app.makeSingleInstance 避免多个实例抛出 javascript 错误
- c - 具有大 int 的 Segfault - 内存不足?
- r - 在嵌套循环中运行 R t.test
- reactjs - 反应错误覆盖 - 显示一个错误然后抛出另一个错误以调用代码来处理
- json - 具有动态路径的 Firebase 子安全规则
- http - swi prolog 8.0.2:gziped http
- plot - 邓恩的测试图 - 哪个包?