コード例 #1
0
    print('========== Part 2.1: Sigmoid Gradient ==========')
    g = nn.sigmoid_gradient(np.array([-1.0, -0.5, 0, 0.5, 1.0]))
    e_g = [0.19661193, 0.23500371, 0.250000, 0.23500371, 0.19661193]
    print('---------------------')
    print('   Actual |  Expected')
    print('---------------------')
    for i, j in zip(g, e_g):
        print('{0: .6f} | {1: .6f}'.format(i, j))
    diff = np.linalg.norm(e_g - g) / np.linalg.norm(e_g + g)
    print('Relative difference: {0}'.format(diff))

    print('========== Part 2.4: Gradient Checking ==========')
    sample_dims = [3, 5, 3]
    sample_m = 5
    X_s = nn.initialize_weights(sample_dims[0] - 1, sample_m, None, debug=True)
    y_s = 1 + (np.arange(1, sample_m + 1) % sample_dims[-1])
    Theta = [
        nn.initialize_weights(sample_dims[i],
                              sample_dims[i + 1],
                              None,
                              debug=True) for i in range(len(sample_dims) - 1)
    ]
    theta = np.block([t.reshape(t.size, order='F') for t in Theta])
    sample_nn = NeuralNetwork(X_s, y_s, Theta, sample_dims)

    grads = sample_nn.cost_grad(theta)
    n_grads = sample_nn.cost_grad_numerical(theta)
    print('----------------------')
    print('Analytical | Numerical')
    print('----------------------')