|
from keras.models import Sequential |
|
from keras.layers.core import Flatten, Dense, Dropout |
|
from keras.layers.convolutional import Convolution2D, MaxPooling2D, ZeroPadding2D |
|
from keras.optimizers import SGD |
|
import cv2, numpy as np |
|
|
|
def VGG_19(weights_path=None): |
|
model = Sequential() |
|
model.add(ZeroPadding2D((1,1),input_shape=(3,224,224))) |
|
model.add(Convolution2D(64, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(64, 3, 3, activation='relu')) |
|
model.add(MaxPooling2D((2,2), strides=(2,2))) |
|
|
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(128, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(128, 3, 3, activation='relu')) |
|
model.add(MaxPooling2D((2,2), strides=(2,2))) |
|
|
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(256, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(256, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(256, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(256, 3, 3, activation='relu')) |
|
model.add(MaxPooling2D((2,2), strides=(2,2))) |
|
|
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(MaxPooling2D((2,2), strides=(2,2))) |
|
|
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(ZeroPadding2D((1,1))) |
|
model.add(Convolution2D(512, 3, 3, activation='relu')) |
|
model.add(MaxPooling2D((2,2), strides=(2,2))) |
|
|
|
model.add(Flatten()) |
|
model.add(Dense(4096, activation='relu')) |
|
model.add(Dropout(0.5)) |
|
model.add(Dense(4096, activation='relu')) |
|
model.add(Dropout(0.5)) |
|
model.add(Dense(1000, activation='softmax')) |
|
|
|
if weights_path: |
|
model.load_weights(weights_path) |
|
|
|
return model |
|
|
|
if __name__ == "__main__": |
|
im = cv2.resize(cv2.imread('cat.jpg'), (224, 224)).astype(np.float32) |
|
im[:,:,0] -= 103.939 |
|
im[:,:,1] -= 116.779 |
|
im[:,:,2] -= 123.68 |
|
im = im.transpose((2,0,1)) |
|
im = np.expand_dims(im, axis=0) |
|
|
|
# Test pretrained model |
|
model = VGG_19('vgg19_weights.h5') |
|
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) |
|
model.compile(optimizer=sgd, loss='categorical_crossentropy') |
|
out = model.predict(im) |
|
print np.argmax(out) |
I am getting this error, can you help me resolve the error. I haven't change the code
Using TensorFlow backend.
vgg-19_keras.py:11: UserWarning: Update your
Conv2D
call to the Keras 2 API:Conv2D(64, (3, 3), activation="relu")
model.add(Convolution2D(64, 3, 3, activation='relu'))
WARNING:tensorflow:From /opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
vgg-19_keras.py:13: UserWarning: Update your
Conv2D
call to the Keras 2 API:Conv2D(64, (3, 3), activation="relu")
model.add(Convolution2D(64, 3, 3, activation='relu'))
vgg-19_keras.py:17: UserWarning: Update your
Conv2D
call to the Keras 2 API:Conv2D(128, (3, 3), activation="relu")
model.add(Convolution2D(128, 3, 3, activation='relu'))
vgg-19_keras.py:19: UserWarning: Update your
Conv2D
call to the Keras 2 API:Conv2D(128, (3, 3), activation="relu")
model.add(Convolution2D(128, 3, 3, activation='relu'))
Traceback (most recent call last):
File "vgg-19_keras.py", line 73, in
model = VGG_19('vgg19_weights.h5')
File "vgg-19_keras.py", line 20, in VGG_19
model.add(MaxPooling2D((2,2), strides=(2,2)))
File "/opt/conda/envs/py2/lib/python2.7/site-packages/keras/engine/sequential.py", line 181, in add
output_tensor = layer(self.outputs[0])
File "/opt/conda/envs/py2/lib/python2.7/site-packages/keras/engine/base_layer.py", line 457, in call
output = self.call(inputs, **kwargs)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/keras/layers/pooling.py", line 205, in call
data_format=self.data_format)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/keras/layers/pooling.py", line 268, in _pooling_function
pool_mode='max')
File "/opt/conda/envs/py2/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 3978, in pool2d
data_format=tf_data_format)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/ops/nn_ops.py", line 2748, in max_pool
name=name)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/ops/gen_nn_ops.py", line 5137, in max_pool
data_format=data_format, name=name)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
op_def=op_def)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 3300, in create_op
op_def=op_def)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1823, in init
control_input_ops)
File "/opt/conda/envs/py2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1662, in _create_c_op
raise ValueError(str(e))
ValueError: Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_2/MaxPool' (op: 'MaxPool') with input shapes: [?,1,112,128].