예제 #1
0
def babi_handler(data_dir, task_number):
    """
    Handle for bAbI task.

    Args:
        data_dir (string) : Path to bAbI data directory.
        task_number (int) : The task ID from the bAbI dataset (1-20).

    Returns:
        BABI : Handler for bAbI task.
    """
    task = task_list[task_number - 1]
    return BABI(path=data_dir, task=task, subset=subset)
예제 #2
0
    choices=xrange(1, 21),
    help='the task ID to train/test on from bAbI dataset (1-20)')
parser.add_argument('--rlayer_type',
                    default='gru',
                    choices=['gru', 'lstm'],
                    help='type of recurrent layer to use (gru or lstm)')
args = parser.parse_args(gen_be=False)
args.batch_size = 32

task = task_list[args.task - 1]

# setup backend
be = gen_backend(**extract_valid_args(args, gen_backend))

# load the bAbI dataset
babi = BABI(path=args.data_dir, task=task, subset=subset)
train_set = QA(*babi.train)
valid_set = QA(*babi.test)

# recurrent layer parameters (default gru)
rlayer_obj = GRU if args.rlayer_type == 'gru' else LSTM
rlayer_params = dict(output_size=100,
                     reset_cells=True,
                     init=GlorotUniform(),
                     init_inner=Orthonormal(0.5),
                     activation=Tanh(),
                     gate_activation=Logistic())

# if using lstm, swap the activation functions
if args.rlayer_type == 'lstm':
    rlayer_params.update(dict(activation=Logistic(), gate_activation=Tanh()))