Я немного экспериментировал со сверточными слоями в Керасе.Для этого я построил сверточные авто-кодеры.
сверточный автокодер работает нормально и как положено.однако я заметил, что он становится стохастическим после того, как я добавляю слой 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
Есть ли решение для этого?
спасибо