Beispiel #1
0
    def initialize(self, input_dim=0, output_dim=5, isPredict=False):
        # self.batch_size    = 64
        if isPredict == True:
            self.input_dim = input_dim
            self.output_dim = output_dim

        # Symbols...........................................
        self.X = tf.placeholder(tf.float32, shape=[None, self.input_dim])
        self.Y = tf.placeholder(tf.float32, shape=[None, self.output_dim])

        # with tf.device('/device:GPU:0'):                                      # You can activate it for GPU version
        with tf.name_scope('model'):
            self.model = models.MLP_Model(inputs=self.X,
                                          input_dim=self.input_dim,
                                          hiddens=self.hiddens,
                                          output2_dim=self.output_dim,
                                          batch_size=self.batch_size,
                                          model_name="model_1",
                                          mode=self.initialization)
        with tf.name_scope('optimizer'):
            self.optimizer = optimizers.Optimizer(lr=self.learning_rate,
                                                  mode=self.mlp_optimizer,
                                                  model=self.model,
                                                  y=self.Y)

        with tf.name_scope('generator'):
            self.generator = optimizers.Generator(model=self.model)

        # Session Initialization............................
        # self.sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
        self.sess = tf.Session()
        self.sess.run(tf.global_variables_initializer())
        self.saver = tf.train.Saver(
        )  # Add ops to save and restore all the variables.
    def test_OptimizeOverMultipleEncoders(self):
        """Run the optimizer for a few cycles with a real codec.

    This may turn out to be an over-heavy test for every-checkin testing."""
        my_fileset = test_tools.TestFileSet()
        my_codec = vp8.Vp8Codec()
        my_optimizer = optimizer.Optimizer(
            my_codec, my_fileset, cache_class=encoder.EncodingDiskCache)
        # Establish a baseline.
        for bitrate, videofile_name in my_fileset.AllFilesAndRates():
            videofile = encoder.Videofile(videofile_name)
            my_encoding = my_optimizer.BestEncoding(bitrate, videofile)
            my_encoding.Execute().Store()
        # Try to improve it.
        encoding_count = 0
        while encoding_count < 10:
            (bitrate,
             videofile_name) = random.choice(my_fileset.AllFilesAndRates())
            videofile = encoder.Videofile(videofile_name)
            next_encoding = my_optimizer.BestUntriedEncoding(
                bitrate, videofile)
            if not next_encoding:
                break
            encoding_count += 1
            next_encoding.Execute().Store()
def ListOneTarget(codecs,
                  rate,
                  videofile,
                  do_score,
                  datatable,
                  score_function=None):
    """Extend a datatable with the info about one video file's scores."""
    for codec_name in codecs:
        # For testing:
        # Allow for direct context injection rather than picking by name.
        if isinstance(codec_name, basestring):
            codec = pick_codec.PickCodec(codec_name)
            my_optimizer = optimizer.Optimizer(codec,
                                               score_function=score_function)
        else:
            my_optimizer = codec_name
            codec_name = my_optimizer.context.codec.name
        bestsofar = my_optimizer.BestEncoding(rate, videofile)
        if do_score and not bestsofar.Result():
            bestsofar.Execute()
            bestsofar.Store()
        assert (bestsofar.Result())
        # Ignore results that score less than zero.
        if my_optimizer.Score(bestsofar) < 0.0:
            return
        (datatable.setdefault(codec_name,
                              {}).setdefault(videofile.basename, []).append(
                                  (bestsofar.result['bitrate'],
                                   bestsofar.result['psnr'])))
