Beispiel #1
0
def init_weight(weights, initializer):
    """Helper function for initialization of the weight tensor.

    This function accepts several types of initializer, prepares
    the appropriate ``~chainer.Initializer`` if necessary,
    and does the initialization.

    Args:
         weights (numpy.ndarray or cupy.ndarray):
             Weight tensor to be initialized.
         initializer: The value used to initialize the data.
             May be ``None`` (in which case
             :class:`~chainer.initializers.HeNormal`
             is used as an initializer), a scalar to set all values to,
             an ``numpy.ndarray`` to be assigned,
             or a callable that takes :class:`numpy.ndarray`
             or :class:`cupy.ndarray` and edits its value.

    """

    if initializer is None:
        initializer = HeNormal(1 / numpy.sqrt(2))
    elif numpy.isscalar(initializer):
        initializer = Constant(initializer)
    elif isinstance(initializer, numpy.ndarray):
        initializer = Constant(initializer)

    assert callable(initializer)
    initializer(weights)
Beispiel #2
0
def _get_initializer(initializer):
    if initializer is None:
        return HeNormal(1 / numpy.sqrt(2))
    if numpy.isscalar(initializer):
        return Constant(initializer)
    if isinstance(initializer, numpy.ndarray):
        return Constant(initializer)

    assert callable(initializer)
    return initializer
Beispiel #3
0
def _get_initializer(initializer):
    if initializer is None:
        return LeCunNormal()
    if numpy.isscalar(initializer):
        return Constant(initializer)
    if isinstance(initializer, numpy.ndarray):
        return Constant(initializer)

    if not callable(initializer):
        raise TypeError('invalid type of initializer: %s' % type(initializer))
    return initializer
Beispiel #4
0
def _get_initializer(initializer, scale=1.0):
    if initializer is None:
        return HeNormal(scale / numpy.sqrt(2))
    if numpy.isscalar(initializer):
        return Constant(initializer * scale)
    if isinstance(initializer, numpy.ndarray):
        return Constant(initializer * scale)

    assert callable(initializer)
    if scale == 1.0:
        return initializer
    return _ScaledInitializer(initializer, scale)
Beispiel #5
0
def _get_initializer(initializer):
    # type: (tp.Optional[types.InitializerSpec]) -> types.AbstractInitializer # NOQA

    if initializer is None:
        return LeCunNormal()
    if numpy.isscalar(initializer):
        return Constant(initializer)
    if isinstance(initializer, numpy.ndarray):
        return Constant(initializer)

    if not callable(initializer):
        raise TypeError('invalid type of initializer: %s' % type(initializer))
    return initializer
Beispiel #6
0
    def __init__(self,
                 sample_rate=16000,
                 window_size_sec=0.02,
                 window_stride_sec=0.01,
                 n_fft=512,
                 n_filters=64,
                 preemph=0.97,
                 dither=1.0e-05):
        super(NemoMelSpecExtractor, self).__init__()
        self.log_zero_guard_value = 2**-24
        win_length = int(window_size_sec * sample_rate)
        self.hop_length = int(window_stride_sec * sample_rate)
        self.n_filters = n_filters

        from scipy import signal as scipy_signal
        from librosa import stft as librosa_stft
        window_arr = scipy_signal.hann(win_length, sym=True)
        self.stft = lambda x: librosa_stft(x,
                                           n_fft=n_fft,
                                           hop_length=self.hop_length,
                                           win_length=win_length,
                                           window=window_arr,
                                           center=True)

        self.dither = dither
        self.preemph = preemph

        self.pad_align = 16

        from librosa.filters import mel as librosa_mel
        self.fb_arr = librosa_mel(sample_rate,
                                  n_fft,
                                  n_mels=n_filters,
                                  fmin=0,
                                  fmax=(sample_rate / 2))

        with self.init_scope():
            self.window = initializers.generate_array(initializer=Constant(
                0, dtype="float32"),
                                                      shape=window_arr.shape,
                                                      xp=self.xp,
                                                      dtype=np.float32)
            self.register_persistent("window")

            self.fb = initializers.generate_array(
                initializer=Constant(0, dtype="float32"),
                shape=np.expand_dims(self.fb_arr, axis=0).shape,
                xp=self.xp,
                dtype="float32")
            self.register_persistent("fb")
def _get_initializer(
    initializer: tp.Optional[types.InitializerSpec]
) -> types.AbstractInitializer:
    if initializer is None:
        return LeCunNormal()
    if (isinstance(initializer, chainer.get_array_types())
            or numpy.isscalar(initializer)):
        return Constant(initializer)

    if not callable(initializer):
        raise TypeError('invalid type of initializer: %s' % type(initializer))
    return initializer