Skip to content

Instantly share code, notes, and snippets.

@mcohen01
Created May 12, 2019 21:08
Show Gist options
  • Save mcohen01/f15a550e4ad396fd11e4c64f45a11205 to your computer and use it in GitHub Desktop.
Save mcohen01/f15a550e4ad396fd11e4c64f45a11205 to your computer and use it in GitHub Desktop.
import json
import numpy as np
import pandas as pd
import glob
from PIL import Image
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.preprocessing.image import ImageDataGenerator
from keras.applications import VGG19
from keras.optimizers import Adam
filelist = sorted(glob.glob('train/*.jpg'))
train_images = np.array([np.array(Image.open(fname)) for fname in filelist])
labels = pd.read_csv('train.csv')
# sanity check
list(labels.id.array) == list(map(lambda x: x.replace('train/',''), filelist))
train_labels = np.asarray(labels.has_cactus.array)
X_train, X_test, y_train, y_test = train_test_split(train_images,
train_labels,
test_size=0.33)
vgg16_net = VGG19(weights='imagenet',
include_top=False,
input_shape=(32, 32, 3))
vgg16_net.trainable = False
#vgg16_net.summary()
model = Sequential()
model.add(vgg16_net)
model.add(Flatten())
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer=Adam(lr=.0005),
metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=20, batch_size=64)
test_loss, test_acc = model.evaluate(X_test, y_test)
print('Loss: {}'.format(test_loss))
print('Accuracy: {}'.format(test_acc))
history_df = pd.DataFrame(history.history)
history_df[['loss']].plot()
_ = history_df[['acc']].plot()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment