Untitled

Anonymous
plain_text
09/03/2022 1:18 PM
3.4 KB
43
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...