Как понять, чтобы лучше пересчитать на 1/255 дважды на Керасе для лучшего результата - PullRequest
0 голосов
/ 24 мая 2019

вот мои две настройки обучения для Mnist с ResNet34 на Keras

Единственные различия между двумя сетями касаются "масштабирования"

Итак, вот мои два вопроса:

  1. почему первая сеть имеет лучшую производительность благодаря двум процессам масштабирования?Я имею в виду «x_train / 255» и «rescale = 1./255 пользователей

2. почему я должен использовать« x_train * 255 »при начале обучения (код ниже)

Огромное спасибо!

набор данных: набор данных Mnist Среда: среда Colab: модель Keras: ResNet34

Я только показываю вам, ребята, различную часть между двумя сетями. Результат обучения, приведенный ниже:

x_train = x_train.reshape(-1, 28, 28, 1)
x_test = x_test.reshape(-1, 28, 28, 1)
x_train = x_train / 255 
x_test = x_test /255 

from keras.preprocessing.image import ImageDataGenerator
img_gen = ImageDataGenerator(
    rescale=1./255,
    horizontal_flip=False
    )

Epoch 1/5
3750/3750 [==============================] - 243s 65ms/step - loss: 0.2988 - acc: 0.9291 - val_loss: 0.0800 - val_acc: 0.9799
Epoch 2/5
3750/3750 [==============================] - 232s 62ms/step - loss: 0.1247 - acc: 0.9686 - val_loss: 0.0988 - val_acc: 0.9725
Epoch 3/5
3750/3750 [==============================] - 231s 62ms/step - loss: 0.0867 - acc: 0.9776 - val_loss: 0.0677 - val_acc: 0.9794
Epoch 4/5
3750/3750 [==============================] - 232s 62ms/step - loss: 0.0695 - acc: 0.9821 - val_loss: 0.0302 - val_acc: 0.9914
Epoch 5/5
3750/3750 [==============================] - 256s 68ms/step - loss: 0.0493 - acc: 0.9868 - val_loss: 0.0369 - val_acc: 0.9882

И это вторая сеть. Результат был

x_train = x_train.reshape(-1, 28, 28, 1)
x_test = x_test.reshape(-1, 28, 28, 1)


from keras.preprocessing.image import ImageDataGenerator
img_gen = ImageDataGenerator(
    rescale=1./255,
    horizontal_flip=False
    )
Epoch 1/5
3750/3750 [==============================] - 264s 70ms/step - loss: 0.4926 - acc: 0.8603 - val_loss: 11.0879 - val_acc: 0.3114
Epoch 2/5
3750/3750 [==============================] - 230s 61ms/step - loss: 0.1993 - acc: 0.9448 - val_loss: 12.4943 - val_acc: 0.2240
Epoch 3/5
3750/3750 [==============================] - 230s 61ms/step - loss: 0.1596 - acc: 0.9570 - val_loss: 14.5385 - val_acc: 0.0980
Epoch 4/5
3750/3750 [==============================] - 231s 62ms/step - loss: 0.1090 - acc: 0.9694 - val_loss: 14.4918 - val_acc: 0.1009
Epoch 5/5
3750/3750 [==============================] - 229s 61ms/step - loss: 0.0848 - acc: 0.9769 - val_loss: 14.5740 - val_acc: 0.0958

Мой второй вопрос: зачем мне добавлять «x_train * 255», как «* 255» работает в этом финале?часть?

History = Resnet34_model.fit_generator(img_gen.flow(x_train*255, y_train, batch_size = 16),
                                      steps_per_epoch = len(x_train)/16, validation_data = (x_test,y_test), epochs = 5 )
...