辍学如何改变训练/测试MSE损失功能

时间:2020-10-26 07:55:23

标签: python dropout

早上好, 我正尝试使用以下代码测试我的数据。我尝试在代码中使用辍学,但不幸的是,尽管训练和测试的mse值分别为0.007和0.008,但没有辍学,我的验证损失低于培训损失。

如下图所示,具有辍学的女士比没有辍学的女士还要多。

https://ibb.co/ZKxB7fL https://ibb.co/N3vpDCZ 即使我尝试将我的数据集的50%作为验证/测试集,但还是一样 我试图资助这里提到的原因: https://www.pyimagesearch.com/2019/10/14/why-is-my-validation-loss-lower-than-my-training-loss/

原因1:在训练过程中应用正则化,但在验证/测试中不应用(正常情况下,默认情况下,在验证/测试中不使用辍学) 原因2:在每个时期内测量训练损失,而在每个时期后测量验证损失 原因3:验证集可能比训练集更容易(否则可能会泄漏)

你能告诉我我该怎么办吗?

不应该使用辍学内容或您的建议吗?

X_train=174200 samples 
X_test=85800
y_train=174200
y_test=85200
the code:
X = dataset[:,0:20].astype(float) 
y = dataset[:,20:22] 
scaler = StandardScaler() 
X = scaler.fit_transform(X) 
y = scaler.fit_transform(y) 
# split into train test sets 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33,random_state=1) print(X_train.shape, X_test.shape, y_train.shape, y_test.shape) 
# define the keras model 
model = Sequential() 
model.add(Dense(20, input_dim=20,kernel_initializer=’normal’)) 
model.add(LeakyReLU(alpha=0.1)) 
#model.add(Dropout(0.2)) 
model.add(Dense(7,kernel_initializer=’normal’)) 
model.add(LeakyReLU(alpha=0.1)) 
#model.add(Dropout(0.2)) 
model.add(Dense(2, activation=’linear’)) 
opt = SGD(lr=0.01, momentum=0.9) 
# compile the keras model 
model.compile(loss=’mean_squared_error’, optimizer=opt, metrics=[‘mse’]) 
# fit the keras model on the dataset 
history=model.fit(X, y, validation_data=(X_test, y_test),epochs=25,verbose=0) 
# evaluate the model
_, train_mse = model.evaluate(X_train, y_train, verbose=0) 
_, test_mse = model.evaluate(X_test, y_test, verbose=0) 
print(‘Train: %.3f, Test: %.3f’ % (train_mse, test_mse)) 
#plot loss during training 
pyplot.title(‘Loss / Mean Squared Error’) 
pyplot.plot(history.history[‘loss’], label=’train’)
pyplot.plot(history.history[‘val_loss’], label=’test’) 
pyplot.legend() 
pyplot.show()'''

0 个答案:

没有答案
相关问题