Я настраиваю 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()