-
Notifications
You must be signed in to change notification settings - Fork 114
/
Copy pathPython - Keras LSTM Network
68 lines (60 loc) · 1.88 KB
/
Python - Keras LSTM Network
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import numpy as np
import numpy
from keras.models import Sequential
from keras.layers.recurrent import LSTM
from keras.callbacks import ModelCheckpoint
from keras.utils import np_utils
from keras.layers.core import Dense, Activation,Dropout
from keras.callbacks import ModelCheckpoint
import sys
filename = "quantum.txt"
raw_text = open(filename).read()
raw_text = raw_text.lower()
chars = sorted(list(set(raw_text)))
char_to_int = dict((c, i) for i, c in enumerate(chars))
n_chars = len(raw_text)
n_vocab = len(chars)
print("Total Characters: ", n_chars)
print("Total Vocab: ", n_vocab)
seq_length = 100
dataX = []
dataY = []
for i in range(0, n_chars - seq_length, 1):
seq_in = raw_text[i:i + seq_length]
seq_out = raw_text[i + seq_length]
dataX.append([char_to_int[char] for char in seq_in])
dataY.append(char_to_int[seq_out])
n_patterns = len(dataX)
print("Total Patterns: ", n_patterns)
X = numpy.reshape(dataX, (n_patterns, 1, 100))
X = X / float(n_vocab)
y = np_utils.to_categorical(dataY)
y=dataY
y = np_utils.to_categorical(dataY)
model = Sequential()
model.add(LSTM(100, 10, return_sequences=True))
model.add(LSTM(10, 10))
model.add(Dense(10, 42))
model.add(Activation("softmax"))
model.compile(loss="categorical_crossentropy", optimizer="rmsprop")
model.fit(X, y, nb_epoch=10, batch_size=600)
int_to_char = dict((i, c) for i, c in enumerate(chars))
pattern = dataX[1001]
data2=pattern[0:1000]
print("Seed:")
print("\"", ''.join([int_to_char[value] for value in data2]), "\"")
s=[]
for i in range(40):
pattern = dataX
f=20+i
g=f+300
len(pattern[f:g])
h=np.array(pattern[f:g])
x=np.reshape(h,(300,1,100))
x = np.array(x) / float(n_vocab)
prediction = model.predict(x, verbose=0)
index = numpy.argmax(prediction[i])
result = int_to_char[index]
s.append(result)
print("".join(s))
### Code adapted from: http://machinelearningmastery.com for keras 0.2.0