Beispiel #4
0
    def test_BestOverallConfigurationNotInWorkDirectory(self):
        other_dir = os.path.join(encoder_configuration.conf.sysdir(),
                                 'multirepo_test')
        os.mkdir(other_dir)
        encoder_configuration.conf.override_scorepath_for_test([other_dir])

        self.file_set = optimizer.FileAndRateSet(verify_files_present=False)
        self.file_set.AddFilesAndRates([self.videofile.filename], [100, 200])
        self.optimizer = optimizer.Optimizer(self.codec, self.file_set)
        # When there is nothing in the database, None should be returned.
        best_encoder = self.optimizer.BestOverallEncoder()
        self.assertIsNone(best_encoder)
        # Fill in the database with all the files and rates.
        other_context = encoder.Context(self.codec,
                                        encoder.EncodingDiskCache,
                                        scoredir='multirepo_test')
        my_encoder = self.EncoderFromParameterString('--score=7')
        other_context.cache.StoreEncoder(my_encoder)
        my_encoder.context.cache.StoreEncoder(my_encoder)
        for rate, filename in self.file_set.AllFilesAndRates():
            my_encoding = my_encoder.Encoding(rate,
                                              encoder.Videofile(filename))
            my_encoding.Execute()
            other_context.cache.StoreEncoding(my_encoding)
        # The best encoder should now be from the workdir, but the results are
        # all fetched from the searchpath.
        best_encoder = self.optimizer.BestOverallEncoder()
        self.assertTrue(best_encoder)
        self.assertEquals(my_encoder.parameters.ToString(),
                          best_encoder.parameters.ToString())
        one_encoding = best_encoder.Encoding(100, self.videofile)
        one_encoding.Recover()
        self.assertTrue(one_encoding.Result())
Beispiel #5
0
def example2():
    lattice = at.load_tracy('../atip/atip/rings/for_Tobyn.lat')
    qd2s = lattice.get_elements('qd2')
    qd5s = lattice.get_elements('qd5')
    qd3s = lattice.get_elements('qd3')
    qf1s = lattice.get_elements('qf1')
    qf6s = lattice.get_elements('qf6')
    vals = [
        qd2s[0].PolynomB[1], qd5s[0].PolynomB[1], qd3s[0].PolynomB[1],
        qf1s[0].PolynomB[1], qf6s[0].PolynomB[1]
    ]

    # The generalisation from example1 could be taken further e.g. using:
    def edit_family(ring, ffc, value):
        family, field, cell = ffc
        for elem in ring.get_elements(family):
            vars(elem)[field][cell] = value

    variables = o.Variables(
        [edit_family, edit_family, edit_family, edit_family, edit_family],
        [('qd2', 'PolynomB', 1), ('qd5', 'PolynomB', 1),
         ('qd3', 'PolynomB', 1), ('qf1', 'PolynomB', 1),
         ('qf6', 'PolynomB', 1)], vals)
    constraints = o.Constraints(
        lattice, {'eta_x': [[0, 52, 103], [0, 0.02, 0], [5, 1, 5]]})
    optimizer = o.Optimizer(constraints, variables)
    return optimizer.run(verbosity=1)
Beispiel #6
0
    def __init__(self, args):
        super(Trainer, self).__init__()
        self.args = args
        self.num_gpus = torch.cuda.device_count()
        self.distributed = self.num_gpus > 1
        if self.distributed:
            torch.cuda.set_device(args.local_rank)
            torch.distributed.init_process_group(backend="nccl",
                                                 init_method="env://")
        self.device = torch.device("cuda")

        if cfg.SEED > 0:
            random.seed(cfg.SEED)
            torch.manual_seed(cfg.SEED)
            torch.cuda.manual_seed_all(cfg.SEED)

        self.setup_logging()
        self.load_data()
        self.iteration = 0

        self.models = []
        self.optims = []
        self.names = []
        for i in range(len(cfg.MODEL.NETS)):
            in_dim = utils.get_dim(i)
            model = models.create(cfg.MODEL.NETS[i],
                                  in_dim=in_dim,
                                  out_dim=cfg.MODEL.EMBED_DIM[i]).cuda()
            optim = optimizer.Optimizer(model)
            self.models.append(model)
            self.optims.append(optim)
            self.names.append(cfg.MODEL.NAMES[i])
Beispiel #7
0
def run_optimization(indiv, filename=None, button=True):
    optimizer = OPT.Optimizer(indiv.uid, indiv.phenotype)
    if filename == None:
        filename = indiv.uid
        optimizer.optimize_size(filename, button=True)
    else:
        optimizer.optimize_size(filename, button=True)
