-
-
Save JBed/c2fb3ce8ed299f197eff to your computer and use it in GitHub Desktop.
from keras.models import Sequential | |
from keras.layers.core import Dense, Dropout, Activation, Flatten | |
from keras.layers.convolutional import Convolution2D, MaxPooling2D | |
from keras.layers.normalization import BatchNormalization | |
#AlexNet with batch normalization in Keras | |
#input image is 224x224 | |
model = Sequential() | |
model.add(Convolution2D(64, 3, 11, 11, border_mode='full')) | |
model.add(BatchNormalization((64,226,226))) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(poolsize=(3, 3))) | |
model.add(Convolution2D(128, 64, 7, 7, border_mode='full')) | |
model.add(BatchNormalization((128,115,115))) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(poolsize=(3, 3))) | |
model.add(Convolution2D(192, 128, 3, 3, border_mode='full')) | |
model.add(BatchNormalization((128,112,112))) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(poolsize=(3, 3))) | |
model.add(Convolution2D(256, 192, 3, 3, border_mode='full')) | |
model.add(BatchNormalization((128,108,108))) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(poolsize=(3, 3))) | |
model.add(Flatten()) | |
model.add(Dense(12*12*256, 4096, init='normal')) | |
model.add(BatchNormalization(4096)) | |
model.add(Activation('relu')) | |
model.add(Dense(4096, 4096, init='normal')) | |
model.add(BatchNormalization(4096)) | |
model.add(Activation('relu')) | |
model.add(Dense(4096, 1000, init='normal')) | |
model.add(BatchNormalization(1000)) | |
model.add(Activation('softmax')) | |
I believe alexnet has two streams, and cannot be implemented with a sequential model and it must be implemented with the functional api. I only see one stream here.
@JonathanCMitchell - Possible because there are two variants of alexnet. The original one has two streams, but the caffenet version is a single stream. I think this is the caffenet version!
Is there some example codes for using this?
like input = mired()...
model.predict(input)...
Hi guys
I want to use alexnet for feature extraction.I was wondering if could tell me how to feed my as image into alexnet?
alexnet uses overlapping pooling, the first conv layer's pooling should use (3, 3) kernel with stride 2 according to the original paper.
model.add(MaxPooling2D(poolsize=(3, 3), strides=2))
why your Convolution2D have four customized parameters? currently version's keras only need 3 params..??
You can find 2-stream AlexNet here: http://dandxy89.github.io/ImageModels/alexnet/
Hi,
Thank you for sharing this. Today it includes errors:
input_shape
orbatch_input_shape
argument.Could you please update code, so it will run with up-to-date versions of software.
Thank you!
Best regards,
Alex