Слой Upsampling2D является стохастическим и не дает воспроизводимых результатов - PullRequest
0 голосов
/ 04 апреля 2019

Я немного экспериментировал со сверточными слоями в Керасе.Для этого я построил сверточные авто-кодеры.

сверточный автокодер работает нормально и как положено.однако я заметил, что он становится стохастическим после того, как я добавляю слой Upsampling2D.

Перед загрузкой кератов я установил случайное затравочное число семян и тензор потока.когда я делаю это, все мои модели становятся детерминированными, и я могу воспроизвести результаты.за исключением моделей с Upsampling2D, как я уже упоминал выше.Есть ли специальная обработка для этого слоя?

ниже мой код авто кодировщика.

input_img = Input(shape=(8,8,1,))  # adapt this if using `channels_first` image data format
x=  Conv2D(1, (3, 3), activation='tanh', padding='same')(input_img)
#x=BatchNormalization()(x)
x = MaxPooling2D((2, 2), padding='same')(x)
#x=Dropout(.1)(x)
x = Conv2D(10, (3, 3), activation='tanh', padding='same')(x)
encodeder1 = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2DTranspose(10, (3, 3), activation='tanh', padding='same')(encodeder1)
x = UpSampling2D((2, 2))(x)
#x=Dropout(.1)(x)
x = Conv2DTranspose(1, (3, 3), activation='tanh' , padding='same')(x)
#x=BatchNormalization()(x)
x = UpSampling2D((2, 2) )(x)
#x=Dropout(.1)(x)
decoded = Conv2DTranspose(1, (3, 3), activation='sigmoid', padding='same')(x)



autoencoder = Model(input_img, decoded)

и ниже - мои результаты без использования UpSampling2D,

Прогон 1:

Epoch 1/3
67343/67343 [==============================] - 5s 79us/step - loss: 0.6744
Epoch 2/3
67343/67343 [==============================] - 4s 58us/step - loss: 0.5914
Epoch 3/3
67343/67343 [==============================] - 4s 62us/step - loss: 0.5706

Прогон 2:

Epoch 1/3
67343/67343 [==============================] - 5s 79us/step - loss: 0.6744
Epoch 2/3
67343/67343 [==============================] - 4s 58us/step - loss: 0.5914
Epoch 3/3
67343/67343 [==============================] - 4s 62us/step - loss: 0.5706

и здесьмои результаты при использовании UpSampling2D:

Прогон 1:

Epoch 1/3
67343/67343 [==============================] - 6s 88us/step - loss: 0.7458
Epoch 2/3
67343/67343 [==============================] - 4s 61us/step - loss: 0.6745
Epoch 3/3
67343/67343 [==============================] - 5s 75us/step - loss: 0.6281

Прогон 2:

Epoch 1/3
67343/67343 [==============================] - 6s 93us/step - loss: 0.7344
Epoch 2/3
67343/67343 [==============================] - 5s 76us/step - loss: 0.6833
Epoch 3/3
67343/67343 [==============================] - 5s 77us/step - loss: 0.6078

Есть ли решение для этого?

спасибо

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