#!/usr/bin/python3 # wut-ml 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/val/', 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 = 'bad' else: rating = 'good' print('Observation: %s' % (rating))