Example #1
0
def lstm():
    maxlen = 50
    X, Y, Z = gettuple()
    print(len(X), len(Y), len(Z))
    print('begin')
    nbatch = 64
    outdim = 3
    args = {
        'emb_size': 300,
        'hidden_size': 128,
        'num_layers': 2,
        'dropout': 0.5
    }
    BATCH_SIZE = 1

    model = SeqLSTMClassify(args, outdim)

    for i in range(0, len(X), nbatch):
        up = min(len(X), i + nbatch)

        seq_tensor1, y1, seq_lengths1, perm_idx1 = embed_and_pad(
            X[i:up], Z[i:up], maxlen, 'int')
        seq_tensor2, y2, seq_lengths2, perm_idx2 = embed_and_pad(
            Y[i:up], Z[i:up], maxlen, 'int')

        loss = model.learn_once(
            ((seq_tensor1, seq_lengths1), (seq_tensor2, seq_lengths2)), y1)
        print(loss.data.cpu().numpy())
Example #2
0
def train(x, y, maxlen, EPOCH=1):
    outdim = 2
    args = {
        'emb_size': 300,
        'hidden_size': 128,
        'num_layers': 2,
        'dropout': 0.5
    }
    BATCH_SIZE = 1
    model = SeqLSTMClassify(args, outdim)

    for epoch in range(EPOCH):
        idx = np.arange(len(x), dtype=int)
        np.random.shuffle(idx)

        for i in range(0, len(x), BATCH_SIZE):
            print(i)
            seq_tensor, y, seq_lengths, perm_idx = embed_and_pad(
                x[idx[i:i + BATCH_SIZE]], y[idx[i:i + BATCH_SIZE]], maxlen)
            loss = model.learn_once((seq_tensor, seq_lengths), y)
            print(loss.data.cpu().numpy())

    return model
Example #3
0
def predict(df, model):
    seq_tensor, y, seq_lengths, perm_idx = embed_and_pad(
        df, np.arange(len(df.index)))
    return model.predict((seq_tensor, seq_lengths), y, perm_idx)
Example #4
0
def eval(x, y, maxlen, model):
    seq_tensor, y, seq_lengths, perm_idx = embed_and_pad(x, y, maxlen)
    loss = model.learn_once((seq_tensor, seq_lengths), y)
    print(loss.data.cpu().numpy())
    return loss.data.cpu().numpy()
Example #5
0
def eval(df, model):
    seq_tensor, y, seq_lengths, perm_idx = embed_and_pad(
        df, np.arange(len(df.index)))
    loss = model.learn_once((seq_tensor, seq_lengths), y)
    print(loss.data.cpu().numpy())
    return loss.data.cpu().numpy()