Answer the question
In order to leave comments, you need to log in
You need to upgrade the network to LSTM. Or how can I do the same with an LSTM network?
Hello!
Need help with LSTM networks.
Below I have given a simplified example of the code that I used to analyze the data, but to improve the results, you need to apply at least two layers of LSTM.
Unfortunately, I was not able to figure out the correct formation of input data for the LSTM network. There is a lot of information on the Internet in English, which I do not speak (also python and keras are a new environment for me).
Please, I need your help to improve my example so that it would be possible to process LSTM data by the network. Or how can I do the same with an LSTM network?
Thank you in advance!
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) )
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question