Нужна помощь в реализации модели Tensorflow в реальном времени. Пока я тренируюсь, все работает нормально, но когда я перехожу к прогнозу или предсказанию в реальном времени, результат, который я получил, не удался. Я не знаю, почему это происходит. Я использовал ссылку на код отсюда: https://www.kaggle.com/raoulma/ny-stock-price-prediction-rnn-lstm-gru/notebook И попытался реализовать или развернуть с использованием того же кода с небольшими изменениями.
См. Следующий код:
import numpy as np
import pandas as pd
import sklearn
import sklearn.preprocessing
import datetime
import os
import tensorflow as tf
df = pd.read_csv("Realtime_Values.csv", index_col = 0)
df.info()
def load_data(stock,seq_len):
data_raw = stock.as_matrix() # convert to numpy array
data = []
for index in range(len(data_raw) - seq_len):
data.append(data_raw[index: index + seq_len])
#print(len(data))
data = np.array(data);
x_forecast = data[:,:-1,:]
return x_forecast
def normalize_data(df):
cols = list(df.columns.values)
min_max_scaler = sklearn.preprocessing.MinMaxScaler()
df = pd.DataFrame(min_max_scaler.fit_transform(df.values))
df.columns = cols
return df
model_path = "modelsOHLC"
seq_len = 9
# parameters
n_steps = seq_len-1
n_inputs = 4
n_neurons = 100
n_outputs = 4
n_layers = 4
learning_rate = 0.01
batch_size = 10
n_epochs = 1000
tf.reset_default_graph()
X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])
y = tf.placeholder(tf.float32, [None, n_outputs])
layers = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.elu)
for layer in range(n_layers)]
multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)
rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)
stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])
stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)
outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])
outputs = outputs[:,n_steps-1,:] # keep only last output of sequence
loss = tf.reduce_mean(tf.square(outputs - y)) # loss function = mean squared error
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
training_op = optimizer.minimize(loss)
saver = tf.train.Saver()
sess =tf.Session()
sess.run(tf.global_variables_initializer())
if (tf.train.checkpoint_exists(tf.train.latest_checkpoint(model_path))):
saver.restore(sess, tf.train.latest_checkpoint(model_path))
df = normalize_data(df)
x_forecast = load_data(df,seq_len)
y_forecast_pred = sess.run(outputs, feed_dict = {X: x_forecast})
print(y_forecast_pred)
Может ли кто-нибудь помочь мне запустить приведенный выше код в реальном времени без каких-либо проблем?
Уважаемый, прочтите, пожалуйста, мой вопрос. У меня есть доступная ссылка на kaggle. Вы можете увидеть мой код оттуда. Тот же код, который я использовал для обучения, проверки и тестирования. Но проблема только в реализации сценария в реальном времени. Следовательно, я упомянул, что я пробовал.
В чем именно заключается ваша проблема? Просто ваши результаты недостаточно точны или вы получаете неожиданный результат каким-то другим способом? На самом деле невозможно ответить на ваш вопрос, не зная, чего вы хотите.
да. В сценарии реального времени я не получаю результат, как раньше на тренировках и даже при тестировании. Пожалуйста, дайте мне знать, что не так с моей реализацией.
ознакомьтесь с этой статьей: todatascience.com/deploy-tensorflow-models-9813b5a705d5
Я попробовал и даже поговорил с писателем на гитхабе. У меня это не сработало. А писатель даже не хочет помочь. Думаю, он чертовски занят, чтобы посмотреть на чей-то вопрос.
Результаты ваших тренировок похожи на те, что указаны в статье? и как выглядят ваши фактические выходные результаты?






Есть вероятность, что код не смог найти сохраненные веса при обучении модели программой; таким образом, прогнозы генерируются в необученном состоянии. Ваш код для модели обучения:
if (tf.train.checkpoint_exists(tf.train.latest_checkpoint(model_path))):
saver.restore(sess, tf.train.latest_checkpoint(model_path))
Чтобы решить эту проблему:
Добавьте отладочный код, например print("checkpoint exists!")
Поместите точку останова через отладчик до или после save.restore(...), чтобы найти контрольную точку для восстановления.
Посмотрите на model_path, чтобы убедиться, что ваши контрольные точки сохранены правильно.
Не думаю, что код не находит сохраненную модель. Потому что, если код не загрузил сохраненную модель, как он предсказывает будущие кадры?
Я не вижу кода для цикла обучения. Можете ли вы добавить свой код цикла обучения?