예제 #1
0
 def __init__(self, rank,
              filters,
              kernel_size,
              strides=1,
              padding='valid',
              data_format='channels_last',
              dilation_rate=1,
              activation=None,
              use_bias=True,
              kernel_initializer=None,
              bias_initializer=init_ops.zeros_initializer(),
              kernel_regularizer=None,
              bias_regularizer=None,
              activity_regularizer=None,
              trainable=True,
              name=None,
              **kwargs):
     super(_Conv, self).__init__(trainable=trainable, name=name, **kwargs)
     self.rank = rank
     self.filters = filters
     self.kernel_size = utils.normalize_tuple(kernel_size, rank, 'kernel_size')
     self.strides = utils.normalize_tuple(strides, rank, 'strides')
     self.padding = utils.normalize_padding(padding)
     self.data_format = utils.normalize_data_format(data_format)
     self.dilation_rate = utils.normalize_tuple(dilation_rate, rank, 'dilation_rate')
     self.activation = activation
     self.use_bias = use_bias
     self.kernel_initializer = kernel_initializer
     self.bias_initializer = bias_initializer
     self.kernel_regularizer = kernel_regularizer
     self.bias_regularizer = bias_regularizer
     self.activity_regularizer = activity_regularizer
     self.input_spec = base.InputSpec(ndim=self.rank + 2)
예제 #2
0
파일: core.py 프로젝트: Spark001/Dragon-1
 def build(self, input_shape):
     input_shape = tensor_shape.TensorShape(input_shape)
     if input_shape[-1].value is None:
         raise ValueError('The last dimension of the inputs to `Dense` '
                          'should be defined. Found `None`.')
     self.input_spec = base.InputSpec(min_ndim=2,
                                      axes={-1: input_shape[-1].value})
     self.kernel = self.add_variable(
         'kernel',
         shape=[input_shape[-1].value, self.units],
         initializer=self.kernel_initializer,
         regularizer=self.kernel_regularizer,
         dtype=self.dtype,
         trainable=True)
     if self.use_bias:
         self.bias = self.add_variable('bias',
                                       shape=[
                                           self.units,
                                       ],
                                       initializer=self.bias_initializer,
                                       regularizer=self.bias_regularizer,
                                       dtype=self.dtype,
                                       trainable=True)
     else:
         self.bias = None
     self.built = True
예제 #3
0
 def __init__(self, pool_function, pool_size, strides,
              padding='valid', data_format='channels_last',
              name=None, **kwargs):
     super(_Pooling2D, self).__init__(name=name, **kwargs)
     self.pool_function = pool_function
     self.pool_size = utils.normalize_tuple(pool_size, 2, 'pool_size')
     self.strides = utils.normalize_tuple(strides, 2, 'strides')
     self.padding = utils.normalize_padding(padding)
     self.data_format = utils.normalize_data_format(data_format)
     self.input_spec = base.InputSpec(ndim=4)
예제 #4
0
    def build(self, input_shape):
        input_shape = tensor_shape.TensorShape(input_shape)
        if not input_shape.ndims:
            raise ValueError('Input has undefined rank:', input_shape)
        ndim = input_shape.ndims
        if self.axis < 0:
            axis = ndim + self.axis
        else:
            axis = self.axis
        if axis < 0 or axis >= ndim:
            raise ValueError('Value of `axis` argument ' + str(self.axis) +
                             ' is out of range for input with rank ' + str(ndim))
        if axis + 1 == ndim:
            self._data_format = 'NHWC'
        elif axis == 1:
            self._data_format = 'NCHW'
        else:
            raise ValueError(
                'Only axis 1 or last axis are currently supported dimensions for '
                    'batch norm. Got `axis` dimension: ', axis)

        param_dim = input_shape[axis]
        if not param_dim.value:
            raise ValueError('Input has undefined `axis` dimension. Input shape: ', input_shape)
        self.input_spec = base.InputSpec(ndim=ndim, axes={self.axis: param_dim.value})

        self.moving_mean = self.add_variable(
            name='moving_mean',
            shape=(param_dim.value,),
            initializer=self.moving_mean_initializer,
            trainable=False)

        self.moving_variance = self.add_variable(
            name='moving_variance',
            shape=(param_dim.value,),
            initializer=self.moving_variance_initializer,
            trainable=False)

        self.gamma = self.add_variable(
            name='gamma',
            shape=(param_dim.value,),
            initializer=self.gamma_initializer,
            regularizer=self.gamma_regularizer,
            trainable=self.scale)

        self.beta = self.add_variable(
            name='beta',
            shape=(param_dim.value,),
            initializer=self.beta_initializer,
            regularizer=self.beta_regularizer,
            trainable=self.center)

        self.built = True
예제 #5
0
    def build(self, input_shape):
        input_shape = tensor_shape.TensorShape(input_shape)

        if self.data_format == 'channels_first':
            channel_axis = 1
        else:
            channel_axis = -1

        if input_shape[channel_axis].value is None:
            raise ValueError('The channel dimension of the inputs '
                             'should be defined. Found `None`.')

        input_dim = input_shape[channel_axis].value

        if self.data_format == 'channels_first':
            # For channels first: (n_out, n_in, k_h, k_w)
            kernel_shape = (self.filters, input_dim) + self.kernel_size
        else:
            # For channels last: (k_h, k_w, n_in, n_out)
            kernel_shape = self.kernel_size + (input_dim, self.filters)

        self.kernel = self.add_variable(
            name='kernel',
            shape=kernel_shape,
            initializer=self.kernel_initializer,
            regularizer=self.kernel_regularizer,
            dtype=self.dtype,
        )

        if self.use_bias:
            self.bias = self.add_variable(
                name='bias',
                shape=(self.filters, ),
                initializer=self.bias_initializer,
                regularizer=self.bias_regularizer,
                dtype=self.dtype,
            )
        else:
            self.bias = None

        self.input_spec = base.InputSpec(ndim=self.rank + 2,
                                         axes={channel_axis: input_dim})
        self.built = True
예제 #6
0
파일: core.py 프로젝트: k9sret/Dragon
 def __init__(self, units,
              activation=None,
              use_bias=True,
              kernel_initializer=None,
              bias_initializer=init_ops.zeros_initializer(),
              kernel_regularizer=None,
              bias_regularizer=None,
              activity_regularizer=None,
              trainable=True,
              name=None,
              **kwargs):
     super(Dense, self).__init__(trainable=trainable, name=name, **kwargs)
     self.units = units
     self.activation = activation
     self.use_bias = use_bias
     self.kernel_initializer = kernel_initializer
     self.bias_initializer = bias_initializer
     self.kernel_regularizer = kernel_regularizer
     self.bias_regularizer = bias_regularizer
     self.activity_regularizer = activity_regularizer
     self.input_spec = base.InputSpec(min_ndim=2)