Задать вопрос
@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) )
  • Вопрос задан
  • 79 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
adugin
@adugin Куратор тега Python
Для подготовки данных можете воспользоваться TimeseriesGenerator
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