Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- np.random.seed(1337)
- import keras
- from keras.models import Sequential
- from keras.layers import Dense, LSTM, TimeDistributed
- from keras.utils import np_utils
- from tqdm import tqdm
- import random
- random.seed(1)
- def generate():
- X = np.array([[random.choice([0, 1]) for _ in range(n)]
- for _ in range(length)])
- Y = np.concatenate(([[0] * n], X[:-1]))
- X = X.reshape(length, 1, n)
- Y = Y.reshape(length, 1, n)
- return X, Y
- n = 1
- model = Sequential()
- model.add(LSTM(n + max(n, 5), batch_input_shape=(1, 1, n),
- return_sequences=True, stateful=True))
- model.add(TimeDistributed(Dense(n, activation='sigmoid')))
- model.compile(loss='binary_crossentropy', optimizer='adam',
- metrics=['binary_accuracy'])
- for i in tqdm(range(10)):
- length = 30
- X, Y = generate()
- for _ in tqdm(range(15)):
- model.fit(X, Y, batch_size=1, nb_epoch=1, shuffle=False, verbose=0)
- model.reset_states()
- print()
- for i in range(5):
- length = 20
- X, Y = generate()
- print(model.evaluate(X, Y, batch_size=1, verbose=0)[1])
- model.reset_states()
Add Comment
Please, Sign In to add comment