Exemplo n.º 1
0
    def testScopeRestore(self):
        c1 = conv.Conv2D(16,
                         8,
                         4,
                         name='conv_2d_0',
                         padding=conv.VALID,
                         initializers={
                             'w':
                             initializers.restore_initializer(
                                 _checkpoint(),
                                 'w',
                                 scope='agent/conv_net_2d/conv_2d_0'),
                             'b':
                             initializers.restore_initializer(
                                 _checkpoint(),
                                 'b',
                                 scope='agent/conv_net_2d/conv_2d_0')
                         })

        inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
        outputs = c1(inputs)
        init = tf.global_variables_initializer()
        tf.get_default_graph().finalize()
        with self.test_session() as session:
            session.run(init)
            o = session.run(outputs)

        self.assertAllClose(np.linalg.norm(o),
                            _ONE_CONV_LAYER,
                            atol=_TOLERANCE)
Exemplo n.º 2
0
    def testFromDifferentScope(self):
        sub = functools.partial(re.sub, r'^[^/]+/', 'agent/')
        restore_initializers = {
            'w': initializers.restore_initializer(_checkpoint(), 'w', sub),
            'b': initializers.restore_initializer(_checkpoint(), 'b', sub)
        }

        with tf.variable_scope('some_random_scope'):
            c = convnet.ConvNet2D(output_channels=(16, 32),
                                  kernel_shapes=(8, 4),
                                  strides=(4, 2),
                                  paddings=[conv.VALID],
                                  activation=tf.nn.relu,
                                  activate_final=True,
                                  initializers=restore_initializers)

        inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
        outputs = c(inputs)
        init = tf.global_variables_initializer()
        tf.get_default_graph().finalize()
        with self.test_session() as session:
            session.run(init)
            o = session.run(outputs)

        self.assertAllClose(np.linalg.norm(o),
                            _TWO_CONV_LAYERS_RELU,
                            atol=_TOLERANCE)
Exemplo n.º 3
0
  def testFromDifferentScope(self):
    sub = functools.partial(re.sub, r'^[^/]+/', 'agent/')
    restore_initializers = {
        'w': initializers.restore_initializer(_checkpoint(), 'w', sub),
        'b': initializers.restore_initializer(_checkpoint(), 'b', sub)
    }

    with tf.variable_scope('some_random_scope'):
      c = convnet.ConvNet2D(
          output_channels=(16, 32),
          kernel_shapes=(8, 4),
          strides=(4, 2),
          paddings=[conv.VALID],
          activation=tf.nn.relu,
          activate_final=True,
          initializers=restore_initializers)

    inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
    outputs = c(inputs)
    init = tf.global_variables_initializer()
    tf.get_default_graph().finalize()
    with self.test_session() as session:
      session.run(init)
      o = session.run(outputs)

    self.assertAllClose(
        np.linalg.norm(o), _TWO_CONV_LAYERS_RELU, atol=_TOLERANCE)
Exemplo n.º 4
0
    def testMoreMultipleRestore(self):
        restore_initializers = {
            'w': initializers.restore_initializer(_checkpoint(), 'w'),
            'b': initializers.restore_initializer(_checkpoint(), 'b')
        }

        with tf.variable_scope('agent'):
            c = convnet.ConvNet2D(output_channels=(16, 32),
                                  kernel_shapes=(8, 4),
                                  strides=(4, 2),
                                  paddings=[conv.VALID],
                                  activation=tf.nn.relu,
                                  activate_final=True,
                                  initializers=restore_initializers)

        inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
        outputs = c(inputs)
        init = tf.global_variables_initializer()
        tf.get_default_graph().finalize()
        with self.test_session() as session:
            session.run(init)
            o = session.run(outputs)

        self.assertAllClose(np.linalg.norm(o),
                            _TWO_CONV_LAYERS_RELU,
                            atol=_TOLERANCE)
Exemplo n.º 5
0
  def testScopeRestore(self):
    c1 = conv.Conv2D(
        16,
        8,
        4,
        name='conv_2d_0',
        padding=conv.VALID,
        initializers={
            'w':
                initializers.restore_initializer(
                    _checkpoint(), 'w', scope='agent/conv_net_2d/conv_2d_0'),
            'b':
                initializers.restore_initializer(
                    _checkpoint(), 'b', scope='agent/conv_net_2d/conv_2d_0')
        })

    inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
    outputs = c1(inputs)
    init = tf.global_variables_initializer()
    tf.get_default_graph().finalize()
    with self.test_session() as session:
      session.run(init)
      o = session.run(outputs)

    self.assertAllClose(np.linalg.norm(o), _ONE_CONV_LAYER, atol=_TOLERANCE)
