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')) | |
This comment has been minimized.
This comment has been minimized.
|
This comment has been minimized.
This comment has been minimized.
Hi I have downloaded alexnet_weights.h5 file and defined the architecture as mentioned above. However, i get an error as follows 'You are trying to load a weight file containing 34 layers into a model with 19 layers.' Is there any other weight file available for alexnet? |
This comment has been minimized.
This comment has been minimized.
Hi, Thank you for sharing this. Today it includes errors:
Could you please update code, so it will run with up-to-date versions of software. Best regards, |
This comment has been minimized.
This comment has been minimized.
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. |
This comment has been minimized.
This comment has been minimized.
@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! |
This comment has been minimized.
This comment has been minimized.
Is there some example codes for using this? |
This comment has been minimized.
This comment has been minimized.
Hi guys |
This comment has been minimized.
This comment has been minimized.
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)) |
This comment has been minimized.
This comment has been minimized.
why your Convolution2D have four customized parameters? currently version's keras only need 3 params..?? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
You can find 2-stream AlexNet here: http://dandxy89.github.io/ImageModels/alexnet/ |
This comment has been minimized.
why your Convolution2D have four customized parameters? currently version's keras only need 3 params..