Развертывание модели Tensorflow в Python

Нужна помощь в реализации модели 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)

Может ли кто-нибудь помочь мне запустить приведенный выше код в реальном времени без каких-либо проблем?

Я не вижу кода для цикла обучения. Можете ли вы добавить свой код цикла обучения?

Ernest S Kirubakaran 01.11.2018 10:44

Уважаемый, прочтите, пожалуйста, мой вопрос. У меня есть доступная ссылка на kaggle. Вы можете увидеть мой код оттуда. Тот же код, который я использовал для обучения, проверки и тестирования. Но проблема только в реализации сценария в реальном времени. Следовательно, я упомянул, что я пробовал.

Jaffer Wilson 02.11.2018 05:37

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

Andrew McDowell 05.11.2018 13:12

да. В сценарии реального времени я не получаю результат, как раньше на тренировках и даже при тестировании. Пожалуйста, дайте мне знать, что не так с моей реализацией.

Jaffer Wilson 06.11.2018 05:10

ознакомьтесь с этой статьей: todatascience.com/deploy-tensorflow-models-9813b5a705d5

Arpit Sharma 06.11.2018 07:04

Я попробовал и даже поговорил с писателем на гитхабе. У меня это не сработало. А писатель даже не хочет помочь. Думаю, он чертовски занят, чтобы посмотреть на чей-то вопрос.

Jaffer Wilson 06.11.2018 12:06

Результаты ваших тренировок похожи на те, что указаны в статье? и как выглядят ваши фактические выходные результаты?

Thunderwood 06.11.2018 14:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
7
426
1

Ответы 1

Есть вероятность, что код не смог найти сохраненные веса при обучении модели программой; таким образом, прогнозы генерируются в необученном состоянии. Ваш код для модели обучения:

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, чтобы убедиться, что ваши контрольные точки сохранены правильно.

Не думаю, что код не находит сохраненную модель. Потому что, если код не загрузил сохраненную модель, как он предсказывает будущие кадры?

Jaffer Wilson 08.11.2018 05:33

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