Exemplo n.º 6
0
  def testMoreMultipleRestore(self):
    restore_initializers = {
        'w': initializers.restore_initializer(_checkpoint(), 'w'),
        'b': initializers.restore_initializer(_checkpoint(), 'b')
    }

    with tf.variable_scope('agent'):
      c = convnet.ConvNet2D(
          output_channels=(16, 32),
          kernel_shapes=(8, 4),
          strides=(4, 2),
          paddings=[conv.VALID],
          activation=tf.nn.relu,
          activate_final=True,
          initializers=restore_initializers)

    inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
    outputs = c(inputs)
    init = tf.global_variables_initializer()
    tf.get_default_graph().finalize()
    with self.test_session() as session:
      session.run(init)
      o = session.run(outputs)

    self.assertAllClose(
        np.linalg.norm(o), _TWO_CONV_LAYERS_RELU, atol=_TOLERANCE)
Exemplo n.º 7
0
    def testTopLevelVariable(self):
        save_path = os.path.join(self.get_temp_dir(), 'toplevel_variable')

        g1 = tf.Graph()
        g2 = tf.Graph()
        with g1.as_default():
            var1 = tf.get_variable('var1',
                                   shape=[],
                                   initializer=tf.constant_initializer(42))
        with g2.as_default():
            var2 = tf.get_variable(
                'var2',
                shape=[],
                initializer=initializers.restore_initializer(
                    save_path, 'var1'))

        with self.test_session(graph=g1) as session:
            tf.global_variables_initializer().run()
            save = tf.train.Saver([var1])
            save.save(session, save_path)

        with self.test_session(graph=g2) as session:
            tf.global_variables_initializer().run()
            v2 = session.run(var2)

        self.assertAllEqual(v2, 42)
Exemplo n.º 8
0
  def testPartitionedVariable(self):
    save_path = os.path.join(self.get_temp_dir(), 'partitioned_variable')
    var_name = 'my_partitioned_var'

    g1 = tf.Graph()
    with g1.as_default():

      def initializer1(shape, dtype, partition_info):
        _ = partition_info  # Not used for creation.
        return tf.constant(True, dtype, shape)

      partitioned_var1 = tf.create_partitioned_variables(
          [1 << 3, 10], [4, 1], initializer1, dtype=tf.bool, name=var_name)

      with self.test_session(graph=g1) as session:
        with tf.device('/cpu:0'):
          tf.global_variables_initializer().run()
          pv1 = session.run(partitioned_var1)
          save = tf.train.Saver(partitioned_var1)
          save.save(session, save_path)

    g2 = tf.Graph()
    with g2.as_default():
      initializer2 = initializers.restore_initializer(save_path, var_name, '')
      partitioned_var2 = tf.create_partitioned_variables(
          [1 << 3, 10], [4, 1], initializer2, dtype=tf.bool, name=var_name)
      with self.test_session(graph=g2) as session:
        tf.global_variables_initializer().run()
        pv2 = session.run(partitioned_var2)

    self.assertAllEqual(pv1, pv2)
  def testPartitionedVariable(self):
    save_path = os.path.join(self.get_temp_dir(), 'partitioned_variable')
    var_name = 'my_partitioned_var'

    g1 = tf.Graph()
    with g1.as_default():

      def initializer1(shape, dtype, partition_info):
        _ = partition_info  # Not used for creation.
        return tf.constant(True, dtype, shape)

      partitioned_var1 = tf.create_partitioned_variables(
          [1 << 3, 10], [4, 1], initializer1, dtype=tf.bool, name=var_name)

      with self.test_session(graph=g1) as session:
        with tf.device('/cpu:0'):
          tf.global_variables_initializer().run()
          pv1 = session.run(partitioned_var1)
          save = tf.train.Saver(partitioned_var1)
          save.save(session, save_path)

    g2 = tf.Graph()
    with g2.as_default():
      initializer2 = initializers.restore_initializer(save_path, var_name, '')
      partitioned_var2 = tf.create_partitioned_variables(
          [1 << 3, 10], [4, 1], initializer2, dtype=tf.bool, name=var_name)
      with self.test_session(graph=g2) as session:
        tf.global_variables_initializer().run()
        pv2 = session.run(partitioned_var2)

    self.assertAllEqual(pv1, pv2)
