Нейронные сети с проверкой и без проверки дают мне две чрезвычайно разные первоначальные потери - PullRequest
1 голос
/ 18 мая 2019

В приведенном ниже коде я пытаюсь запустить простую нейронную сеть для целей регрессии. Код работает нормально, но когда я изменяю validation_split с 0 на 0,3, начальные потери при обучении сильно различаются, что не должно быть так, они должны быть похожими, особенно если shuffle = True .

model=tf.keras.Sequential()

model.add(tf.keras.layers.InputLayer(input_shape=(4,)))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Dense(units=32,activation="tanh", 
kernel_regularizer=tf.keras.regularizers.l2(0.001)))
model.add(tf.keras.layers.BatchNormalization())

model.add(tf.keras.layers.Dense(units=16,activation="tanh"))

model.add(tf.keras.layers.Dense(units=5,activation="linear"))
model.compile(optimizer="adam",loss="mean_squared_error")
model.fit(x=samples,y=target,batch_size=20,validation_split=0.3, 
epochs=100,shuffle=True, callbacks=[TrainValTensorBoard(write_graph=False)])

Поезд на 70 образцах, проверка на 30 образцах

Epoch 1/100
70/70 [==============================]loss: 696.1112 - val_loss: 7073.7749
Epoch 2/100
70/70 [==============================]loss: 689.5668 - val_loss: 7038.8966
Epoch 3/100
70/70 [==============================]loss: 681.3793 - val_loss: 7001.0728
Epoch 4/100
70/70 [==============================]loss: 675.0622 - val_loss: 6962.4543
Epoch 5/100
70/70 [==============================]loss: 669.0066 - val_loss: 6924.7336

Результаты, если validation_split = 0

Epoch 1/100
100/100 [=============]loss: 2554.8586
Epoch 2/100
100/100 [=============]loss: 2532.5045
Epoch 3/100
100/100 [=============]loss: 2516.1542
Epoch 4/100
100/100 [=============]loss: 2501.7217
...