In [1]:
import sys
sys.path.append('..')
In [2]:
from dali.core import LSTM, Mat, LSTMState, StackedLSTM
import pickle
import random
import matplotlib.pyplot as plt
%matplotlib inline
In [3]:
s = LSTMState(Mat([1,2,3]), Mat([4,2,1]))
print(s.dtype)
print(s.memory.w)
print(s.hidden.w)
In [4]:
l = LSTM(2, 5)
In [5]:
i = Mat([[1, 2]])
h = l.initial_states()
print(i.__repr__())
print(h.hidden.__repr__())
print(h.memory.__repr__())
h = l.activate(i, h)
print(h.hidden.__repr__())
print(h.memory.__repr__())
In [8]:
print("Activate sequence for 3 different inputs states and one hidden states")
r1 = l.activate_sequence([Mat(3, 2) for i in range(10)], l.initial_states()).memory
print(r1.w)
print("Activate sequence for 3 different hidden states and three different inputs")
r2 = l.activate_sequence([Mat(3, 2) for i in range(10)], LSTMState(Mat(3,5), Mat(3,5))).memory
print(r2.w)
print("Activate sequence for 3 different hidden states and one input (!)")
r3 = l.activate_sequence([Mat(1, 2) for i in range(10)], LSTMState(Mat(3,5), Mat(3,5))).memory
print(r3.w)
In [9]:
INPUTS = [2,3]
HIDDEN_SIZE = 5
NUM_CHILDREN = 3
In [10]:
l = LSTM(INPUTS, HIDDEN_SIZE, NUM_CHILDREN, memory_feeds_gates=True)
In [11]:
idx = random.randint(0, len(l.parameters()) - 1)
print(l.cell_layer)
print(l.forget_layers)
print(l.hidden_size)
print(l.input_sizes)
print(l.input_layer)
print(l.num_children)
print(l.memory_feeds_gates)
print(l.parameters()[3].w)
with open("/tmp/lstm_test_dali.dali", "wb") as f:
pickle.dump(l,f)
In [4]:
import pickle
from test_dali import LSTM, Mat
with open("/tmp/lstm_test_dali.dali", "rb") as f:
l_pickled = pickle.load(f)
print("==== PICKLED ====")
print(l_pickled.cell_layer)
print(l_pickled.forget_layers)
print(l_pickled.hidden_size)
print(l_pickled.input_sizes)
print(l_pickled.input_layer)
print(l_pickled.num_children)
print(l_pickled.memory_feeds_gates)
print(l_pickled.parameters()[3].w)
In [13]:
hs = [l_pickled.initial_states() for _ in range(l_pickled.num_children)]
i = [Mat(1, ipt) for ipt in l_pickled.input_sizes]
h_combined = l_pickled.activate(i, hs)
print(h_combined.hidden.__repr__())
print(h_combined.memory.__repr__())
In [7]:
l.Wcells_to_forgets[0]
In [8]:
l = StackedLSTM([1,2], [5,4], shortcut=True)
In [9]:
l.activate(
[
Mat(5,1),
Mat(5,2),
], l.initial_states()
)
Out[9]:
In [10]:
print(l.cells[0].cell_layer)
print(l.cells[0].forget_layers)
print(l.cells[0].hidden_size)
print(l.cells[0].input_sizes)
print(l.cells[0].input_layer)
print(l.cells[0].num_children)
print(l.cells[0].memory_feeds_gates)
print(l.cells[0].parameters()[5].w)
print(l.shortcut)
with open("/tmp/stacked_lstm_test_lol.dali", "wb") as f:
pickle.dump(l,f)
In [12]:
import pickle
from dali.core import StackedLSTM, Mat
with open("/tmp/stacked_lstm_test_lol.dali", "rb") as f:
l_pickled = pickle.load(f)
print("==== PICKLED ====")
print(l_pickled.cells[0].cell_layer)
print(l_pickled.cells[0].forget_layers)
print(l_pickled.cells[0].hidden_size)
print(l_pickled.cells[0].input_sizes)
print(l_pickled.cells[0].input_layer)
print(l_pickled.cells[0].num_children)
print(l_pickled.cells[0].memory_feeds_gates)
print(l_pickled.cells[0].parameters()[5].w)
print(l.shortcut)
In [10]:
l_pickled.initial_states()
In [21]:
l_pickled.cells
Out[21]:
In [5]:
l_pickled.activate([
Mat([[1]]),
Mat([[1, 2]])
], l_pickled.initial_states())
Out[5]:
In [4]:
l_pickled.activate([
Mat([[1]]),
Mat([[1, 2]])
], [])
In [23]:
h1 = l_pickled.cells[0].activate(
[Mat([[1]]),
Mat([[1, 2]])],
l_pickled.cells[0].initial_states()
)
h2 = l_pickled.cells[1].activate(
h1.hidden,
l_pickled.cells[1].initial_states()
)
In [24]:
h1.hidden
Out[24]:
In [ ]:
new_state = l_pickled.activate([
Mat([[1]]),
Mat([[1, 2]])
],
l_pickled.initial_states(),
0.5
)
new_state[0].memory
In [13]:
plt.matshow(l_pickled.cells[0].forget_layers[0].matrices[0].w)
Out[13]:
In [33]:
?l.activate_sequence
In [ ]: