Ejemplo n.º 1
0
import numpy as np
from scipy.io import loadmat
from neuralNetwork import NeuralNetwork

if __name__ == '__main__':
    layer_dims = [400, 25, 10]
    data = loadmat('ex4data1.mat')
    X, y = (data['X'], data['y'])
    y = np.where(y == 10, 0, y).reshape(y.size).astype(float)
    data = loadmat('ex4weights.mat')
    Theta = [data['Theta1'], data['Theta2']]
    theta = np.block([t.reshape(t.size, order='F') for t in Theta])
    nn = NeuralNetwork(X, y, Theta, layer_dims, 0)

    print('========== Part 1.3: Feedforward and Cost Function ==========')
    J = nn.cost(theta)
    print('Cost: {0:0.6f} (expected: 0.287629)'.format(J))

    print('========== Part 1.4: Regularized Cost Function ==========')
    nn.update_lambda(1)
    J = nn.cost(theta)
    print('Regularized cost: {0:0.6f} (expected: 0.383770)'.format(J))

    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))