chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
Sebastian Raschka, 2015
|
||||
|
||||
Python Machine Learning - Code Examples
|
||||
|
||||
## Chapter 13 - Parallelizing Neural Network Training with Theano
|
||||
|
||||
- Building, compiling, and running expressions with Theano
|
||||
- What is Theano?
|
||||
- First steps with Theano
|
||||
- Configuring Theano
|
||||
- Working with array structures
|
||||
- Wrapping things up – a linear regression example
|
||||
- Choosing activation functions for feedforward neural networks
|
||||
- Logistic function recap
|
||||
- Estimating probabilities in multi-class classification via the softmax function
|
||||
- Broadening the output spectrum by using a hyperbolic tangent
|
||||
- Training neural networks efficiently using Keras
|
||||
- Summary
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 473 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 519 KiB |
@@ -0,0 +1,82 @@
|
||||
import os
|
||||
import struct
|
||||
import numpy as np
|
||||
import theano
|
||||
from keras.utils import np_utils
|
||||
from keras.models import Sequential
|
||||
from keras.layers.core import Dense
|
||||
from keras.optimizers import SGD
|
||||
|
||||
|
||||
def load_mnist(path, kind='train'):
|
||||
"""Load MNIST data from `path`"""
|
||||
labels_path = os.path.join(path,
|
||||
'%s-labels-idx1-ubyte'
|
||||
% kind)
|
||||
images_path = os.path.join(path,
|
||||
'%s-images-idx3-ubyte'
|
||||
% kind)
|
||||
|
||||
with open(labels_path, 'rb') as lbpath:
|
||||
magic, n = struct.unpack('>II',
|
||||
lbpath.read(8))
|
||||
labels = np.fromfile(lbpath,
|
||||
dtype=np.uint8)
|
||||
|
||||
with open(images_path, 'rb') as imgpath:
|
||||
magic, num, rows, cols = struct.unpack(">IIII",
|
||||
imgpath.read(16))
|
||||
images = np.fromfile(imgpath,
|
||||
dtype=np.uint8).reshape(len(labels), 784)
|
||||
|
||||
return images, labels
|
||||
|
||||
#### Loading the data
|
||||
|
||||
X_train, y_train = load_mnist('mnist', kind='train')
|
||||
X_test, y_test = load_mnist('mnist', kind='t10k')
|
||||
|
||||
#### Preparing the data
|
||||
|
||||
X_train = X_train.astype(theano.config.floatX)
|
||||
X_test = X_test.astype(theano.config.floatX)
|
||||
y_train_ohe = np_utils.to_categorical(y_train)
|
||||
|
||||
|
||||
#### Training
|
||||
|
||||
np.random.seed(1)
|
||||
|
||||
model = Sequential()
|
||||
model.add(Dense(input_dim=X_train.shape[1],
|
||||
output_dim=50,
|
||||
init='uniform',
|
||||
activation='tanh'))
|
||||
|
||||
model.add(Dense(input_dim=50,
|
||||
output_dim=50,
|
||||
init='uniform',
|
||||
activation='tanh'))
|
||||
|
||||
model.add(Dense(input_dim=50,
|
||||
output_dim=y_train_ohe.shape[1],
|
||||
init='uniform',
|
||||
activation='softmax'))
|
||||
|
||||
sgd = SGD(lr=0.001, decay=1e-7, momentum=.9)
|
||||
model.compile(loss='categorical_crossentropy', optimizer=sgd)
|
||||
|
||||
model.fit(X_train, y_train_ohe,
|
||||
nb_epoch=50,
|
||||
batch_size=300,
|
||||
verbose=1,
|
||||
validation_split=0.1,
|
||||
show_accuracy=True)
|
||||
|
||||
y_train_pred = model.predict_classes(X_train, verbose=0)
|
||||
train_acc = np.sum(y_train == y_train_pred, axis=0) / X_train.shape[0]
|
||||
print('Training accuracy: %.2f%%' % (train_acc * 100))
|
||||
|
||||
y_test_pred = model.predict_classes(X_test, verbose=0)
|
||||
test_acc = np.sum(y_test == y_test_pred, axis=0) / X_test.shape[0]
|
||||
print('Test accuracy: %.2f%%' % (test_acc * 100))
|
||||
Reference in New Issue
Block a user