Exemplo n.º 10
0
    def testMultipleRestore(self):
        g = tf.Graph()

        restore_initializers = {
            'w': initializers.restore_initializer(_checkpoint(), 'w'),
            'b': initializers.restore_initializer(_checkpoint(), 'b')
        }

        with g.as_default():
            with tf.variable_scope('agent/conv_net_2d'):
                c1 = conv.Conv2D(16,
                                 8,
                                 4,
                                 name='conv_2d_0',
                                 padding=conv.VALID,
                                 initializers=restore_initializers)
                c2 = conv.Conv2D(32,
                                 4,
                                 2,
                                 name='conv_2d_1',
                                 padding=conv.VALID,
                                 initializers=restore_initializers)

            inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
            intermediate_1 = c1(inputs)
            intermediate_2 = c2(tf.nn.relu(intermediate_1))
            outputs = tf.nn.relu(intermediate_2)
            init = tf.global_variables_initializer()

            tf.get_default_graph().finalize()
            with self.test_session() as session:
                session.run(init)
                i1, i2, o = session.run(
                    [intermediate_1, intermediate_2, outputs])

            self.assertAllClose(np.linalg.norm(i1),
                                _ONE_CONV_LAYER,
                                rtol=0.001,
                                atol=0.001)
            self.assertAllClose(np.linalg.norm(i2),
                                _TWO_CONV_LAYERS,
                                rtol=0.001,
                                atol=0.001)
            self.assertAllClose(np.linalg.norm(o),
                                _TWO_CONV_LAYERS_RELU,
                                rtol=0.001,
                                atol=0.001)
Exemplo n.º 11
0
 def testSimpleRestore(self):
   with tf.variable_scope('agent/conv_net_2d/conv_2d_0'):
     bias = tf.get_variable(
         'b',
         shape=[16],
         initializer=initializers.restore_initializer(_checkpoint(), 'b'))
   with self.test_session() as session:
     session.run(tf.global_variables_initializer())
     b = session.run(bias)
     self.assertAllClose(np.linalg.norm(b), 3.9685926, atol=_TOLERANCE)
 def testSimpleRestore(self):
   with tf.variable_scope('agent/conv_net_2d/conv_2d_0'):
     bias = tf.get_variable(
         'b',
         shape=[16],
         initializer=initializers.restore_initializer(_checkpoint(), 'b'))
   with self.test_session() as session:
     session.run(tf.global_variables_initializer())
     b = session.run(bias)
     self.assertAllClose(np.linalg.norm(b), 3.9685926, atol=_TOLERANCE)
Exemplo n.º 13
0
  def testMultipleRestore(self):
    g = tf.Graph()

    restore_initializers = {
        'w': initializers.restore_initializer(_checkpoint(), 'w'),
        'b': initializers.restore_initializer(_checkpoint(), 'b')
    }

    with g.as_default():
      with tf.variable_scope('agent/conv_net_2d'):
        c1 = conv.Conv2D(
            16,
            8,
            4,
            name='conv_2d_0',
            padding=conv.VALID,
            initializers=restore_initializers)
        c2 = conv.Conv2D(
            32,
            4,
            2,
            name='conv_2d_1',
            padding=conv.VALID,
            initializers=restore_initializers)

      inputs = tf.constant(1 / 255.0, shape=[1, 86, 86, 3])
      intermediate_1 = c1(inputs)
      intermediate_2 = c2(tf.nn.relu(intermediate_1))
      outputs = tf.nn.relu(intermediate_2)
      init = tf.global_variables_initializer()

      tf.get_default_graph().finalize()
      with self.test_session() as session:
        session.run(init)
        i1, i2, o = session.run([intermediate_1, intermediate_2, outputs])

      self.assertAllClose(np.linalg.norm(i1), _ONE_CONV_LAYER, atol=_TOLERANCE)
      self.assertAllClose(np.linalg.norm(i2), _TWO_CONV_LAYERS, atol=_TOLERANCE)
      self.assertAllClose(
          np.linalg.norm(o), _TWO_CONV_LAYERS_RELU, atol=_TOLERANCE)
Exemplo n.º 14
0
  def testTopLevelVariable(self):
    save_path = os.path.join(self.get_temp_dir(), 'toplevel_variable')

    g1 = tf.Graph()
    g2 = tf.Graph()
    with g1.as_default():
      var1 = tf.get_variable(
          'var1', shape=[], initializer=tf.constant_initializer(42))
    with g2.as_default():
      var2 = tf.get_variable(
          'var2',
          shape=[],
          initializer=initializers.restore_initializer(save_path, 'var1'))

    with self.test_session(graph=g1) as session:
      tf.global_variables_initializer().run()
      save = tf.train.Saver([var1])
      save.save(session, save_path)

    with self.test_session(graph=g2) as session:
      tf.global_variables_initializer().run()
      v2 = session.run(var2)

    self.assertAllEqual(v2, 42)