Skip to content

Commit 1c499e8

Browse files
committed
Part 2 added
1 parent b26f0e4 commit 1c499e8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+78
-0
lines changed

3.jpg

639 Bytes

6.jpg

530 Bytes

7.jpg

556 Bytes

9.jpg

603 Bytes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Part 2/FlaskServer/androidFlask.jpg

852 Bytes

Part 2/FlaskServer/flask_server.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import flask
2+
import werkzeug
3+
import keras.models
4+
import numpy
5+
import scipy.misc
6+
7+
app = flask.Flask(__name__)
8+
9+
@app.route('/', methods = ['GET', 'POST'])
10+
def handle_request():
11+
imagefile = flask.request.files['image']
12+
filename = werkzeug.utils.secure_filename(imagefile.filename)
13+
print("\nReceived image File name : " + imagefile.filename)
14+
imagefile.save(filename)
15+
16+
img = scipy.misc.imread(filename, mode="L")
17+
img = img.reshape(784)
18+
loaded_model = keras.models.load_model('model.h5')
19+
predicted_label = loaded_model.predict_classes(numpy.array([img]))[0]
20+
print(predicted_label)
21+
22+
return str(predicted_label)
23+
24+
app.run(host="0.0.0.0", port=5000, debug=True)

Part 2/FlaskServer/model.h5

5.13 MB
Binary file not shown.

Part 2/MLP_MNIST_Keras.py

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import keras.datasets.mnist
2+
import keras.models
3+
import keras.layers
4+
import keras.optimizers
5+
import numpy
6+
7+
batch_size = 128
8+
num_classes = 10
9+
epochs = 20
10+
11+
# the data, split between train and test sets
12+
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
13+
print(x_train.shape) # (60000, 28, 28)
14+
print(y_train.shape) # (60000,)
15+
16+
print(x_test.shape) # (10000, 28, 28)
17+
print(y_test.shape) # (10000,)
18+
19+
x_train = x_train.reshape(60000, 784)
20+
x_test = x_test.reshape(10000, 784)
21+
x_train = x_train.astype('float32') / 255
22+
x_test = x_test.astype('float32') / 255
23+
24+
y_train = keras.utils.to_categorical(y_train, num_classes) # (60000, 10)
25+
y_test = keras.utils.to_categorical(y_test, num_classes) # (10000, 10)
26+
27+
model = keras.models.Sequential()
28+
model.add(keras.layers.Dense(512, activation='relu', input_shape=(784,)))
29+
model.add(keras.layers.Dropout(0.2))
30+
model.add(keras.layers.Dense(512, activation='relu'))
31+
model.add(keras.layers.Dropout(0.2))
32+
model.add(keras.layers.Dense(num_classes, activation='softmax'))
33+
34+
model.summary()
35+
36+
model.compile(loss='categorical_crossentropy',
37+
optimizer=keras.optimizers.RMSprop(),
38+
metrics=['accuracy'])
39+
40+
history = model.fit(x_train, y_train,
41+
batch_size=batch_size,
42+
epochs=epochs,
43+
verbose=1,
44+
validation_data=(x_test, y_test))
45+
46+
score = model.evaluate(x_test, y_test, verbose=0)
47+
print('Test loss:', score[0])
48+
print('Test accuracy:', score[1])
49+
50+
model.save("model.h5")
51+
52+
loaded_model = keras.models.load_model('model.h5')
53+
predicted_label = loaded_model.predict_classes(numpy.array([x_test[0, :]]))[0]
54+
print(predicted_label)

0 commit comments

Comments
 (0)