将时间步长值更改为 Keras LSTM 的变量
Changing the time step value to a variable for a Keras LSTM
问题很简单,我已经在互联网上广泛搜索了解决方案。如何重塑数据框以具有我为 LSTM 提供的自定义时间步长?
look_back=90
train_X = np.reshape(
train_dataset, (train_dataset.shape[0], look_back, train_dataset.shape[1]))
test_X = np.reshape(
test_dataset, (test_dataset.shape[0], look_back, `test_dataset.shape[1]))
以上抛出以下错误 ValueError: cannot reshape array of size 446208 into shape (3984,90,112)
那么,如何将回溯更改为变量而不是 1,从而使 LSTM 的内存功能变得无用。
编辑
使用下面提供的解决方案,我将代码更改为
## train test split
train_split = 0.8
train_size = int(n_sample*train_split)
X_train = X[:train_size] # (train_size, n_features)
X_test = X[train_size:] # (n_sample-train_size, n_features)
print(X_train.shape, X_test.shape)
y_train = y[:train_size] # (train_size,)
y_test = y[train_size:] # (n_sample-train_size,)
print(y_train.shape, y_test.shape)
look_back = 90
y_train = y_train[look_back:] # (train_size-look_back,)
y_test = y_test[look_back:] # ((n_sample-train_size),)
print(y_train.shape, y_test.shape)
X_train = view_as_windows(X_train, (look_back,n_features))[:-1,0] # (train_size-look_back, look_back, n_features)
X_test = view_as_windows(X_test, (look_back,n_features))[:-1,0] # ((n_sample-train_size)-look_back, look_back, n_features)
print(X_train.shape, X_test.shape)
它现在很有魅力!
这是我建议你创建滑动的技巧windows...
import numpy as np
from skimage.util.shape import view_as_windows
## create dummy data
n_sample = 2000
n_features = 5
X = np.tile(np.arange(n_sample), (n_features,1)).T
X_train = X[:int(n_sample*0.8)]
X_test = X[int(n_sample*0.8):]
## create windows
look_back = 90
X_train = view_as_windows(X_train, (look_back,n_features), step=1)[:-1,0]
X_test = view_as_windows(X_test, (look_back,n_features), step=1)[:-1,0]
print(X_train.shape, X_test.shape) # (1510, 90, 5) (310, 90, 5)
问题很简单,我已经在互联网上广泛搜索了解决方案。如何重塑数据框以具有我为 LSTM 提供的自定义时间步长?
look_back=90
train_X = np.reshape(
train_dataset, (train_dataset.shape[0], look_back, train_dataset.shape[1]))
test_X = np.reshape(
test_dataset, (test_dataset.shape[0], look_back, `test_dataset.shape[1]))
以上抛出以下错误 ValueError: cannot reshape array of size 446208 into shape (3984,90,112) 那么,如何将回溯更改为变量而不是 1,从而使 LSTM 的内存功能变得无用。
编辑 使用下面提供的解决方案,我将代码更改为
## train test split
train_split = 0.8
train_size = int(n_sample*train_split)
X_train = X[:train_size] # (train_size, n_features)
X_test = X[train_size:] # (n_sample-train_size, n_features)
print(X_train.shape, X_test.shape)
y_train = y[:train_size] # (train_size,)
y_test = y[train_size:] # (n_sample-train_size,)
print(y_train.shape, y_test.shape)
look_back = 90
y_train = y_train[look_back:] # (train_size-look_back,)
y_test = y_test[look_back:] # ((n_sample-train_size),)
print(y_train.shape, y_test.shape)
X_train = view_as_windows(X_train, (look_back,n_features))[:-1,0] # (train_size-look_back, look_back, n_features)
X_test = view_as_windows(X_test, (look_back,n_features))[:-1,0] # ((n_sample-train_size)-look_back, look_back, n_features)
print(X_train.shape, X_test.shape)
它现在很有魅力!
这是我建议你创建滑动的技巧windows...
import numpy as np
from skimage.util.shape import view_as_windows
## create dummy data
n_sample = 2000
n_features = 5
X = np.tile(np.arange(n_sample), (n_features,1)).T
X_train = X[:int(n_sample*0.8)]
X_test = X[int(n_sample*0.8):]
## create windows
look_back = 90
X_train = view_as_windows(X_train, (look_back,n_features), step=1)[:-1,0]
X_test = view_as_windows(X_test, (look_back,n_features), step=1)[:-1,0]
print(X_train.shape, X_test.shape) # (1510, 90, 5) (310, 90, 5)