Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cv2
- import keras
- import numpy as np
- from keras import backend as K, Sequential
- from keras.layers import Conv2D, Flatten, Dense, Dropout, Activation, GlobalAveragePooling2D
- from keras.optimizers import Adam
- from keras.preprocessing.image import ImageDataGenerator
- from matplotlib import pyplot as plt
- # %matplotlib inline
- TRAIN_DIR = './images/train'
- TEST_DIR = './images/test'
- VALID_DIR = './images/valid'
- IMAGE_CLASS = ['Anggur', 'Apel', 'ApelH', 'Jeruk', 'Kiwi', 'Lemon', 'Mangga', 'Melon', 'Naga', 'Pisang', 'Salak',
- 'Sirsak']
- TRAIN_BATCH = ImageDataGenerator().flow_from_directory(TRAIN_DIR, target_size=(224, 224), classes=IMAGE_CLASS,
- batch_size=10)
- TEST_BATCH = ImageDataGenerator().flow_from_directory(TEST_DIR, target_size=(224, 224), classes=IMAGE_CLASS,
- batch_size=10)
- VALID_BATCH = ImageDataGenerator().flow_from_directory(VALID_DIR, target_size=(224, 224), classes=IMAGE_CLASS,
- batch_size=10)
- vgg16_model = keras.applications.vgg16.VGG16()
- model = Sequential()
- for layer in vgg16_model.layers:
- model.add(layer)
- model.layers.pop()
- for layer in model.layers:
- layer.trainable = False
- model.add(Dense(12, activation='softmax'))
- # model.summary()
- model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])
- model.fit_generator(TRAIN_BATCH, steps_per_epoch=15, validation_data=VALID_BATCH, validation_steps=15, epochs=100, verbose=1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement