-
-
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')) | |
@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/
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.