【发布时间】:2018-11-13 17:22:11
【问题描述】:
我是机器学习的新手。我想建立一个用于面部识别的 keras 模型。我目前正在使用该模型:
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
# initiate RMSprop optimizer
opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)
# Let's train the model using RMSprop
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'])
我用相同的数据和相同的参数训练,但是训练结果却大不相同。有100%的结果或28%的结果。 是什么造成了这种差异?
【问题讨论】:
-
每次训练迭代都会导致模型中的权重更新。权重的变化会导致模型表现不同,从而导致训练结果的差异。
-
感谢您的建议@Edwin
-
模型在训练开始时使用随机权重进行初始化,因此每次训练都会到达不同的局部最小值,产生不同的结果。这是正常现象,不是编程问题。
标签: python machine-learning keras