GoConqr has a new look! Let us know what you think.

Notes

RNN and LSTM

Kaveri Kale English 2 pages

Content of the notes (2)

Page 1

Load required libraries :

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from keras.models import Sequential

from keras.layers import Dense, SimpleRNN

Generating sample dataset

# convert into dataset matrix

def convertToMatrix(data, step):

X, Y =[], []

for i in range(len(data)-step):

d=i+step

X.append(data[i:d,])

Y.append(data[d,])

return np.array(X), np.array(Y)

step = 4

N = 1000

Tp = 800

t=np.arange(0,N)

x=np.sin(0.02*t)+2*np.random.rand(N)

df = pd.DataFrame(x)

df.head()

plt.plot(df)

plt.show()

values=df.values

train,test = values[0:Tp,:], values[Tp:N,:]

# add step elements into train and test

test = np.append(test,np.repeat(test[-1,],step))

train = np.append(train,np.repeat(train[-1,],step))

trainX,trainY =convertToMatrix(train,step)

testX,testY =convertToMatrix(test,step)

trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))

testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))

model = Sequential()

model.add(SimpleRNN(units=32, input_shape=(1,step), activation="relu"))

model.add(Dense(8, activation="relu"))

model.add(Dense(1))

model.compile(loss='mean_squared_error', optimizer='rmsprop')

model.summary()

model.fit(trainX,trainY, epochs=100, batch_size=16, verbose=2)

trainPredict = model.predict(trainX)

testPredict= model.predict(testX)

predicted=np.concatenate((trainPredict,testPredict),axis=0)

trainScore = model.evaluate(trainX, trainY, verbose=0)

print(trainScore)

index = df.index.values

plt.plot(index,df)

plt.plot(index,predicted)

plt.axvline(df.index[Tp], c="r")

plt.show()

Output of above RNN is :

Page 2

Information

Description
Note on RNN and LSTM, created by Kaveri Kale on 21/08/2019.
Created by
Kaveri Kale
Views
0
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?