model.increase_k()
        stats_for_k = {}

        if not args['dont_run_syntactic']:
            # syntactic update step
            augmented_costs = []
            costs = []
            for block_num in xrange(args['syntactic_blocks_to_run']):
                training_block = ngram_reader.training_block(data_rng.random_sample())
                block_size = training_block.shape[0]
                for count in xrange(block_size):
                    if count % print_freq == 0:
                        sys.stdout.write('\rk %i b%i: ngram %d of %d' % (model.k, block_num, count, block_size))
                        sys.stdout.flush()
                    train_index = sample_cumulative_discrete_distribution(training_block[:,-1], rng=data_rng)
                    correct_symbols, error_symbols, ngram_frequency = ngram_reader.contrastive_symbols_from_row(training_block[train_index], rng=data_rng)
                    augmented_cost, cost = model.update_w(*(list(correct_symbols) + list(error_symbols)))
                    if not np.isfinite(cost):
                        print 'single nan detected'
                        save_model('nan_dump.pkl.gz')
                        import IPython
                        IPython.embed()
                    augmented_costs.append(augmented_cost)
                    costs.append(cost)
                if args['syntactic_blocks_to_run'] > 1:
                    print
                    print  '%i intermediate mean %f' % (block_num, np.mean(costs[-block_size:]))

            print
            if not np.isfinite(np.mean(costs)):
                print 'nan cost mean detected'
Esempio n. 2
0
            # syntactic update step
            augmented_costs = []
            costs = []
            for block_num in xrange(args['syntactic_blocks_to_run']):
                training_block = ngram_reader.training_block(
                    data_rng.random_sample())
                block_size = training_block.shape[0]
                for count in xrange(block_size):
                    if count % print_freq == 0:
                        sys.stdout.write(
                            '\rk %i b%i: ngram %d of %d' %
                            (model.k, block_num, count, block_size))
                        sys.stdout.flush()
                    train_index = sample_cumulative_discrete_distribution(
                        training_block[:, -1], rng=data_rng)
                    correct_symbols, error_symbols, ngram_frequency = ngram_reader.contrastive_symbols_from_row(
                        training_block[train_index], rng=data_rng)
                    augmented_cost, cost = model.update_w(
                        *(list(correct_symbols) + list(error_symbols)))
                    if not np.isfinite(cost):
                        print 'single nan detected'
                        save_model('nan_dump.pkl.gz')
                        import IPython
                        IPython.embed()
                    augmented_costs.append(augmented_cost)
                    costs.append(cost)
                if args['syntactic_blocks_to_run'] > 1:
                    print
                    print '%i intermediate mean %f' % (
                        block_num, np.mean(costs[-block_size:]))

            print