Попробуйте использовать tf.keras для изучения акций, и после изучения 500 акций tf стал очень медленным
Я пытаюсь использовать tensorflow.keras(CuRNNLSTM)
рассчитать структуру запасов. Я использую следующие коды, чтобы вычислить около 500 акций в начале месяца. И затем сохраните некоторые хорошие результаты в памяти (предсказывайте каждую из акций в этом месяце). Затем на второй месяц я снова вычислю эти 500 акций, а затем сделаю ежедневные прогнозы. И так далее. я использую tensorflow-gpu 1.13.1
а также GTX 1070
, Начиная со 2-го месяца обучения, оно становилось все медленнее и медленнее. Особенно первая эпоха для каждой акции.
Это из-за низкой эффективности чтения графической памяти данных из памяти ПК? Что я могу с этим поделать?
Я попытался использовать код, подобный следующему, чтобы ограничить использование GPU-памяти. Но бесполезно. Это все еще становится медленнее.
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
tf.enable_eager_execution(config=config)
for stock in df_all.minor_axis:
print(stock)
train_x, train_y, test_x, test_y = handle_data(df_all[:, :-2, stock])
model = Sequential()
model.add(LSTM(128, input_shape=(train_x.shape[1:]), return_sequences=True))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(LSTM(128, input_shape=(train_x.shape[1:])))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(Dense(32, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(2, activation="softmax"))
opt = tf.keras.optimizers.Adam(lr=0.001, decay=1e-6)
model.compile(loss='sparse_categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'])
tensorboard = TensorBoard(log_dir='logs/test999')
filepath = "RNN_Final-{epoch:02d}"
checkpoint = ModelCheckpoint("models/{}.model".format(filepath, monitor='val_acc',
verbose=1, save_best_only=True,
mode='max'))
history = model.fit(train_x, train_y,
batch_size=BATCH_SIZE,
epochs=EPOCHS,
validation_data=(train_x, train_y),
callbacks=[tensorboard, checkpoint])
test_loss, test_acc = model.evaluate(test_x, test_y)
if test_acc > 0.50:
context.trade_stocks.append(stock)
context.model_dict[stock] = model
print('{}done!'.format(stock))
Epoch 1/10
8/198 [>.............................] - ETA: 3:49 - loss: 0.9595 - acc: 0.2500
24/198 [==>...........................] - ETA: 1:10 - loss: 0.9048 - acc: 0.5000
40/198 [=====>........................] - ETA: 38s - loss: 0.8108 - acc: 0.5250
Вы можете видеть, что через несколько месяцев первая эпоха обучения каждой акции стала смехотворно медленной.