Beispiel #8
0
    def setData(self, courses_path, rooms_path, no_conflicts_path, b2b_path):
        """Populate the optimizer"""
        self.isBuilt = False
        try:
            self.rooms = readData.importRoomInventory(rooms_path)
            no_conflicts = readData.importNoConflictGroups(no_conflicts_path)
            self.courses = readData.importCourses(courses_path, self.rooms)
            b2b_pairs = readData.importB2BPairs(b2b_path, self.courses)

            self.optimizer = opt.Optimizer(self.courses,
                                           self.rooms,
                                           config.Options(),
                                           no_conflicts,
                                           quiet=self.quiet,
                                           b2b_pairs=b2b_pairs)

        except ses.SESError as e:
            print e
            pub.sendMessage("status_bar.error", str(e))
        except Exception as e:
            print e
            pub.sendMessage("status_bar.error", str(e))

        else:
            self.resetCourses()
            pub.sendMessage("data_loaded")
 def StdOptimizer(self):
   # This function is not in setup because some tests
   # do not need it.
   if not self.optimizer:
     self.optimizer = optimizer.Optimizer(self.codec, self.file_set,
                                          cache_class=self.cache_class)
   return self.optimizer
 def test_AlternateScorer(self):
   my_optimizer = optimizer.Optimizer(self.codec, self.file_set,
                                      cache_class=self.cache_class,
                                      score_function=Returns1)
   my_optimizer.BestEncoding(100, self.videofile).Execute().Store()
   self.assertEqual(1,
       my_optimizer.Score(my_optimizer.BestEncoding(100, self.videofile)))
 def test_VerifyCorruptedFile(self):
     codec = CorruptingCodec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     self.assertFalse(encoding.VerifyEncode())
 def test_OneBlackFrame(self):
     codec = CopyingCodec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     self.assertTrue(encoding.Result())
Beispiel #13
0
 def test_OneBlackFrame(self):
   codec = mjpeg.MotionJpegCodec()
   my_optimizer = optimizer.Optimizer(codec)
   videofile = test_tools.MakeYuvFileWithOneBlankFrame(
     'one_black_frame_1024_768_30.yuv')
   # Motion JPEG generates a massive file, so give it a large target bitrate.
   encoding = my_optimizer.BestEncoding(5000, videofile)
   encoding.Execute()
   self.assertLess(50.0, my_optimizer.Score(encoding))
Beispiel #14
0
 def setUp(self):
     mod = 'y ~ x'
     self.coeff = 3
     x = [10 + np.random.rand() for _ in range(40)]
     y = [self.coeff * x for x in x]
     d = DataFrame(np.array([x, y]).T, columns=['x', 'y'])
     self.model = model.Model(mod)
     self.model.load_dataset(d)
     self.opt = optimizer.Optimizer(self.model)
 def test_TenBlackFrames(self):
     codec = openh264.OpenH264Codec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithBlankFrames(
         'ten_black_frames_1024_768_30.yuv', 10)
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     # Most codecs should be good at this.
     self.assertLess(40.0, my_optimizer.Score(encoding))
Beispiel #16
0
 def test_MoreBlackFrames(self):
     codec = hevc_jm.HevcCodec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithBlankFrames(
         'more_black_frames_1024_768_30.yuv', 8)
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     # Most codecs should be good at this.
     self.assertLess(40.0, my_optimizer.Score(encoding))
Beispiel #17
0
 def test_OneBlackFrame(self):
     codec = vp8_mpeg.Vp8CodecMpegMode()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     # Most codecs should be good at this.
     self.assertLess(50.0, my_optimizer.Score(encoding))
Beispiel #18
0
 def test_OneBlackFrame(self):
   codec = h261.H261Codec()
   my_optimizer = optimizer.Optimizer(codec)
   videofile = test_tools.MakeYuvFileWithOneBlankFrame(
     'one_black_frame_1024_768_30.yuv')
   encoding = my_optimizer.BestEncoding(1000, videofile)
   encoding.Execute()
   # H.261 does badly at generating a black frame. Bug?
   self.assertLess(48.0, my_optimizer.Score(encoding))
Beispiel #19
0
 def test_SuggestedTweakRefersToSameContext(self):
     codec = vp8_mpeg.Vp8CodecMpegMode()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     encoding = my_optimizer.BestEncoding(1000, videofile)
     # Fake result.
     encoding.result = {'psnr': 42.0, 'bitrate': 1000}
     next_encoding = codec.SuggestTweak(encoding)
     self.assertEqual(encoding.context, next_encoding.context)
Beispiel #20
0
 def test_VerifyMd5Varies(self):
     codec = CorruptingCodec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     first_md5 = encoding.Result()['yuv_md5']
     encoding.Execute()
     self.assertNotEqual(first_md5, encoding.Result()['yuv_md5'])
