def test_basic_attributes(self): """Setup network and check basic parameters like TF variable names, number of layers, size of last feature map... """ ft_dim = Shape(None, 64, 64) num_cls, num_layers = 10, 7 # Compute the image dimensions required for a 2x2 feature size. im_dim = orpac_net.waveletToImageDim(ft_dim) net = orpac_net.Orpac(self.sess, im_dim, num_layers, num_cls, None, False) self.sess.run(tf.global_variables_initializer()) assert net.session() is self.sess # The feature size must be 1/8 of the image size because the network # downsamples every second layer, and we specified 7 layers. assert num_layers == net.numLayers() == 7 assert net.outputShape().hw() == ft_dim.hw() # Ensure we can query all biases and weights. Also verify the data type # inside the network. g = tf.get_default_graph().get_tensor_by_name for i in range(num_layers): # These must exist in the graph. assert g(f'orpac/W{i}:0') is not None assert g(f'orpac/b{i}:0') is not None assert net.getBias(i).dtype == np.float32 assert net.getWeight(i).dtype == np.float32
def setup_class(cls): # Feature dimension will only be 2x2 to simplify testing and debugging. ft_dim = Shape(None, 64, 64) num_cls, num_layers = 10, 7 # Compute the image dimensions required for a 2x2 feature size. im_dim = orpac_net.waveletToImageDim(ft_dim) # Create Tensorflow session and dummy network. The network is such that # the feature size is only 2x2 because this makes testing easier. cls.sess = tf.Session() cls.net = orpac_net.Orpac( cls.sess, im_dim, num_layers, num_cls, None, train=False) assert cls.net.outputShape().hw() == ft_dim.hw()