Ошибка набора тестов NN намного хуже, чем у обучающего набора, несмотря на использование Dropout и регуляризации - PullRequest
0 голосов
/ 30 сентября 2019

Я настраиваю NN для постоянной проблемы с выходом. Весь мой входной набор данных ограничен (66 сэмплов, 4 входных объекта, 1 выходной). Данные ежеквартально, поэтому у меня нет доступа к другим данным. Я тренировал свой NN на 50 образцах, сохраняя баланс в качестве тестового набора. Несмотря на попытки нескольких подходов, в том числе: корректировки нет. слоев и узлов, используя различные функции активации (relu, leaky relu, PRelu), используя Dropout, регуляризацию, раннюю остановку;ошибка моего набора тестов всегда значительно выше, чем ошибка набора тестов. И ошибка обучения, и ошибка набора тестов снижаются с помощью no. эпох, хотя. Здесь что-нибудь можно сделать? Или это только из-за небольшого набора данных?

Спасибо V

, регулируя нет. слоев и узлов, используя различные функции активации (relu, leaky relu, PRelu), используя Dropout, регуляризацию, раннюю остановку

Код ниже:

Data = pd.ExcelFile('....').parse('Model Inputs')
XData1 = shuffle(FeatureScaling( Data.iloc[:,1:(len(Data.columns))]))

x_train = XData1.iloc[0:len(XData1)-15,0:(len(XData1.columns)-1)]
y_train = XData1.iloc[0:len(XData1)-15,len(XData1.columns)-1]
x_test = XData1.iloc[len(XData1)-14:len(XData1),0: 
(len(XData1.columns)-1)]
y_test = XData1.iloc[len(XData1)-14:len(XData1),len(XData1.columns)-1]

model = tf.keras.models.Sequential()

input_shape = x_train.iloc[0,:].shape
model.add(tf.keras.layers.Dense(units=30, activation = 
tf.keras.layers.LeakyReLU(alpha=0.3), 
input_shape=input_shape,kernel_initializer='he_uniform',

kernel_regularizer=tf.keras.regularizers.l1(0.01)) )
model.add(Dropout(0.2))
model.add(tf.keras.layers.Dense(units=15, activation = 
tf.keras.layers.LeakyReLU(alpha=0.3),kernel_initializer='he_uniform',
                                kernel_regularizer = 
tf.keras.regularizers.l1(0.01)))
model.add(Dropout(0.2))
model.add(tf.keras.layers.Dense(units=1, activation = 'linear'))

model.compile(optimizer='rmsprop', loss='mean_squared_error',metrics = 
['mse'])


early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', 
patience=10)

history = model.fit(x_train, y_train, validation_data=(x_test, 
y_test),epochs=1000, callbacks=[early_stop],verbose=0)
train_mse = model.evaluate(x_train, y_train, verbose=0)
test_mse = model.evaluate(x_test, y_test, verbose=0)
predictions = model.predict(x_test)

print(predictions)
print(y_test)
print(type(y_test))
print(train_mse, test_mse)
print(history)
model.summary()
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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...