Beispiel #21
0
 def test_SuggestTweakDecreasesCq(self):
     codec = vp8_mpeg_1d.Vp8CodecMpeg1dMode()
     videofile = encoder.Videofile('foofile_640_480_30.yuv')
     my_optimizer = optimizer.Optimizer(codec)
     my_encoder = codec.StartEncoder(my_optimizer.context)
     encoding = encoder.Encoding(my_encoder, 500, videofile)
     encoding.result = {'bitrate': 200}
     # Since the bitrate is too high, the suggstion should be to increase it.
     new_encoding = codec.SuggestTweak(encoding)
     self.assertEqual('0',
                      new_encoding.encoder.parameters.GetValue('key-q'))
Beispiel #22
0
    def test_MultipleOptimizers(self):
        # Make sure other score directories don't interfere with this test.
        encoder_configuration.conf.override_scorepath_for_test([])

        os.mkdir(os.path.join(encoder_configuration.conf.sysdir(),
                              'first_dir'))
        os.mkdir(
            os.path.join(encoder_configuration.conf.sysdir(), 'second_dir'))
        one_optimizer = optimizer.Optimizer(self.codec, scoredir='first_dir')
        another_optimizer = optimizer.Optimizer(self.codec,
                                                scoredir='second_dir')
        self.assertNotEqual(one_optimizer.context.cache.workdir,
                            another_optimizer.context.cache.workdir)
        # Storing one encoding's score should not affect the other's.
        one_encoding = one_optimizer.BestEncoding(100, self.videofile)
        one_encoding.Execute().Store()
        another_encoding = another_optimizer.BestEncoding(100, self.videofile)
        self.assertFalse(another_encoding.Result())
        another_encoding.Recover()
        self.assertFalse(another_encoding.Result())
 def test_VerifyMatroskaFile(self):
     codec = vp8.Vp8Codec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     # Matroska files will be identical if generated within the same
     # clock second. So wait a bit.
     time.sleep(1)
     self.assertTrue(encoding.VerifyEncode())
Beispiel #24
0
    def recompile_block(self, compiled_block):
        # Recompile the block using the flow actions for optimisation.
        recompiled_blocks = []
        flow_parser = flow_actions.FlowActions().make_parser()
        opt = optimizer.Optimizer(parser=flow_parser)
        opt.push_nodes(compiled_block.nodes)
        opt.compile_to(type(compiled_block), recompiled_blocks)

        # Return the recompiled block.  Note that there can be only one block
        # in the list because recompilation cannot introduce new code blocks or
        # new data blocks.
        return recompiled_blocks[0]
 def test_AutoGenerateClipTime(self):
   my_optimizer = optimizer.Optimizer(self.codec, self.file_set,
                                      cache_class=self.cache_class,
                                      score_function=ReturnsClipTime)
   my_encoder = encoder.Encoder(my_optimizer.context,
       encoder.OptionValueSet(encoder.OptionSet(), ''))
   # Must use a tricked-out videofile to avoid disk access.
   videofile = DummyVideofile('test_640x480_20.yuv', clip_time=1)
   my_encoding = encoder.Encoding(my_encoder, 123, videofile)
   my_encoding.result = {'psnr':42, 'bitrate':123}
   # If cliptime is not present, this will raise an exception.
   my_optimizer.Score(my_encoding)
Beispiel #26
0
def example1():
    lattice = at.load_tracy('../atip/atip/rings/for_Tobyn.lat')
    for index, elem in enumerate(lattice):
        elem.Index = index
    qf1s = lattice.get_elements('qf1')
    qd2s = lattice.get_elements('qd2')
    indices = [qf1s[0].Index, qd2s[0].Index]
    vals = [qf1s[0].PolynomB[1], qd2s[0].PolynomB[1]]

    def edit_qf1s(ring, index, value):
        for elem in ring.get_elements('qf1'):
            elem.PolynomB[1] = value

    def edit_qd2s(ring, index, value):
        for elem in ring.get_elements('qd2'):
            elem.PolynomB[1] = value

    # Initial tunes are [0.44751328688229897, 0.5254100397314794]
    variables = o.Variables([edit_qf1s, edit_qd2s], indices, vals)
    constraints = o.Constraints(lattice, {
        'tune_x': [[], [0.36], [2]],
        'tune_y': [[], [0.64], [1]]
    })
    opt = o.Optimizer(constraints, variables)
    lat = opt.run(verbosity=1, gtol=None)

    # N.B. we can also be clever; beacuse index is not used by our custom
    # family editing function we can do the following:
    def edit_family_b1(ring, family, value):
        for elem in ring.get_elements(family):
            elem.PolynomB[1] = value

    variables = o.Variables([edit_family_b1, edit_family_b1], ['qf1', 'qd2'],
                            vals)
    constraints = o.Constraints(lattice, {
        'tune_x': [[], [0.36], [2]],
        'tune_y': [[], [0.64], [1]]
    })
    optimizer = o.Optimizer(constraints, variables)
    return optimizer.run(verbosity=1, gtol=None)
