ValueError: in case of invalid argument for `weights`,
or invalid input shape.
if weights not in {"imagenet", None}:
raise ValueError("The `weights` argument should be either "
"`None` (random initialization) or `imagenet` "
"(pre-training on ImageNet).")
After Change
ValueError: in case of invalid argument for `weights`,
or invalid input shape.
if not (weights in {"imagenet", None} or os.path.exists(weights)):
raise ValueError("The `weights` argument should be either "
"`None` (random initialization), `imagenet` "
"(pre-training on ImageNet), "
"or the path to the weights file to be loaded.")
if weights == "imagenet" and include_top and classes != 1000:
raise ValueError("If using `weights` as imagenet with `include_top`"
" as true, `classes` should be 1000")
// Determine proper input shape
input_shape = _obtain_input_shape(input_shape,
default_size=224,
min_size=48,
data_format=K.image_data_format(),
require_flatten=include_top,
weights=weights)
if input_tensor is None:
img_input = Input(shape=input_shape)
else:
if not K.is_keras_tensor(input_tensor):
img_input = Input(tensor=input_tensor, shape=input_shape)
else:
img_input = input_tensor
// Block 1
x = Conv2D(64, (3, 3), activation="relu", padding="same", name="block1_conv1")(img_input)
x = Conv2D(64, (3, 3), activation="relu", padding="same", name="block1_conv2")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block1_pool")(x)
// Block 2
x = Conv2D(128, (3, 3), activation="relu", padding="same", name="block2_conv1")(x)
x = Conv2D(128, (3, 3), activation="relu", padding="same", name="block2_conv2")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block2_pool")(x)
// Block 3
x = Conv2D(256, (3, 3), activation="relu", padding="same", name="block3_conv1")(x)
x = Conv2D(256, (3, 3), activation="relu", padding="same", name="block3_conv2")(x)
x = Conv2D(256, (3, 3), activation="relu", padding="same", name="block3_conv3")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block3_pool")(x)
// Block 4
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block4_conv1")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block4_conv2")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block4_conv3")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block4_pool")(x)
// Block 5
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block5_conv1")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block5_conv2")(x)
x = Conv2D(512, (3, 3), activation="relu", padding="same", name="block5_conv3")(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name="block5_pool")(x)
if include_top:
// Classification block
x = Flatten(name="flatten")(x)
x = Dense(4096, activation="relu", name="fc1")(x)
x = Dense(4096, activation="relu", name="fc2")(x)
x = Dense(classes, activation="softmax", name="predictions")(x)
else:
if pooling == "avg":
x = GlobalAveragePooling2D()(x)
elif pooling == "max":
x = GlobalMaxPooling2D()(x)
// Ensure that the model takes into account
// any potential predecessors of `input_tensor`.
if input_tensor is not None:
inputs = get_source_inputs(input_tensor)
else:
inputs = img_input
// Create model.
model = Model(inputs, x, name="vgg16")
// load weights
if weights == "imagenet":
if include_top:
weights_path = get_file("vgg16_weights_tf_dim_ordering_tf_kernels.h5",
WEIGHTS_PATH,
cache_subdir="models",
file_hash="64373286793e3c8b2b4e3219cbf3544b")
else:
weights_path = get_file("vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5",
WEIGHTS_PATH_NO_TOP,
cache_subdir="models",
file_hash="6d6bbae143d832006294945121d1f1fc")
model.load_weights(weights_path)
if K.backend() == "theano":
layer_utils.convert_all_kernels_in_model(model)
if K.image_data_format() == "channels_first":
if include_top:
maxpool = model.get_layer(name="block5_pool")
shape = maxpool.output_shape[1:]
dense = model.get_layer(name="fc1")
layer_utils.convert_dense_weights_data_format(dense, shape, "channels_first")
if K.backend() == "tensorflow":
warnings.warn("You are using the TensorFlow backend, yet you "
"are using the Theano "
"image data format convention "
"(`image_data_format="channels_first"`). "
"For best performance, set "
"`image_data_format="channels_last"` in "
"your Keras config "
"at ~/.keras/keras.json.")
elif weights is not None:
model.load_weights(weights)
return model