Попробуйте использовать 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 

Вы можете видеть, что через несколько месяцев первая эпоха обучения каждой акции стала смехотворно медленной.

0 ответов

Другие вопросы по тегам