gpt4 book ai didi

python - 当输入具有不同的时间范围时,如何为 Conv1D 层准备数据?

转载 作者:行者123 更新时间:2023-12-04 17:33:36 28 4
gpt4 key购买 nike

我想将声谱图——对应于说出的数字——提供给以 Conv1D 作为第一层的模型。然后,我使用 RNN 层对说出的单词进行分类。这些谱图具有不同的序列/时间长度,但当然具有相同的特征数。

在 Keras 的 Conv1D 文档中:

When using this layer as the first layer in a model, provide an input_shape argument [..] (None, 128) for variable-length sequences with 128 features per step.

所以看起来它可以处理它。无需填充/调整大小。

我习惯用 numpy(例如:numpy.vstack)准备相同形状的数据,但现在我有各种形状,我不知道该怎么做!而且我只找到了人们拥有相同形状数据的示例。

或者可能无法使用 numpy,我必须使用其他东西?

谢谢!

最佳答案

这是可能的,但你必须确保一起批处理的序列具有相同的长度,这就是为什么大多数人只是简单地填充所有序列。如果您使用掩码,它也会忽略被掩码的值,因此没有区别。

model.add(LSTM(32, return_sequences=True, input_shape=(None, 5)))
model.add(LSTM(8, return_sequences=True))
model.add(TimeDistributed(Dense(2, activation='sigmoid')))

print(model.summary(90))

model.compile(loss='categorical_crossentropy',
optimizer='adam')

def train_generator():
while True:
sequence_length = np.random.randint(10, 100)
x_train = np.random.random((1000, sequence_length, 5))
# y_train will depend on past 5 timesteps of x
y_train = x_train[:, :, 0]
for i in range(1, 5):
y_train[:, i:] += x_train[:, :-i, i]
y_train = to_categorical(y_train > 2,5)
yield x_train, y_train

model.fit_generator(train_generator(), steps_per_epoch=30, epochs=10, verbose=1)

关于python - 当输入具有不同的时间范围时,如何为 Conv1D 层准备数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57646601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com