Ошибка: вы пытаетесь загрузить файл весов, содержащий 1 слой, в модель с 14 слоями - PullRequest
0 голосов
/ 07 апреля 2020

Поскольку из-за нехватки ресурсов, таких как GPU и Ram, мы используем Google Colab для обучения модели, но все же в ней есть некоторые ограничения, например, максимальное ограничение времени для GPU Google Colab составляет всего 12 часов. Тем не менее, мы тренировали модель в эти 12 часов, но потери, похоже, не меняются после 1-й эпохи, из-за чего мы решили использовать код Auto-Colorize и там файл обученного веса "colorize.hdf5" загружается на GitHub (код доступен по ссылке на github: https://github.com/hvvashistha/Auto-Colorize), но при загрузке этих весов мы получаем ошибку.

"Вы пытаетесь загрузить файл весов, содержащий 1 слой, в модель с 14 слоями ."

enter image description here

Мы пытались понизить версию Keras до 2.2.0, 2.1.6 и 2.1.0, но ошибка не устранилась. мы используем ту же структуру модели, которая была предоставлена ​​на GitHub, но она по-прежнему выдает эту ошибку.

Модель: Это модель архитектуры

   #Inputs
embed_input = Input(shape=(1000,))
encoder_input = Input(shape=(256, 256, 1,))

#Encoder
encoder_output = Conv2D(64, (3,3), activation='relu', padding='same', strides=2,
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_input)
encoder_output = Conv2D(128, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(128, (3,3), activation='relu', padding='same', strides=2,
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(256, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(256, (3,3), activation='relu', padding='same', strides=2,
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(512, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(512, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)
encoder_output = Conv2D(256, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(encoder_output)

#Fusion
fusion_output = RepeatVector(32 * 32)(embed_input)
fusion_output = Reshape(([32, 32, 1000]))(fusion_output)
fusion_output = concatenate([encoder_output, fusion_output], axis=3)
fusion_output = Conv2D(256, (1, 1), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(fusion_output)

#Decoder
decoder_output = Conv2D(128, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(fusion_output)
decoder_output = UpSampling2D((2, 2))(decoder_output)
decoder_output = Conv2D(64, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = UpSampling2D((2, 2))(decoder_output)
decoder_output = Conv2D(32, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = Conv2D(16, (3,3), activation='relu', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = Conv2D(2, (3, 3), activation='tanh', padding='same',
                        bias_initializer=TruncatedNormal(mean=0.0, stddev=0.05))(decoder_output)
decoder_output = UpSampling2D((2, 2))(decoder_output)

model = Model(inputs=[encoder_input, embed_input], outputs=decoder_output)
model.compile(optimizer=RMSprop(lr=1e-3), loss='mse', metrics=['accuracy'])

Test_image Функция:

Я загружаю веса таким образом.

    test_images = getImages(testing_files)
    model.load_weights('/content/drive/My Drive/weights/orignalcolorize.hdf5')

Загружаю ли я веса неверно или это какая-то другая проблема.

...