-
Notifications
You must be signed in to change notification settings - Fork 0
/
preprocessing
59 lines (43 loc) · 1.52 KB
/
preprocessing
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import sys
import os
from math import log
import numpy as np
import scipy as sp
from PIL import Image
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
head_dir="/My Drive/"
dir="/data/Orde1/"
path_root=head_dir + dir
from keras.preprocessing.image import ImageDataGenerator
batches = ImageDataGenerator().flow_from_directory(directory=path_root, target_size=(64,64), batch_size=10000) #target size is to resize for input image
batches.class_indices
imgs, labels = next(batches)
imgs.shape
labels.shape
# plots images with labels
def plots(ims, figsize=(20,30), rows=10, interp=False, titles=None):
if type(ims[0]) is np.ndarray:
ims = np.array(ims).astype(np.uint8)
if (ims.shape[-1] != 3):
ims = ims.transpose((0,2,3,1))
f = plt.figure(figsize=figsize)
cols = 10 # len(ims)//rows if len(ims) % 2 == 0 else len(ims)//rows + 1
for i in range(0,50):
sp = f.add_subplot(rows, cols, i+1)
sp.axis('Off')
if titles is not None:
sp.set_title(list(batches.class_indices.keys())[np.argmax(titles[i])], fontsize=16)
plt.imshow(ims[i], interpolation=None if interp else 'none')
plots(imgs, titles = labels)
classes = batches.class_indices.keys()
perc = (sum(labels)/labels.shape[0])*100
plt.xticks(rotation='vertical')
plt.bar(classes,perc)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(imgs/255.,labels, test_size=0.3)
X_train.shape
X_test.shape
y_train.shape
y_test.shape