Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- from tensorflow.keras import Sequential
- from tensorflow.keras.preprocessing.image import ImageDataGenerator
- from tensorflow.keras.layers import Conv2D, Flatten, Dense, AveragePooling2D
- from tensorflow.keras.optimizers import Adam
- import numpy as np
- def load_train(path):
- datagen = ImageDataGenerator(rescale=1./255, horizontal_flip=True, vertical_flip=True)
- train_datagen_flow = datagen.flow_from_directory(
- path,
- target_size=(150, 150),
- batch_size=50,
- class_mode='sparse',
- seed=12345)
- return train_datagen_flow
- def create_model(input_shape):
- optimizer = Adam()
- model = Sequential()
- model.add(Conv2D(filters=6, kernel_size=(3, 3), padding='same', activation='relu', input_shape=input_shape))
- model.add(AveragePooling2D())
- model.add(Conv2D(filters=16, kernel_size=(3, 3), activation='relu'))
- model.add(AveragePooling2D())
- model.add(Flatten())
- model.add(Dense(units=120, activation='relu'))
- model.add(Dense(units=84, activation='relu'))
- model.add(Dense(units=12, activation = 'softmax'))
- model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['acc'])
- return model
- def train_model(model, train_data, test_data, batch_size=None, epochs=5,
- steps_per_epoch=None, validation_steps=None):
- model.fit(train_data,
- batch_size=batch_size,
- epochs=epochs,
- steps_per_epoch=steps_per_epoch,
- validation_steps=validation_steps,
- validation_data=test_data,
- verbose=2, shuffle=True)
- return model
- def main():
- path = "/datasets/fruits_small/"
- train_flow = load_train(path)
- # features_test, target_test = load_test(path)
- model = create_model((150,150,3))
- # print(model.summary())
- model = train_model(model, train_flow, None )
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement