(self, inputs)
| 285 | ) |
| 286 | |
| 287 | def forward(self, inputs): |
| 288 | self._check_input_shape(inputs) |
| 289 | |
| 290 | self.channel_axis = len(inputs.shape) - 1 if self.data_format == 'channels_last' else 1 |
| 291 | if self.axes is None: |
| 292 | self.axes = [i for i in range(len(inputs.shape)) if i != self.channel_axis] |
| 293 | |
| 294 | mean, var = tf.nn.moments(inputs, self.axes, keepdims=False) |
| 295 | if self.is_train: |
| 296 | # update moving_mean and moving_var |
| 297 | self.moving_mean = moving_averages.assign_moving_average( |
| 298 | self.moving_mean, mean, self.decay, zero_debias=False |
| 299 | ) |
| 300 | self.moving_var = moving_averages.assign_moving_average(self.moving_var, var, self.decay, zero_debias=False) |
| 301 | outputs = batch_normalization(inputs, mean, var, self.beta, self.gamma, self.epsilon, self.data_format) |
| 302 | else: |
| 303 | outputs = batch_normalization( |
| 304 | inputs, self.moving_mean, self.moving_var, self.beta, self.gamma, self.epsilon, self.data_format |
| 305 | ) |
| 306 | if self.act: |
| 307 | outputs = self.act(outputs) |
| 308 | return outputs |
| 309 | |
| 310 | |
| 311 | class BatchNorm1d(BatchNorm): |
nothing calls this directly
no test coverage detected