-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcode.py
More file actions
84 lines (61 loc) · 2.28 KB
/
code.py
File metadata and controls
84 lines (61 loc) · 2.28 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import os
import random
import numpy as np
import keras
from keras.models import Sequential
from keras.layers.core import Flatten, Dense, Dropout
from keras.layers.convolutional import Convolution2D, MaxPooling2D, ZeroPadding2D
from sklearn.preprocessing import LabelEncoder
import pandas as pd
from scipy.misc import imread
from scipy.misc import imresize
from keras.optimizers import SGD, Adam, Adamax
root_dir = os.path.abspath('.')
data_dir = ''
train = pd.read_csv(os.path.join(data_dir, 'train/train.csv'))
test = pd.read_csv(os.path.join(data_dir, 'test/test.csv'))
temp = []
for img_name in train.ID:
img_path = os.path.join(data_dir, 'train/Train', img_name)
img = imread(img_path)
img = imresize(img, (64,64))
img = img.astype('float32') # this will help us in later stage
temp.append(img)
train_x = np.stack(temp)
temp = []
for img_name in test.ID:
img_path = os.path.join(data_dir, 'test/Test', img_name)
img = imread(img_path)
img = imresize(img, (64,64))
img = img.astype('float32') # this will help us in later stage
temp.append(img)
test_x = np.stack(temp)
train_x = train_x / 255.
test_x = test_x / 255.
train.Class.value_counts(normalize=True)
lb = LabelEncoder()
train_y = lb.fit_transform(train.Class)
train_y = keras.utils.np_utils.to_categorical(train_y)
epochs = 15
batch_size = 128
model = Sequential()
model.add(Convolution2D(32, (3, 3), padding='valid',activation='relu', input_shape=(64,64,3)))
model.add(Convolution2D(16, (3, 3), padding='valid',activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Convolution2D(8, (3, 3), padding='valid',activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(3, activation='softmax'))
model.summary()
model.load_weights('weights.h5')
model.compile(optimizer=Adam(lr=0.005, beta_1=0.9, beta_2=0.999, epsilon=None, decay=1e-9, amsgrad=False), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(train_x, train_y, batch_size=batch_size,epochs=epochs,verbose=1)
model.save_weights('weights.h5')
pred = model.predict_classes(test_x)
pred = lb.inverse_transform(pred)
test['Class'] = pred
test.to_csv('sub.csv', index=False)