Skip to content
Snippets Groups Projects
Commit 4a6c4433 authored by Hashim Sharif's avatar Hashim Sharif
Browse files

Adding Explicit Zero Padding for Conv Ops - Keras/CuDNN inconsistency

parent 9574c274
No related branches found
No related tags found
No related merge requests found
import sys
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
......@@ -11,7 +12,7 @@ from keras.preprocessing.image import ImageDataGenerator
from keras.models import Model
from keras import optimizers
import keras.backend as K
#from frontend.approxhpvm_translator import translate_to_approxhpvm
from frontend.approxhpvm_translator import translate_to_approxhpvm
K.set_image_data_format('channels_first')
......@@ -22,13 +23,14 @@ test_labels = y_test
print ("X_train.shape = ", X_train.shape)
print ("X_test.shape = ", X_test.shape)
#sys.exit(0)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
mean = np.mean(X_train, axis=(0, 1, 2), keepdims=True)
std = np.std(X_train, axis=(0, 1, 2), keepdims=True)
mean = np.mean(X_train, axis=(0, 2, 3), keepdims=True)
std = np.std(X_train, axis=(0, 2, 3), keepdims=True)
X_train = (X_train - mean) / (std + 1e-9)
X_test = (X_test - mean) / (std + 1e-9)
......@@ -40,8 +42,8 @@ def get_mobilenet(alpha=1, depth_multiplier=1):
model = Sequential()
def _conv_block(filters, alpha, kernel=(3, 3), strides=(1, 1)):
channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
filters = int(filters * alpha)
channel_axis = 1
model.add(Conv2D(filters, kernel,
padding='same',
use_bias=False,
......@@ -51,23 +53,23 @@ def get_mobilenet(alpha=1, depth_multiplier=1):
model.add(Activation('relu'))
def _depthwise_conv_block(pointwise_conv_filters, alpha, depth_multiplier=1, strides=(1, 1)):
channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
pointwise_conv_filters = int(pointwise_conv_filters * alpha)
channel_axis = 1
model.add(ZeroPadding2D(padding = ((1,1), (1,1) )))
model.add(DepthwiseConv2D((3, 3),
padding='same',
depth_multiplier=depth_multiplier,
padding='valid',
#depth_multiplier=depth_multiplier,
strides=strides,
use_bias=False))
model.add(BatchNormalization(axis=channel_axis))
#model.add(ReLU())
model.add(Activation('relu'))
model.add(Conv2D(pointwise_conv_filters, (1, 1),
padding='same',
use_bias=False,
strides=(1, 1)))
model.add(BatchNormalization(axis=channel_axis))
#model.add(ReLU())
model.add(Activation('relu'))
......@@ -149,10 +151,11 @@ model.fit_generator(
steps_per_epoch=int(np.ceil(50000 / 128)),
validation_data=(X_test, y_test),
#epochs=300,
epochs=30,
epochs=50,
callbacks=callbacks
)
model.summary()
#translate_to_approxhpvm(model, "data/mobilenet_hpvm/", X_test, test_labels, 10)
translate_to_approxhpvm(model, "data/mobilenet_hpvm/", X_test, test_labels, 10)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment