示例#1
0
文件: test_rnn.py 项目: Wiebke/breze
def test_fdrnn_initialize_stds():
    m = SupervisedFastDropoutRnn(
        50, [50], 50,
        ['identity'], 'identity', 'squared')

    inits = dict(par_std=1, par_std_affine=2, par_std_rec=3, par_std_in=4,
                 sparsify_affine=None, sparsify_rec=None, spectral_radius=None)

    p = m.parameters
    p.data[:] = float('nan')

    m.initialize(**inits)

    assert np.isfinite(p.data).all()

    tolerance = 1e-1

    def works(key, tensor):
        std = p[tensor].std()
        target = inits[key]
        success = target - tolerance < std < target + tolerance
        print '%g %g' % (std, target)
        assert success, '%s did not work: %g instead of %g' % (
            key, std, target)

    works('par_std_in', m.rnn.affine_layers[0].weights)
    for l in m.rnn.affine_layers[1:]:
        works('par_std_affine', l.weights)

    for l in m.rnn.recurrent_layers:
        works('par_std_rec', l.weights)
示例#2
0
def test_fdrnn_initialize_stds():
    m = SupervisedFastDropoutRnn(50, [50], 50, ['identity'], 'identity',
                                 'squared')

    inits = dict(par_std=1,
                 par_std_affine=2,
                 par_std_rec=3,
                 par_std_in=4,
                 sparsify_affine=None,
                 sparsify_rec=None,
                 spectral_radius=None)

    p = m.parameters
    p.data[:] = float('nan')

    m.initialize(**inits)

    assert np.isfinite(p.data).all()

    tolerance = 1e-1

    def works(key, tensor):
        std = p[tensor].std()
        target = inits[key]
        success = target - tolerance < std < target + tolerance
        print '%g %g' % (std, target)
        assert success, '%s did not work: %g instead of %g' % (key, std,
                                                               target)

    works('par_std_in', m.rnn.affine_layers[0].weights)
    for l in m.rnn.affine_layers[1:]:
        works('par_std_affine', l.weights)

    for l in m.rnn.recurrent_layers:
        works('par_std_rec', l.weights)
示例#3
0
def test_fdrnn_initialize_spectral_radius():
    m = SupervisedFastDropoutRnn(50, [50], 50, ['identity'], 'identity',
                                 'squared')

    inits = dict(par_std=1, spectral_radius=2.5)

    p = m.parameters
    p.data[:] = float('nan')
    m.initialize(**inits)
    assert np.isfinite(p.data).all()

    rec_layers = [i for i in m.rnn.layers if isinstance(i, FDRecurrent)]

    tol = .3

    for l in rec_layers:
        val, vec = np.linalg.eig(p[l.weights])
        sr = abs(sorted(val)[0])
        print abs(sr)
        isr = inits['spectral_radius']
        cond = isr - tol < sr < isr + tol
        assert cond, 'spectral radius in it did not work for %s: %g' % (l, sr)
示例#4
0
def test_fdrnn_initialize_sparsify():
    m = SupervisedFastDropoutRnn(50, [50], 50, ['identity'], 'identity',
                                 'squared')

    inits = dict(par_std=1, sparsify_affine=20, sparsify_rec=35)

    p = m.parameters
    p.data[:] = float('nan')
    m.initialize(**inits)
    assert np.isfinite(p.data).all()

    aff_layers = [i for i in m.rnn.layers if isinstance(i, AffineNonlinear)]
    rec_layers = [i for i in m.rnn.layers if isinstance(i, FDRecurrent)]

    for l in aff_layers:
        w = p[l.weights]
        cond = ((w != 0).sum(axis=0) == inits['sparsify_affine']).all()
        assert cond, 'sparsify affine did not work for %s' % l

    for l in rec_layers:
        w = p[l.weights]
        cond = ((w != 0).sum(axis=0) == inits['sparsify_rec']).all()
        assert cond, 'sparsify recurrent did not work for %s' % l
示例#5
0
文件: test_rnn.py 项目: Wiebke/breze
def test_fdrnn_initialize_spectral_radius():
    m = SupervisedFastDropoutRnn(
        50, [50], 50,
        ['identity'], 'identity', 'squared')

    inits = dict(par_std=1, spectral_radius=2.5)

    p = m.parameters
    p.data[:] = float('nan')
    m.initialize(**inits)
    assert np.isfinite(p.data).all()

    rec_layers = [i for i in m.rnn.layers if isinstance(i, FDRecurrent)]

    tol = .3

    for l in rec_layers:
        val, vec = np.linalg.eig(p[l.weights])
        sr = abs(sorted(val)[0])
        print abs(sr)
        isr = inits['spectral_radius']
        cond = isr - tol < sr < isr + tol
        assert cond, 'spectral radius in it did not work for %s: %g' % (
            l, sr)
示例#6
0
文件: test_rnn.py 项目: Wiebke/breze
def test_fdrnn_initialize_sparsify():
    m = SupervisedFastDropoutRnn(
        50, [50], 50,
        ['identity'], 'identity', 'squared')

    inits = dict(par_std=1, sparsify_affine=20, sparsify_rec=35)

    p = m.parameters
    p.data[:] = float('nan')
    m.initialize(**inits)
    assert np.isfinite(p.data).all()

    aff_layers = [i for i in m.rnn.layers if isinstance(i, AffineNonlinear)]
    rec_layers = [i for i in m.rnn.layers if isinstance(i, FDRecurrent)]

    for l in aff_layers:
        w = p[l.weights]
        cond = ((w != 0).sum(axis=0) == inits['sparsify_affine']).all()
        assert cond, 'sparsify affine did not work for %s' % l

    for l in rec_layers:
        w = p[l.weights]
        cond = ((w != 0).sum(axis=0) == inits['sparsify_rec']).all()
        assert cond, 'sparsify recurrent did not work for %s' % l