Построение val_loss и потерь в Keras дает неверную цифру - PullRequest
0 голосов
/ 16 апреля 2020

[! [Введите описание изображения здесь] [1]] [1] Я бегу ниже куска кода, чтобы построить кривую потерь поезда и теста в Керасе.

train_x, test_x, train_y, test_y = train_test_split(features, target_classes , test_size=0.30)

epochs = 4
batch_size = 256

for i in range(epochs):
    print("epoch Value", i)

    ix_train = np.random.choice(train_x.shape[0], size=batch_size)

    score = model.fit(
        train_x[ix_train], train_y[ix_train]
        , epochs=1
        , validation_data=(test_x, test_y)
    )

scores.append(score)

// Этот код для построения val_loss и train_loss

for i in range(0, len(scores)):
    val_loss_change.append(scores[i].history['val_loss'])
    loss_change.append(scores[i].history['loss'])

plt.plot(val_loss_change, label='val_loss')
plt.plot(loss_change, label='train_loss')
plt.legend(loc='upper right')
plt.show()
plt.savefig('LossVal_loss')

Когда график сгенерирован, значения графиков выглядят нереальными c. Пожалуйста, смотрите прикрепленную фигуру LossVal_loss. Я скопировал val_loss_change и loss_change из Python Отладочная подсказка.

loss_change =: [[4.3783984780311584], [3.9744645059108734], [3.921104222536087], [3.5381810665130615], [3.379685567] 2, 3.37930671, 136768371, 136837681, 136837681, 136837681372, 1368253737137237373737373737373737379379379379379379379379379375375375375375375375375375375375375372372372372372372372372372372379379379379379379379379379379379372372372372 Мы скопировали val_loss_change и loss_change из *1016* Debug , [+2,80639386177063], [2,5576193928718567], [2,1081390380859375]]

val_loss_change =: [[4,315125052134196], [4,105147279103597], [4,0108651924133305], [3,9794070688883463], [4,025013980865478], [4,060481491088868], [4,1542660458882645] , [4.011785678863525], [3.989632488886515], [4.240501753489176]]

Когда я просто копирую val_loss_change и loss_change из приглашения pyhton Debug и создаю новый файл python и пытаюсь запустить его, как показано ниже. Составленная фигура верна. Пожалуйста, смотрите прикрепленную фигуру LossVal_loss1


val_loss_change = [[4.315125052134196], [4.105147279103597], [4.0108651924133305], [3.9794070688883463], [4.025013980865478], [4.060481491088868], [4.1542660458882645], [4.011785678863525], [3.989632488886515], [4.240501753489176]]
loss_change = [[4.3783984780311584], [3.9744645059108734], [3.921104222536087], [3.5381810665130615], [3.3796855211257935], [3.161308079957962], [2.9224385917186737], [2.80639386177063], [2.5576193928718567], [2.1081390380859375]]

plt.plot(val_loss_change, label='val_loss')
plt.plot(loss_change, label='train_loss')
plt.legend(loc='upper right')
plt.show()
plt.savefig('LossVal_loss1')





Can anyone tell what goes wrong in 1st code?
I want to run fit function multiple times and then plot a curve for loss and val_loss.




  [1 Correct Figure from 2nd code ]: https://i.stack.imgur.com/fVg4o.png
  [2 Incorrect Figure from 1st Code ]: https://i.stack.imgur.com/dcRSE.png

1 Ответ

0 голосов
/ 16 апреля 2020

Вы устанавливаете модель на 1 эпоху снова и снова. Измените эпох на общее значение эпох и удалите лишние l oop. Я нахожусь на мобильном телефоне, поэтому не могу сейчас проверить код.

Для более качественных и динамичных c графиков используйте TensorBoard

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...