Untitled
unknown
plain_text
3 years ago
2.6 kB
32
Indexable
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential
import numpy as np
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.layers import Conv2D, Flatten, Dense, AvgPool2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
def load_train(path):
train_datagen = ImageDataGenerator(horizontal_flip=True, vertical_flip=True, rescale = 1.0/255)
# validation_datagen = ImageDataGenerator(validation_split=0.25, rescale=1.0 / 255)
#ImageDataGenerator(horizontal_flip=True, vertical_flip=True, rescale = 1/255)
train_datagen_flow = train_datagen.flow_from_directory(path,
target_size=(150, 150),
batch_size=16,
class_mode='sparse',
seed=12345,)
# val_datagen_flow = validation_datagen.flow_from_directory(path,
# target_size=(150, 150),
# batch_size=16,
# class_mode='sparse',
# subset='validation',
# seed=12345)
DirectoryIterator = next(train_datagen_flow)
# DirectoryIterator = features, target
return DirectoryIterator
def create_model(input_shape=(150, 150, 3)):
optimizer = Adam(lr=0.01)
model = Sequential()
model.add(Conv2D(filters = 6, kernel_size = (5,5),strides=(1, 1), activation = "relu", padding='same',input_shape= input_shape))
model.add(AvgPool2D(pool_size = (2,2), strides = None, padding='valid'))
# model.add(Conv2D(filters = 16, kernel_size = (5,5), activation = "relu", padding='valid', strides=(1,1)))
# model.add(AvgPool2D(pool_size = (2,2), strides = None, padding='valid'))
model.add(Flatten())
model.add(Dense(units = 84, activation = "relu"))
model.add(Dense(units = 12, activation = "softmax"))
model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy', metrics=['acc'])
return model
def train_model(model, train_data, test_data, batch_size=None, epochs=10, steps_per_epoch=None, validation_steps=None):
if steps_per_epoch is None:
steps_per_epoch = len(train_data)
if validation_steps is None:
validation_steps = len(test_data)
model.fit(train_data,
validation_data=test_data,
batch_size=batch_size,
epochs=epochs,
steps_per_epoch=steps_per_epoch,
validation_steps=validation_steps,
verbose=2)
# if steps_per_epoch is None:
# steps_per_epoch = len(train_data)
# if validation_steps is None:
# validation_steps = len(test_data)
return model Editor is loading...