每个训练keras模型后的结果都不同

时间:2018-11-13 09:01:02

标签: python machine-learning keras

我是机器学习领域的新手。我想建立一个用于面部识别的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%。 是什么导致了差异?

1 个答案:

答案 0 :(得分:3)

设置种子,在训练模型时可以解决问题。这将为您提供可重复性。

np.random.seed(10)
tf.set_random_seed(10)

还要确保训练和测试拆分也不会改变。因此,您也可以为数据拆分设置种子。

相关问题