【发布时间】:2018-06-13 13:34:38
【问题描述】:
此代码的目的是创建一个循环神经网络 (RNN) 来预测外汇市场走势的未来价值。
数据集shape是(65524, 130),dtype是‘object’。
代码如下:
from sklearn.preprocessing import MinMaxScaler
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras.models import Sequential
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df = pd.read_csv(r"E:\Tutorial\FinalDF.csv", parse_dates=[0], index_col=[0], low_memory=False, dtype='unicode')
sequence_length = 500
n_features = len(df.columns)
val_ratio = 0.1
n_epochs = 3000
batch_size = 50
data = df.as_matrix()
data_processed = []
for index in range(len(data) - sequence_length):
data_processed.append(data[index: index + sequence_length])
data_processed = np.array(data_processed)
val_split = round((1 - val_ratio) * data_processed.shape[0])
train = data_processed[:, int(val_split), :]
val = data_processed[int(val_split):, :]
print('Training data: {}'.format(train.shape))
print('Validation data: {}'.format(val.shape))
train_samples, train_nx, train_ny = train.shape
val_samples, val_nx, val_ny = val.shape
train = train.reshape((train_samples, train_nx * train_ny))
val = val.reshape((val_samples, val_nx * val_ny))
preprocessor = MinMaxScaler().fit(train)
train = preprocessor.transform(train)
val = preprocessor.transform(val)
train = train.reshape((train_samples, train_nx, train_ny))
val = val.reshape((val_samples, val_nx, val_ny))
X_train = train[:, : -1]
y_train = train[:, -1][:, -1]
X_val = val[:, : -1]
y_val = val[:, -1][:, -1]
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], n_features))
X_val = np.reshape(X_val, (X_val.shape[0], X_val.shape[1], n_features))
model = Sequential()
model.add(LSTM(input_shape=(X_train.shape[1:]), units=100, return_sequences=True))
model.add(Dropout(0.5))
model.add(LSTM(100, return_sequences=False))
model.add(Dropout(0.25))
model.add(Dense(units=1))
model.add(Activation("relu"))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mae', 'mse', 'accuracy'])
history = model.fit(
X_train,
y_train,
batch_size=batch_size,
epochs=n_epochs,
verbose=2)
preds_val = model.predict(X_val)
diff = []
for i in range(len(y_val)):
pred = preds_val[i][0]
diff.append(y_val[i] - pred)
real_min = preprocessor.data_min_[104]
real_max = preprocessor.data_max_[104]
print(preprocessor.data_min_[:1])
print(preprocessor.data_max_[:1])
preds_real = preds_val * (real_max - real_min) + real_min
y_val_real = y_val * (real_max - real_min) + real_min
plt.plot(preds_real, label='Predictions')
plt.plot(y_val_real, label='Actual values')
plt.xlabel('test')
plt.legend(loc=0)
plt.show()
print(model.summary())
这是错误:
使用 TensorFlow 后端。
Traceback(最近一次调用最后一次):
文件“E:/Tutorial/new.py”,第 20 行,在
data_processed = np.array(data_processed)
内存错误
【问题讨论】:
-
另外,你...只有 6 mb 的内存? mb,对吧?喜欢,不是gb?你挖出什么样的恐龙有这么小的公羊?
-
@JakobLovern 哈哈哈抱歉错误,它的容量为 6 GB
-
我有点担心,那里。无论如何,你在每个单元格中存储什么类型的东西?
-
在较小的数据集上尝试代码时,您是否仍然收到错误消息?如果是这样,那就是内存泄漏。如果没有,那么您只是拥有太大的数据集,您应该考虑将其划分。具体来说,如果这个神经网络像正常网络一样工作,只需从磁盘中逐个单元地提取数据来训练你的 AI。不过……你可能需要一些严重的低级黑客来完成这样的特技。
-
好的,这是与内存错误不同的问题。为了将来有问题的人着想,我希望您回滚您的编辑并将您的问题表述为专注于内存错误,然后调试您的代码并再次作为新问题发布。我会发布这个问题的答案,以便它可以从未回答的队列中退出。
标签: python numpy tensorflow lstm rnn