Как вывести значение CNN для прогноза акций - PullRequest
0 голосов
/ 25 апреля 2019

Я построил нейронную сеть на основе LSTM, чтобы предсказать цену BTC. Я бы сказал, что его тренировка приличная, но я не уверен, как заставить его предсказывать завтрашнюю цену, например.

Я попробовал метод Кераса predict для моей обученной модели с сегодняшней ценой в качестве аргумента, а затем с tens.flow «tf.argmax», чтобы выбрать самую высокую достоверность в массиве. Теперь я знаю, что это относится к классу, предсказанному в случае компьютерного зрения, но я действительно не имею ни малейшего представления о том, на что ссылаются эти вероятности в этом случае.

Модель построена:


  model = Sequential()
  model.add(LSTM(neurons, return_sequences=True, input_shape=(inputs.shape[1], inputs.shape[2]), activation=activ_func))
  model.add(Dropout(dropout))
  model.add(LSTM(neurons, return_sequences=True, activation=activ_func))
  model.add(Dropout(dropout))
  model.add(LSTM(neurons, activation=activ_func))
  model.add(Dropout(dropout))
  model.add(Dense(units=output_size))
  model.add(Activation(activ_func))
  model.compile(loss=loss, optimizer=optimizer, metrics=['mae'])
  model.summary()
  plot_keras_model(model, show_shapes=True, show_layer_names=False)

Обучение и прогноз:


prediction_data = get_today_price4prediction('bitcoin', tag="BTC")
X_prediction = create_inputs(prediction_data)
X_prediction = to_array(X_prediction)
btc_history = btc_model.fit(X_train, Y_train_btc, epochs=epochs, batch_size=batch_size, verbose=1, validation_data=(X_test, Y_test_btc), shuffle=False)
predictions = btc_model.predict(X_prediction, verbose=1, steps=None)
plot_results(btc_history, btc_model, Y_train_btc, coin='BTC')
predictions = tf.math.argmax(predictions)
print(predictions)

Ожидаемый результат - массив NumPy 7D со значениями от 1 до 1e-7. Но я не знаю, к чему относятся эти ценности. Любое предложение?

1 Ответ

0 голосов
/ 25 апреля 2019

Похоже, вы пытаетесь получить результаты, не зная ваших данных.Никогда не делайте этого, вы, скорее всего, получите бесполезные результаты.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...