gpt4 book ai didi

python - 了解具有不同序列的keras中的lstm输入形状

转载 作者:太空狗 更新时间:2023-10-30 01:12:23 24 4
gpt4 key购买 nike

我对 keras 和 python 都很陌生。我有一个具有不同序列长度的时间序列数据集(例如,第一个序列是 484000x128,第二个序列是 563110x128,等等)我已将序列放入 3D 数组中。

我的问题是如何定义输入形状,因为我很困惑。我使用的是 DL4J,但定义网络配置的概念不同。

这是我的第一个试用代码:

import numpy as np
from keras.models import Sequential
from keras.layers import Embedding,LSTM,Dense,Dropout


## Loading dummy data
sequences = np.array([[[1,2,3],[1,2,3]], [[4,5,6],[4,5,6],[4,5,6]]])
y = np.array([[[0],[0]], [[1],[1],[1]]])
x_test=np.array([[2,3,2],[4,6,7],[1,2,1]])
y_test=np.array([0,1,1])

n_epochs=40

# model configration
model = Sequential()
model.add(LSTM(100, input_shape=(3,1), activation='tanh', recurrent_activation='hard_sigmoid')) # 100 num of LSTM units
model.add(LSTM(100, activation='tanh', recurrent_activation='hard_sigmoid'))
model.add(Dense(1, activation='softmax'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])

print(model.summary())

## training with batches of size 1 (each batch is a sequence)
for epoch in range(n_epochs):
for seq, label in zip(sequences, y):
model.train(np.array([seq]), [label]) # train a batch at a time..
scores=model.evaluate(x_test, y_test) # evaluate batch at a time..

最佳答案

这是关于 LSTM 输入形状的文档:

Input shapes

3D tensor with shape (batch_size, timesteps, input_dim), (Optional) 2D tensors with shape (batch_size, output_dim).

这意味着您将需要每个批处理的大小恒定的时间步长。

这样做的规范方法是使用 keras's padding utility 之类的东西填充序列。

那你可以试试:

# let say timestep you choose: is 700000 and dimension of the vectors are 128

timestep = 700000
dims = 128

model.add(LSTM(100, input_shape=(timestep, dim),
activation='tanh', recurrent_activation='hard_sigmoid'))

我编辑了答案以删除 batch_size 参数。使用此设置,批量大小未指定,您可以在拟合模型时设置它(在 model.fit() 中)。

关于python - 了解具有不同序列的keras中的lstm输入形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43234504/

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