def test_construction(self): interface = DNC.interface( read_keys=None, read_strengths=None, write_key=np.random.uniform(0, 1, (3, 9, 1)).astype(np.float32), write_strength=np.random.uniform(0, 1, (3, 1)).astype(np.float32), erase_vector=tf.convert_to_tensor( np.zeros((3, 9)).astype(np.float32)), write_vector=tf.convert_to_tensor( np.random.uniform(0, 1, (3, 9)).astype(np.float32)), free_gates=np.random.uniform(0, 1, (3, 5)).astype(np.float32), allocation_gate=np.random.uniform(0, 1, (3, 1)).astype(np.float32), write_gate=np.random.uniform(0, 1, (3, 1)).astype(np.float32), read_modes=None, ) memory = Memory(13, 9, 5) memory_state = memory.initial_state(3) write_op = memory.write(memory_state, interface) init_op = tf.global_variables_initializer() with self.test_session() as session: init_op.run() usage, write_weighting, memory, link_matrix, precedence = session.run( write_op) self.assertEqual(usage.shape, (3, 13)) self.assertEqual(write_weighting.shape, (3, 13)) self.assertEqual(memory.shape, (3, 13, 9)) self.assertEqual(link_matrix.shape, (3, 13, 13)) self.assertEqual(precedence.shape, (3, 13))
def test_init_memory(self): memory = Memory(words_num=13, word_size=7, read_heads_num=2) state = memory.initial_state(9) self.assertEqual(state.memory_matrix.shape, (9, 13, 7)) self.assertEqual(state.usage_vector.shape, (9, 13)) self.assertEqual(state.link_matrix.shape, (9, 13, 13)) self.assertEqual(state.precedence_vector.shape, (9, 13)) self.assertEqual(state.write_weighting.shape, (9, 13)) self.assertEqual(state.read_weightings.shape, (9, 13, 2))