Beispiel #1
0
 def test_batchnormalization(self):
     K.set_image_dim_ordering("th")
     input_data = np.random.random_sample([2, 5, 32, 32])
     zlayer = ZLayer.BatchNormalization(axis=1, input_shape=(5, 32, 32))
     klayer = KLayer.BatchNormalization(axis=1, input_shape=(5, 32, 32))
     self.compare_layer(klayer, zlayer, input_data,
                        WeightsConverter.convert_batchnormalization)
     K.set_image_dim_ordering("tf")
     input_data2 = np.random.random_sample([2, 32, 32, 4])
     zlayer = ZLayer.BatchNormalization(axis=-1,
                                        dim_ordering="tf",
                                        input_shape=(32, 32, 4))
     klayer = KLayer.BatchNormalization(axis=-1, input_shape=(32, 32, 4))
     self.compare_layer(klayer, zlayer, input_data2,
                        WeightsConverter.convert_batchnormalization)
    def _to_tensor(self):
        input = self.model_inputs[0]
        rank = len(input.zvalue.shape)

        if (rank == 4):
            epsilon = float(self.onnx_attr['epsilon']
                            ) if "epsilon" in self.onnx_attr else 0.001
            momentum = float(self.onnx_attr['momentum'] if "momentum" in
                             self.onnx_attr else 0.99)
            dim_ordering = "th"
            if len(self._input_list) == 5:
                mean = self._input_list[3].zvalue
                variance = self._input_list[4].zvalue
            else:
                mean = self._input_list[1].zvalue
                variance = self._input_list[2].zvalue
            batch_norm = zlayers.BatchNormalization(epsilon=epsilon,
                                                    momentum=momentum,
                                                    dim_ordering=dim_ordering)
            norm_tensor = batch_norm(input.zvalue)
            norm_tensor.node.element().set_running_mean(mean)
            norm_tensor.node.element().set_running_std(variance)
            return norm_tensor
        else:
            raise Exception("not supported.")