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
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( '------------------------------------------------------------------------' )
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