@Ram777

Нужен апгрейд сети до LSTM. Или как мне сделать то же самое LSTM сетью?

Всем привет!
Нужна помощь по LSTM сетям.
Ниже я привёл упрощенный для примера код, который использовал для анализа данных, но для улучшения результатов необходимо применить хотя бы два слоя LSTM.
К сожалению мне не удалось разобраться с правильным формированием входных данных для LSTM сети. В интернете много информации на английском, которым я не владею, (так же python и keras для меня новая среда).

Пожалуйста, нужна ваша помощь - доработать мой пример, что бы была возможность обработки данных LSTM сетью. Или как мне сделать то же самое LSTM сетью?
Заранее благодарю!

import tensorflow as tf
import numpy as np


# Генератор данных
#
# Создаю массивы для обучения и для теста:
#   dat - здесь данные
#   dat_label - здесь верные ответы к dat
#
# То же самое для проверочной базы:
#   test - данные
#   test_label - здесь верные ответы к test
#
# Для примера формирую данные случайным образом random1 + random2 + random3 = label (верный ответ)
#

base_size =1000
dat = np.zeros((base_size, 3))
dat_label = np.zeros((base_size))
for i in range(base_size):
  dat[i,0] = np.random.randint(0, 100)
  dat[i,1] = np.random.randint(0, 100)
  dat[i,2] = np.random.randint(0, 100)
  dat_label[i] = dat[i,0] + dat[i,1] + dat[i,2]
  pass

test = np.zeros((base_size, 3))
test_label = np.zeros((base_size))
for i in range(base_size):
  test[i,0] = np.random.randint(0, 100)
  test[i,1] = np.random.randint(0, 100)
  test[i,2] = np.random.randint(0, 100)  
  test_label[i] = test[i,0] + test[i,1] + test[i,2]
  pass


###############################
#         вычисления          
###############################

model = tf.keras.Sequential([
  tf.keras.layers.Dense(3,   input_shape=(3, ) ),    
  tf.keras.layers.Dense(2), 
  tf.keras.layers.Dense(1)])
model.compile(loss=['mse'], optimizer = 'rmsprop')
history = model.fit(dat, dat_label, epochs = 10, verbose = 0, batch_size = 1,  validation_data=(test, test_label))



##########################################
# Ниже блок для оценки точности ответов
##########################################

predict_dat = model.predict(dat)
predict_test = model.predict(test)
print("----------predictions----------")
dat_ok_summ=0    # количество верных ответов по базе обучения
test_ok_summ=0   # количество верных ответов по базе теста
for i in range(base_size):   # Считаем количество верных ответов по базам dat и test
  #print(dat[i,0], dat[i,1], dat[i,2], dat_label[i], "predic=",predict_dat[i])
  if (dat_label[i]-predict_dat[i])<0.1: dat_ok_summ=dat_ok_summ+1          # Ответы с погрешностью меньше 0.1 засчитываем как верные
  if (test_label[i]-predict_test[i])<0.1: test_ok_summ=test_ok_summ+1      # Ответы с погрешностью меньше 0.1 засчитываем как верные
  pass

print("Точность ответов по базе обучения:", (dat_ok_summ*100)/base_size, "%")
print("Точность ответов по базе теста   :", (test_ok_summ*100)/base_size, "%")

print("Loss: ")
print("База обучения:", model.evaluate(dat, dat_label, verbose=0) )
print("База теста   :", model.evaluate(test, test_label, verbose=0) )
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
adugin
@adugin Куратор тега Python
Для подготовки данных можете воспользоваться TimeseriesGenerator
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы