Сохранение весов, когда модель не последовательная - PullRequest
0 голосов
/ 26 марта 2020

Моя модель Генератор определяется как


class Generator(tf.keras.Model):
    def __init__(self, channels=3, method='transpose'):
        super(Generator, self).__init__()
        self.channels = channels
        self.method = method

        self.dense = tf.keras.layers.Dense(512 * 8 * 8, use_bias=False)

        self.reshape = tf.keras.layers.Reshape((8, 8, 512))


        self.convT_1 = tf.keras.layers.Conv2DTranspose(256, (3, 3), padding='same', use_bias=False)
        self.convT_2 = tf.keras.layers.Conv2DTranspose(256, (3, 3), strides=(2, 2), padding='same', use_bias=False)
        self.convT_3 = tf.keras.layers.Conv2DTranspose(128, (3, 3), strides=(2, 2), padding='same', use_bias=False)
        self.convT_4 = tf.keras.layers.Conv2DTranspose(128,(3, 3), strides=(2, 2), padding='same', use_bias=False)
        self.convT_5 = tf.keras.layers.Conv2DTranspose(self.channels, (4, 4), strides=(2, 2), padding='same', use_bias=False, activation='tanh')

        self.batch_norm_1 = tf.keras.layers.BatchNormalization()
        self.batch_norm_2 = tf.keras.layers.BatchNormalization()
        self.batch_norm_3 = tf.keras.layers.BatchNormalization()
        self.batch_norm_4 = tf.keras.layers.BatchNormalization()
        self.batch_norm_5 = tf.keras.layers.BatchNormalization()

        self.leakyrelu_1 = tf.keras.layers.LeakyReLU()
        self.leakyrelu_2 = tf.keras.layers.LeakyReLU()
        self.leakyrelu_3 = tf.keras.layers.LeakyReLU()
        self.leakyrelu_4 = tf.keras.layers.LeakyReLU()
        self.leakyrelu_5 = tf.keras.layers.LeakyReLU()

    def call(self, inputs, training=True):


            x = self.dense(inputs)
            x = self.batch_norm_1(x, training)
            x = self.leakyrelu_1(x)
            x = self.reshape(x)


            x = self.convT_1(x)
            x = self.batch_norm_2(x, training)
            x = self.leakyrelu_2(x)

            x = self.convT_2(x)
            x = self.batch_norm_3(x, training)
            x = self.leakyrelu_3(x)

            x = self.convT_3(x)
            x = self.batch_norm_4(x, training)
            x = self.leakyrelu_4(x)

            x = self.convT_4(x)
            x = self.batch_norm_5(x, training)
            x = self.leakyrelu_5(x)

            return self.convT_5(x)

Затем я сохраняю свои веса как

generator=Generator()
path="abc.h5"
generator.save_weights(path)

, а затем пытаюсь загрузить веса следующим образом

generator=Generator()
generator=generator.load_weights("abc.h5")

Но я сталкиваюсь и получаю сообщение об ошибке:

Значение Ошибка: вы пытаетесь загрузить файл весов, содержащий X слоев, в модель с 0 слоями

Я искал решения, но каждый ответ направлено на модели, определенные с использованием model.Sequential ()

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