Пример #1
0
def show_examples_tf(model, es, rlut1, rlut2, vocab, mxlen, sample, prob_clip,
                     max_examples, reverse):
    si = np.random.randint(0, len(es))

    batch_dict = es[si]
    i = 0
    src_lengths_key = model.src_lengths_key
    src_key = src_lengths_key.split('_')[0]
    while True:

        example = {}
        for k in batch_dict.keys():
            if i >= len(batch_dict[k]):
                return
            example[k] = batch_dict[k][i]
        print(
            '========================================================================'
        )

        src_i = example[src_key]
        src_len_i = example[src_lengths_key]
        tgt_i = example['tgt']

        sent = lookup_sentence(rlut1, src_i, reverse=reverse)
        print('[OP] %s' % sent)
        sent = lookup_sentence(rlut2, tgt_i)
        print('[Actual] %s' % sent)
        tgt_i = np.zeros((1, mxlen))
        example['tgt'] = tgt_i
        src_i = src_i[np.newaxis, :]
        example[src_key] = src_i
        example[src_lengths_key] = np.array([src_len_i])
        next_value = Offsets.GO
        for j in range(mxlen):
            tgt_i[0, j] = next_value
            tgt_len_i = np.array([j + 1])
            example['tgt_lengths'] = tgt_len_i
            output = model.step(example).squeeze()[j]
            if sample is False:
                next_value = np.argmax(output)
            else:
                # This is going to zero out low prob. events so they are not
                # sampled from
                next_value = beam_multinomial(prob_clip, output)

            if next_value == Offsets.EOS:
                break

        sent = lookup_sentence(rlut2, tgt_i.squeeze())
        print('Guess: %s' % sent)
        print(
            '------------------------------------------------------------------------'
        )
        i += 1
        if i == max_examples:
            return
Пример #2
0
def show_examples_tf(model, es, rlut1, rlut2, embed2, mxlen, sample, prob_clip,
                     max_examples, reverse):
    si = np.random.randint(0, len(es))

    batch_dict = es[si]
    src_array = batch_dict['src']
    tgt_array = batch_dict['dst']
    src_len = batch_dict['src_len']

    if max_examples > 0:
        max_examples = min(max_examples, src_array.shape[0])
        src_array = src_array[0:max_examples]
        tgt_array = tgt_array[0:max_examples]
        src_len = src_len[0:max_examples]

    GO = embed2.vocab['<GO>']
    EOS = embed2.vocab['<EOS>']

    for src_len_i, src_i, tgt_i in zip(src_len, src_array, tgt_array):

        print(
            '========================================================================'
        )

        sent = lookup_sentence(rlut1, src_i, reverse=reverse)
        print('[OP] %s' % sent)
        sent = lookup_sentence(rlut2, tgt_i)
        print('[Actual] %s' % sent)
        dst_i = np.zeros((1, mxlen))
        src_i = src_i[np.newaxis, :]
        src_len_i = np.array([src_len_i])
        next_value = GO
        for j in range(mxlen):
            dst_i[0, j] = next_value
            tgt_len_i = np.array([j + 1])
            output = model.step({
                'src': src_i,
                'src_len': src_len_i,
                'dst': dst_i,
                'dst_len': tgt_len_i
            })[j]
            if sample is False:
                next_value = np.argmax(output)
            else:
                # This is going to zero out low prob. events so they are not
                # sampled from
                next_value = beam_multinomial(prob_clip, output)

            if next_value == EOS:
                break

        sent = lookup_sentence(rlut2, dst_i.squeeze())
        print('Guess: %s' % sent)
        print(
            '------------------------------------------------------------------------'
        )
Пример #3
0
def show_examples_tf(model, es, rlut1, rlut2, vocab, mxlen, sample, prob_clip, max_examples, reverse):
    si = np.random.randint(0, len(es))

    batch_dict = es[si]
    i = 0
    src_lengths_key = model.src_lengths_key
    src_key = src_lengths_key.split('_')[0]
    while True:

        example = {}
        for k in batch_dict.keys():
            if i >= len(batch_dict[k]):
                return
            example[k] = batch_dict[k][i]
        print('========================================================================')

        src_i = example[src_key]
        src_len_i = example[src_lengths_key]
        tgt_i = example['tgt']

        sent = lookup_sentence(rlut1, src_i, reverse=reverse)
        print('[OP] %s' % sent)
        sent = lookup_sentence(rlut2, tgt_i)
        print('[Actual] %s' % sent)
        tgt_i = np.zeros((1, mxlen))
        example['tgt'] = tgt_i
        src_i = src_i[np.newaxis, :]
        example[src_key] = src_i
        example[src_lengths_key] = np.array([src_len_i])
        next_value = Offsets.GO
        for j in range(mxlen):
            tgt_i[0, j] = next_value
            tgt_len_i = np.array([j+1])
            example['tgt_lengths'] = tgt_len_i
            output = model.step(example).squeeze()[j]
            if sample is False:
                next_value = np.argmax(output)
            else:
                # This is going to zero out low prob. events so they are not
                # sampled from
                next_value = beam_multinomial(prob_clip, output)

            if next_value == Offsets.EOS:
                break

        sent = lookup_sentence(rlut2, tgt_i.squeeze())
        print('Guess: %s' % sent)
        print('------------------------------------------------------------------------')
        i += 1
        if i == max_examples:
            return