我有时间序列数据(ECG)。我有30秒的块注释。 每个块有1000个数据点。我们有500个这样的数据块。
目标,注释是例如在1到5的范围内。
关于X-DATA
如何将其转换为输入数据的Keras表示法[样本,时间步长,功能]?
我的猜测:
导致[500,1000,1]
关于Y-Data(目标)
我的目标或数据会导致 [500,1,1]
经过一次热门编码后就可以了 [500,5,1]
问题在于Keras期望X和y数据具有相同的尺寸。但是将我的ydata增加到每个时间步长1000对我来说没有意义。
感谢您的帮助
P.S。不能直接回答,因为我和我的父母在法律上。提前致谢
答案 0 :(得分:1)
我认为你正在考虑错误。根据我的理解,基于你的图表。 在一次热编码之后,y实际上是(500,5)。也就是说,对于每个块,都有一个结果。
此外,在Keras中不需要X和y具有相同的尺寸(除非你有seq2seq要求,这不是这里的情况)。
我们想要的是给我们概率分布的模型
每个块的可能标签,我们将使用softmax实现
在最后一个(Dense
)图层上。
以下是我模拟问题的方法:
import numpy as np
from keras.models import Model
from keras.layers import Dense, LSTM
# using eye doesn't capture one-hot but works for the example
series = np.random.rand(500, 1000, 1)
labels = np.eye(500, 5)
inp = Input(shape=(1000, 1))
lstm = LSTM(128)(inp)
out = Dense(5, activation='softmax')(lstm)
model = Model(inputs=[inp], outputs=[out])
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.fit(series, labels)