Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How do I train an LSTM architecture to predict number sequence?

I have implemented the following LSTM architecture. I am tring to train it to predict the number sequence but when I test it is not working. I think Iam giving the wrong input and the wrong test data.


import numpy as np
import tensorflow as tf
import keras
from keras.models import Sequential
from keras.layers import LSTM,Dense

X_train = np.array([
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
    [[10, 11, 12], [13, 14, 15], [16, 17, 18]],
])

y_train = np.array([
    [4, 5, 6],
    [13, 14, 15],
])

#X_train = X_train.reshape((X_train.shape[0], 5, 5))

model = keras.Sequential()
model.add(keras.layers.LSTM(3,input_shape =(3, 3)))  #### The input_shape has to correspond to the input data
model.compile(loss="mean_squared_error", optimizer="adam")
model.fit(X_train, y_train, epochs=100)


X_new = np.array([[1,2,3]])
X_new = np.reshape(X_new, (1,3))

y_pred = model.predict(X_new)
print(y_pred)

Someone can give me the correct input data and test data to train this architecture?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

One way to set the input and output sizes for your problem is as follows (not necessarily the only way):

import numpy as np
import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import LSTM, Dense

# train input
X_train = np.array([
    [[1], [2], [3]],
    [[4], [5], [6]],
    [[7], [8], [9]],
    [[10], [11], [12]],
    [[13], [14], [15]],
    [[16], [17], [18]],
])

y_train = np.array([
    [4],
    [5],
    [6],
    [13],
    [14],
    [15],
])

# Build the model
model = Sequential()
model.add(LSTM(3, input_shape=(3, 1)))  # Input shape should be (sequence_length, input_dimension)
model.add(Dense(1))  # just one neuron for regression
model.compile(loss="mean_squared_error", optimizer="adam")

# Reshape the input data to match the model's input shape
X_train = X_train.reshape((X_train.shape[0], 3, 1))


model.fit(X_train, y_train, epochs=100)

# Test the model
X_new = np.array([[1], [2], [3]])  # Input a sequence of numbers
X_new = X_new.reshape((1, 3, 1))
y_pred = model.predict(X_new)
print(y_pred)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading