Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import numpy as np
- import matplotlib.pyplot as plt
- import keras
- from IPython.display import Image
- import cv2
- import warnings
- warnings.filterwarnings("ignore")
- from keras.models import Model
- from keras.utils import plot_model,to_categorical
- from keras.layers import Conv2D,Dense,Flatten,BatchNormalization,Add,Activation,Dropout,\
- MaxPooling2D,AveragePooling2D,concatenate
- from keras.engine.input_layer import Input
- from keras.initializers import glorot_uniform
- from keras.regularizers import l2
- from keras.optimizers import Adam
- from keras.datasets import cifar10
- (x_train,y_train),(x_test,y_test) = cifar10.load_data()
- x_train = x_train[:10000]
- y_train = y_train[:10000]
- x_train = np.array([cv2.resize(img, (224,224)) for img in x_train[:,:,:,:]])
- x_test = np.array([cv2.resize(img, (224,224)) for img in x_test[:,:,:,:]])
- y_train = to_categorical(y_train)
- x_train = x_train.astype('float32')/ 255
- x_test = x_test.astype('float32')/255
- def inception_layer(inputs,filter_1,filter_2_1,filter_2_2,
- filter_3_1,filter_3_2,filter_4):
- # print(inputs.shape)
- Conv1x1 = Conv2D(filter_1,kernel_size=(1,1),strides=1,kernel_initializer = glorot_uniform(),
- activation='relu',padding='SAME')(inputs)
- Conv3x3 = Conv2D(filter_2_1,kernel_size=(1,1),strides=1,kernel_initializer = glorot_uniform(),
- activation='relu',padding='SAME')(inputs)
- # print(Conv3x3.shape)
- Conv3x3 = Conv2D(filter_2_2,kernel_size=(3,3),strides=1,kernel_initializer = glorot_uniform(),
- activation='relu',padding='SAME')(Conv3x3)
- # print(Conv3x3.shape)
- Conv5x5 = Conv2D(filter_3_1,kernel_size=(1,1),strides=1,kernel_initializer= glorot_uniform(),
- activation='relu',padding='SAME')(inputs)
- # print(Conv5x5.shape)
- Conv5x5 = Conv2D(filter_3_2,kernel_size=(5,5),strides=1,kernel_initializer=glorot_uniform(),
- activation='relu',padding='SAME')(Conv5x5)
- # print(Conv5x5.shape)
- pool_proj = MaxPooling2D((3,3),strides=1,padding='SAME')(inputs)
- pool_proj = Conv2D(filter_4,kernel_size=(1,1),strides=1,kernel_initializer = glorot_uniform(),
- activation='relu',padding='SAME')(pool_proj)
- output = concatenate([Conv1x1,Conv3x3,Conv5x5,pool_proj],axis=3)
- return output
- input_shape = x_train.shape[1:]
- input_layer = Input(shape=input_shape)
- x = Conv2D(64,kernel_size=(7,7),strides=(2,2),padding='SAME',activation='relu',
- kernel_initializer = glorot_uniform())(input_layer)
- x = MaxPooling2D((3,3),2,padding='SAME')(x)
- x = Conv2D(64,kernel_size=(3,3),strides=1,padding='SAME',activation='relu',
- kernel_initializer = glorot_uniform())(x)
- x = Conv2D(192,kernel_size=(3,3),strides=1,padding='SAME',activation='relu',
- kernel_initializer = glorot_uniform())(x)
- x = MaxPooling2D((3,3),2,padding='SAME')(x)
- inception3a = inception_layer(x,64,96,128,16,32,32)
- inception3b = inception_layer(inception3a,128,128,192,32,96,64)
- x = MaxPooling2D((3,3),2,padding='SAME')(inception3b)
- inception4a = inception_layer(x,192,96,208,16,48,64)
- inception4b = inception_layer(inception4a,160,112,224,24,64,64)
- inception4c = inception_layer(inception4b,128,128,256,24,64,64)
- inception4d = inception_layer(inception4c,112,114,288,32,64,64)
- inception4e = inception_layer(inception4d,256,160,320,32,128,128)
- x = MaxPooling2D((3,3),3,padding='SAME')(inception4e)
- inception5a = inception_layer(x,256,160,320,32,128,128)
- inception5b = inception_layer(inception5a,384,192,384,48,128,128)
- x = AveragePooling2D((4,4),1)(inception5b)
- x = Dropout(0.40)(x)
- x = Flatten()(x)
- x = Dense(10)(x)
- x = Activation('softmax')(x)
- model = Model(input_layer,x)
- model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
- history = model.fit(x_train,y_train,validation_split=0.1,epochs=5,batch_size=128)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement