基于Keras mobile_net的模型

时间:2018-03-05 15:17:37

标签: deep-learning keras

我正在尝试训练一个基于MobileNet的模型来对Dog Faces进行地标检测(输出是一个张力,有x / y坐标,用于眼睛的位置和狗的鼻子)。

在我的培训中,我看到 val_loss 的以下图表:

enter image description here

问题:val_loss中的随机峰值是怎么回事?

我的模型看起来像这样:

model = applications.MobileNet(weights="imagenet",
                               include_top=False,
                               input_shape=(224, 224, 3))
for layer in model.layers:
  layer.trainable = True

x = model.output

p = 0.6

x = AveragePooling2D()(output_layer)
x = BatchNormalization(axis=1, name="net_out")(x)
x = Dropout(p/4)(x)
x = Flatten()(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(p)(x)
x = Dense(512, activation='relu')(x)
x = BatchNormalization()(x)
x = Dropout(p/2)(x)

# PREDICT_SIZE is 6 - the number of landmarks I'm extracting
x = Dense(PREDICT_SIZE, activation="linear")(x)
points = Reshape((PREDICT_SIZE,), name="f")(x)

model_final = Model(input=model.input, output=points)
model_final.compile(loss="mse",
                    optimizer=optimizers.Adam(epsilon=1e-7), 
                    metrics=["accuracy"])

更多问题:我应该在我的优化器中将epsilon设置为更大的数字吗?如果我把epsilon变大,我的模型会受到影响吗?

我应该尝试不同的损失功能吗?

模型本身有错吗?

我应该为我的模型尝试不同的顶层吗?

更新:删除" relu"激活导致val_loss中没有更多时髦的跳跃,而且还有一个损耗更低,精度更高的模型!哇噢!

删除" relu"后, val_loss 值来自顶层(没有其他变化)。

enter image description here

0 个答案:

没有答案