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