Beispiel #27
0
def ListOneTarget(codecs,
                  rate,
                  videofile,
                  do_score,
                  datatable,
                  score_function=None,
                  full_results=False):
    """Extend a datatable with the info about one video file's scores."""
    for codec_name in codecs:
        # For testing:
        # Allow for direct context injection rather than picking by name.
        if isinstance(codec_name, basestring):
            codec = pick_codec.PickCodec(codec_name)
            my_optimizer = optimizer.Optimizer(codec,
                                               score_function=score_function)
        else:
            my_optimizer = codec_name
            codec_name = my_optimizer.context.codec.name
        bestsofar = my_optimizer.BestEncoding(rate, videofile)
        if do_score and not bestsofar.Result():
            bestsofar.Execute()
            bestsofar.Store()
        assert (bestsofar.Result())
        # Ignore results that score less than zero.
        if my_optimizer.Score(bestsofar) < 0.0:
            return
        if full_results:
            # Datatable is a dictionary of codec name -> result sets.
            # Each result set is an array containing result info.
            # Each result info is a dictionary containing the
            # ID of the configuration used, the
            # target bitrate, the command line, the score and the result.
            (datatable.setdefault(codec_name, {}).setdefault(
                videofile.basename, []).append({
                    'config_id':
                    bestsofar.encoder.Hashname(),
                    'target_bitrate':
                    rate,
                    'encode_command':
                    bestsofar.EncodeCommandLine(),
                    'score':
                    my_optimizer.Score(bestsofar),
                    'result':
                    bestsofar.ResultWithoutFrameData()
                }))
        else:
            # Datatable is a dictionary of codec name -> result sets.
            # Each result set is an array containing result info.
            # Each result info contains the achieved bitrate and the PSNR.
            (datatable.setdefault(codec_name, {}).setdefault(
                videofile.basename, []).append(
                    (bestsofar.result['bitrate'], bestsofar.result['psnr'])))
 def test_BitrateSensitivity(self):
     # Verify that bitrate varies at all when target bitrate
     # is changed. Hitting the bitrate is not tested.
     codec = openh264.OpenH264Codec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithNoisyFrames(
         'many_noisy_frames_1024_768_30.yuv', 10)
     encoding1 = my_optimizer.BestEncoding(1000, videofile)
     encoding1.Execute()
     encoding2 = my_optimizer.BestEncoding(10, videofile)
     encoding2.Execute()
     self.assertNotEquals(encoding1.result['bitrate'],
                          encoding2.result['bitrate'])
Beispiel #29
0
 def test_ParametersSet(self):
     codec = mjpeg.MotionJpegCodec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     my_encoder = encoder.Encoder(
         my_optimizer.context,
         encoder.OptionValueSet(codec.option_set,
                                '-qmin 1 -qmax 1',
                                formatter=codec.option_formatter))
     encoding = my_encoder.Encoding(5000, videofile)
     encoding.Execute()
     self.assertLess(50.0, my_optimizer.Score(encoding))
 def test_FfmpegFrameInfo(self):
     codec = vp8.Vp8Codec()
     my_optimizer = optimizer.Optimizer(codec)
     videofile = test_tools.MakeYuvFileWithOneBlankFrame(
         'one_black_frame_1024_768_30.yuv')
     encoding = my_optimizer.BestEncoding(1000, videofile)
     encoding.Execute()
     # This line comes from file_codec.Execute()
     encodedfile = '%s/%s.%s' % (encoding.Workdir(), videofile.basename,
                                 codec.extension)
     frameinfo = file_codec.FfmpegFrameInfo(encodedfile)
     self.assertEquals(len(frameinfo), 1)
     self.assertGreater(
         os.path.getsize(encodedfile) * 8, frameinfo[0]['size'])