54 lines
1.9 KiB
Plaintext
54 lines
1.9 KiB
Plaintext
|
#!/usr/bin/python3
|
||
|
# wut-ml.py
|
||
|
|
||
|
import os
|
||
|
import numpy as np
|
||
|
import tensorflow.python.keras
|
||
|
from tensorflow.python.keras import Sequential
|
||
|
from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense
|
||
|
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
|
||
|
from tensorflow.python.keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D
|
||
|
from tensorflow.python.keras import optimizers
|
||
|
from tensorflow.python.keras.preprocessing import image
|
||
|
from tensorflow.python.keras.models import load_model
|
||
|
from tensorflow.python.keras.preprocessing.image import load_img
|
||
|
from tensorflow.python.keras.preprocessing.image import img_to_array
|
||
|
|
||
|
datagen = ImageDataGenerator()
|
||
|
train_it = datagen.flow_from_directory('data/train/', class_mode='binary')
|
||
|
val_it = datagen.flow_from_directory('data/validation/', class_mode='binary')
|
||
|
test_it = datagen.flow_from_directory('data/test/', class_mode='binary')
|
||
|
batchX, batchy = train_it.next()
|
||
|
print('Batch shape=%s, min=%.3f, max=%.3f' % (batchX.shape, batchX.min(), batchX.max()))
|
||
|
img_width=256
|
||
|
img_height=256
|
||
|
model = Sequential()
|
||
|
model.add(Convolution2D(32, 3, 3, input_shape=(img_width, img_height,3)))
|
||
|
model.add(Activation('relu'))
|
||
|
model.add(MaxPooling2D(pool_size=(2, 2)))
|
||
|
model.add(Convolution2D(32, 3, 3))
|
||
|
model.add(Activation('relu'))
|
||
|
model.add(MaxPooling2D(pool_size=(2, 2)))
|
||
|
model.add(Convolution2D(64, 3, 3))
|
||
|
model.add(Activation('relu'))
|
||
|
model.add(MaxPooling2D(pool_size=(2, 2)))
|
||
|
model.add(Flatten())
|
||
|
model.add(Dense(64))
|
||
|
model.add(Activation('relu'))
|
||
|
model.add(Dropout(0.5))
|
||
|
model.add(Dense(1))
|
||
|
model.add(Activation('sigmoid'))
|
||
|
model.compile(loss='binary_crossentropy',
|
||
|
optimizer='rmsprop',
|
||
|
metrics=['accuracy'])
|
||
|
|
||
|
prediction = model.predict(x=test_it, batch_size=None, verbose=0, steps=None, use_multiprocessing=True)
|
||
|
print(prediction)
|
||
|
|
||
|
if prediction[0][0] == 1:
|
||
|
rating = 'good'
|
||
|
else:
|
||
|
rating = 'bad'
|
||
|
print('Observation: %s' % (rating))
|
||
|
|