所以目前我有一个形状为(8392,41164)的时间序列数据,为了将其输入我的lstm模型,我需要将其重塑为3D维度,我使用此代码创建数据集
def create_dataset(X, y, time_steps):
Xs, ys = [], []
for i in range(len(X) - time_steps):
v = X[i:(i + time_steps)]
Xs.append(v)
ys.append(y[i + time_steps])
return np.array(Xs), np.array(ys)
并且它以(8378,14,41164)的形式返回数据,但是它消耗了大约50GB的RAM,是否有任何解决方案可以用更少的内存使用来创建它?
您考虑过将窗口化的数据集提交到磁盘吗?然后我可能会使用B-Tree或其他使索引更容易的东西,但这是一个很好的第一步。你可以将数据存储在磁盘上,在for循环中,一次帧1024个窗口,并将它们存储为"data_{i}.csv"对于每一页。可以这样做:
import pandas as pd
page_size = 1024
page_i = 1
for i in range(len(X) - time_steps):
pageX = []
pageY = []
for j in range(page_size):
v = X[i:(i + time_steps)]
pageX.append(v)
pageY.append(y[i + time_steps])
page_df = pd.DataFrame([{'X': pageX[j], 'Y': pageY[j]} for j in range(page_size)])
page_df.to_csv(f"data_{page_i}.csv", index=False)
page_i += 1
Xs.extend(pageX)
ys.extend(pageY)
return np.array(Xs), np.array(ys)
如果有任何不合理的地方请告诉我。
大卫