In [40]:
import model
import tf_parser
import importlib
import tensorflow as tf
import random
import numpy as np
import pickle
import char_rnn
In [67]:
importlib.reload(model)
importlib.reload(char_rnn)
Out[67]:
In [19]:
model.softmax_sample(np.array([0.3, 0.5, 0.3]), temperature = 1)
Out[19]:
In [20]:
test_dir = '/home/gray/scripts/test/'
model_name = 'grays_model'
In [21]:
test_params = {
'seq-length' : 50,
'char-map-size' : 101,
'label-length' : 50,
'hidden-layer-sizes' : [100, 100],
'hidden-layer-details' : [{'activation' : tf.nn.relu}, {'activation' : tf.nn.relu}],
'minimizer-options' : {'learning-rate' : 0.1}
}
In [22]:
model.create(test_dir, test_params, model_name = model_name)
In [ ]:
def character_generator ():
i = 1
for _ in range(0, 1000):
x = [[ (i + t )% 101 for t in range(0,51)], [(i + t + 45) % 101 for t in range(0, 51)]]
i += i + random.randint(1, 5)
yield((np.array([s[0:50]for s in x], dtype = np.uint8), np.array([s[1:51]for s in x], dtype = np.uint8)))
In [ ]:
for k, _ in character_generator():
print(k)
In [ ]:
fake_char_map2 = {'a' : 1, 'b' : 2}
def new_character_generator():
for _ in range(0, 2000):
def gen_miniseq():
seq = [random.choice([1, 2]) for _ in range(0, 4) ]
for i in range(4, 51):
if seq[-1] == 1 and seq[-4] == 1:
newchar = np.random.choice([1, 2 ], p = [0.9, 0.1])
if seq[-1] == 1 and seq[-4] == 2:
newchar = np.random.choice([1, 2], p = [0.6, 0.4])
if seq[-1] == 2 and seq[-4] == 2:
newchar = np.random.choice([1, 2], p = [0.2, 0.8])
if seq[-1] == 2 and seq[-4] == 1 :
newchar = np.random.choice([1, 2], p = [0.3, 0.7])
seq.append(newchar)
return seq
seqs = [gen_miniseq() for _ in range(0, 26)]
labels = [s[1:51] for s in seqs]
chars = [s[0:50] for s in seqs]
yield (np.array(chars, dtype = np.uint8), np.array(labels, dtype = np.uint8))
In [ ]:
for c, l in new_character_generator():
print(c[0, :])
print(l[0, :])
In [ ]:
model.train(test_dir, {'report-freq' : 100, 'state-init' : 'ZERO', 'shapes' : [100, 100]}, character_generator(), model_name )
In [ ]:
In [ ]:
fake_char_map = {str(i) : i for i in range(0, 101)}
fake_char_map[' '] = 0
fake_inv_map = {i : str(i) for i in range(0, 101)}
fake_config = {'seq-length' : 50, 'char-map' : fake_char_map, 'inv-char-map' : fake_inv_map, 'state-init' : 'ZERO',
'temperature' : 1, 'shapes' : [100, 100]}
In [ ]:
model.generate(test_dir, seed_text = '56789', gen_length=200, generate_config = fake_config, model_name=model_name)
In [ ]:
new_test_dir = '/home/gray/scripts/test2/'
new_test_params = {
'seq-length' : 50,
'char-map-size' : 3,
'label-length' : 50,
'hidden-layer-sizes' : [50, 50],
'hidden-layer-details' : [{'activation' : tf.nn.relu}, {'activation' : tf.nn.relu}],
'minimizer-options' : {'learning-rate' : 0.1}
}
In [ ]:
model.create(new_test_dir, new_test_params, model_name = 'abab_model')
In [ ]:
In [ ]:
model.train(
new_test_dir,
{'report-freq' : 5, 'state-init' : 'ZERO', 'shapes' : [50, 50]},
new_character_generator(), 'abab_model')
In [28]:
fake_inv_map2 = {1 : 'a', 2 : 'b', 0 : ' '}
fake_char_map2 = {'a' : 1, 'b' : 2, ' ' : 0}
fake_config2 = {'seq-length' : 50, 'char-map' : fake_char_map2, 'inv-char-map' : fake_inv_map2, 'state-init' : 'ZERO',
'temperature' : 0.1, 'shapes' : [50, 50]}
In [ ]:
In [30]:
model.generate(
new_test_dir,
seed_text = 'bababababababab',
gen_length=200,
generate_config=fake_config2,
model_name='abab_model')
In [48]:
with open("/home/gray/scripts/shakespeare/shakespeare.char_map", 'rb') as char_f:
char_map = pickle.load(char_f)
In [51]:
print([(chr(c), v) for c, v in char_map.items()])
In [42]:
shk = np.load('/home/gray/scripts/shakespeare2/shakespeare2.npy')
In [46]:
shk[0:100]
Out[46]:
In [47]:
! cat /home/gray/scripts/shakespeare2/tinyshakespeare.txt | head
In [70]:
it = char_rnn._make_batch_iterator(shk, 50, 32, 2000, 1)
In [72]:
t = 0
for i in it:
t += 1
In [73]:
t
Out[73]: