我有一个很长的事件列表(400个独特的事件,序列~10米长)。我想训练一个RNN来预测下一个事件。
我采取的预处理步骤是:(1)使用熊猫转到OneHotEncoding上:
vector = pd.get_dummies(sr)这个部分大约需要15秒。
(2)使用10的滑动窗口,创建如下样本和标签:迭代(1)中的向量,以Xt作为标号,Xt:t-10作为数据。
代码:
X = np.zeros((len(samples), window_size, voc_len), dtype=np.bool)
y = np.zeros((len(samples), voc_len), dtype=np.bool)
if IN_COLAB:
loading_bar = tqdm.tqdm_notebook(enumerate(samples),desc='Build dataset',total=len(samples))
else:
loading_bar = tqdm.tqdm(enumerate(samples),desc='Build dataset',total=len(samples))
for numpy_index, pandas_idx in loading_bar:
x_idx = (pandas_idx, pandas_idx + window_size)
y_idx = pandas_idx + window_size
Xt = vector.iloc[x_idx[0]:x_idx[1]]
yt = vector.iloc[y_idx]
X[numpy_index] = Xt
y[numpy_index] = yt
display(yt)问题是秒部分非常慢(25分钟)。有更好的方法吗?某种内置的功能?
Thx
发布于 2021-02-15 14:55:18
有几种设计模式会导致缓慢的代码:
最好将NumPy与numpy.lib.stride_tricks.sliding_window_view结合使用。
https://datascience.stackexchange.com/questions/68796
复制相似问题