-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrossValidationTest.py
More file actions
37 lines (30 loc) · 1.3 KB
/
Copy pathcrossValidationTest.py
File metadata and controls
37 lines (30 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import numpy as np
import pandas as pd
import keras
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Flatten, Conv2D, MaxPooling2D
from keras.optimizers import Adam
from keras.callbacks import EarlyStopping
#import mnist data
from keras.datasets import mnist
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
#load mnist data
(x_train, y_train), (x_test, y_test) = mnist.load_data()
dataSize = x_train.shape[1:3]
nClasses = np.unique(y_train).shape[0]
# Reshape and normalize
x_train = x_train.reshape(-1, 28, 28, 1).astype('float32') / 255
x_test = x_test.reshape(-1, 28, 28, 1).astype('float32') / 255
# One-hot encode targets
y_train = keras.utils.to_categorical(y_train, nClasses)
y_test = keras.utils.to_categorical(y_test, nClasses)
model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=(dataSize[0], dataSize[1], 1)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(nClasses, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
kerasClassifier = KerasClassifier(build_fn=model, epochs=10, batch_size=200, verbose=1)
cross_val_score(kerasClassifier, x_train, y_train, cv=3)