I was following steps from a Nich Renotte youtube where he was classifying happy/sad face pictures. I tried modifying the model to recognize pictures from 10 classes of litter rather than 2. What would cause my training results to be so poor? I only have 175 training images, I know its low but thought it would kinda work?
3. CREATE A DATASET
Load the image Data into a Tensorflow Pipeline tf.data.Dataset?? to display help.
data = tf.keras.utils.image_dataset_from_directory(‘Train’)
data_iterator = data.as_numpy_iterator()
batch = data_iterator.next()
4. SCALE THE DATA
Preprocess the data convert to grayscale x are the images, y are the labels
data = data.map(lambda x,y: (x/255, y))
data.as_numpy_iterator().next()
5. SPLIT THE DATA INTO TRAINING AND TESTING
len(data)
train_size = int(len(data).7)
val_size = int(len(data).2)
test_size = int(len(data)*.1)+1
train_size+val_size+test_size
train = data.take(train_size)
val = data.skip(train_size).take(val_size)
test = data.skip(train_size+val_size).take(test_size)
6. BUILD THE DEEPLEARNING NETWORK
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Flatten
model = Sequential()
model.add(Conv2D(16, (3,3), 1, activation = ‘relu’, input_shape=(256,256,3)))
model.add(MaxPooling2D())
model.add(Conv2D(32, (3,3), 1, activation = ‘relu’))
model.add(MaxPooling2D())
model.add(Conv2D(16, (3,3), 1, activation = ‘relu’))
model.add(MaxPooling2D())
model.add(Flatten())
model.add(Dense(256, activation=‘relu’))
model.add(Dense(1, activation = ‘sigmoid’))
model.compile(‘adam’, loss=tf.losses.BinaryCrossentropy(), metrics=[‘accuracy’])
model.summary()
7. TRAIN THE MODEL
logdir = ‘logs’
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)
hist = model.fit(train, epochs=10, validation_data=val, callbacks=[tensorboard_callback])
Thanks for any advice.