示例#1
0
import matplotlib.pyplot as plt
from deepL_module.datasets.mnist import load_mnist
from deepL_module.nn.multi_layer_nn import Neural_net
from deepL_module.nn.optimizers import *
from deepL_module.nn.cost_functions import *
from deepL_module.base import *
'''#0 loading data '''
(X_train, train_t), (X_test, test_t) = load_mnist(normalize=True)

train_size = X_train.shape[0]
batch_size = 256
max_iter = 1e+4
'''#1 config for NN '''
model = Neural_net(784, [100, 100, 100, 100], 10, alpha=0.01)
model.add(['tanh', 'softsign', 'softplus', 'swish'])
model.set_loss('categorical_crossentropy')
train_loss = []
train_acc = []
'''#2 optimizer '''
optim = Adam(lr=0.01)
'''#3 learning '''
for i in range(int(max_iter)):
    batch_mask = np.random.choice(train_size, batch_size)
    x_batch = X_train[batch_mask]
    t_batch = to_categorical(train_t[batch_mask], cls_num=10)

    # update weight matrix
    grads = model.gradient(x_batch, t_batch)
    optim.update(model.params, grads)

    # get loss data
def create_noise_data(sample: int = 400):
    x, labels = make_moons(sample, noise=0.2)
    x[:, 0] -= 0.5
    return x, labels.reshape(-1, 1)


# training dataset
train_x, labels = create_noise_data()

# test dataset
X, Y = np.meshgrid(np.linspace(-3, 3, 100), np.linspace(-3, 3, 100))
test_x = np.array([X.ravel(), Y.ravel()]).reshape(2, -1).T

# constructing NN
model = Neural_net(2, [10, 10, 10], 1)
model.add(['tanh', 'swish', 'relu'])
model.set_loss('binary_crossentropy')
optimizer = Adam(lr=0.1)
score_acc = []

#---learning----
for _ in range(max_iter):
    grads = model.gradient(train_x, labels)
    optimizer.update(model.params, grads)

    score = model.accuracy(train_x, labels)
    score_acc.append(np.asarray(score))

# plot the training data
plt.scatter(train_x[labels.ravel() == 0, 0],
            train_x[labels.ravel() == 0, 1],
示例#3
0
func_name = ['square', 'sinusoidal', 'abs', 'heaviside']
train_acc = {}

# test data
x = np.arange(-1, 1, 0.01).reshape(-1, 1)

fig = plt.figure(figsize=(15, 9))

for n, func in enumerate(multi_func, 1):
    train_y = func(train_x)
    # plotting training data
    ax = fig.add_subplot(2, 2, n)
    ax.scatter(train_x, train_y, s=12, color='blue')
    # constructing NN
    model = Neural_net(n_input=1, n_hidden=[10, 10, 10], n_output=1)
    model.add(['tanh', 'tanh', 'sigmoid'])
    routine = Adam(lr=0.1, beta_1=0.9, beta_2=0.95)
    model.compile(loss='sum_squared_error', optimizer=routine)
    #-----learning------
    import time
    start = time.time()
    history = model.fit(train_x, train_y, n_iter=max_iter, history=True)
    print(time.time() - start)
    train_acc[func_name[n - 1]] = history['acc']

    # prediction data
    y = model(x)
    ax.plot(x, y, 'r-')
    plt.xticks([-1, 0, 1])
    plt.yticks([0, 0.5, 1])
    plt.ylim([-0.1, 1.1])
示例#4
0
def create_noise_data(sample: int = 400):
    x, labels = make_moons(sample, noise=0.2)
    x[:, 0] -= 0.5
    return x, labels.reshape(-1, 1)


# training dataset
train_x, labels = create_noise_data()

# test dataset
X, Y = np.meshgrid(np.linspace(-3, 3, 100), np.linspace(-3, 3, 100))
test_x = np.array([X.ravel(), Y.ravel()]).reshape(2, -1).T

# constructing NN
model = Neural_net(2, [10, 10, 10], 1)
model.add(['tanh', 'swish', 'tanh'])
routine = Adam(lr=0.1)
model.compile(loss='binary_crossentropy', optimizer=routine)

#---learning----
history = model.fit(train_x, labels, n_iter=max_iter, history=True)

# plot the training data
plt.scatter(train_x[labels.ravel() == 0, 0],
            train_x[labels.ravel() == 0, 1],
            marker=".",
            s=20,
            color='b')

plt.scatter(train_x[labels.ravel() == 1, 0],
            train_x[labels.ravel() == 1, 1],