AttributeError: объект 'Sequential' не имеет атрибута 'shape' - PullRequest
1 голос
/ 28 мая 2020

enter image description here Я пробую Re sNet 50 с нуля в Tensorflow 2.0 в Google Colab. См. Приведенный ниже код. Я получаю сообщение об ошибке: AttributeError: объект «Последовательный» не имеет атрибута «форма». В прошлом я использовал conv2d для реализации VGG, но у меня никогда не возникало проблем. Так что, думаю, с версией Keras или версией TensorFlow все в порядке.

Код выглядит следующим образом:

def conv_diff_size(X, filters):
    f1, f2, f3 = filters  
    X_shortcircuit = X
    X_shortcircuit = tf.keras.models.Sequential([
        tf.keras.layers.Conv2D(f1, (1, 1), padding='same')(X_shortcircuit),
        tf.keras.layers.BatchNormalization(axis=-1, momentum=0.9)
    ])

    X = tf.keras.models.Sequential([
        tf.keras.layers.Conv2D(f1, (1, 1), padding='same'),
        tf.keras.layers.BatchNormalization(axis=-1, momentum=0.9),
        tf.keras.layers.Activation('relu'),

        tf.keras.layers.Conv2D(f2, (3, 3), padding='valid'),
        tf.keras.layers.BatchNormalization(axis=-1, momentum=0.9),
        tf.keras.layers.Activation('relu'),

        tf.keras.layers.Conv2D(f3, (1, 1), padding='valid'),
        tf.keras.layers.BatchNormalization(axis=-1, momentum=0.9)   
    ])

    X = tf.math.add(X, X_shortcircuit)
    X = tf.keras.layers.Activation('relu')

    return X


    def ResNet50():
            X = tf.keras.layers.Conv2D(64, kernel_size = (7,7), strides=2, padding='valid', data_format='channels_last', input_shape = (50000, 32, 32, 3))
            X = tf.keras.layers.BatchNormalization(axis=-1, momentum=0.9)(X)
            X = tf.keras.layers.MaxPool2D(pool_size=(3, 3), strides=2)(X)
            X = conv_diff_size(X, [64, 64, 256])(X)
            X = conv_same_size(X, [64, 64, 256])(X)
            X = conv_same_size(X, [64, 64, 256])(X)

            X = conv_diff_size(X, [128, 128, 512])(X)
            X = conv_same_size(X, [128, 128, 512])(X)
            X = conv_same_size(X, [128, 128, 512])(X)
            X = conv_same_size(X, [128, 128, 512])(X)

            X = conv_diff_size(X, [256, 256, 1024])(X)
            X = conv_same_size(X, [256, 256, 1024])(X)
            X = conv_same_size(X, [256, 256, 1024])(X)
            X = conv_same_size(X, [256, 256, 1024])(X)
            X = conv_same_size(X, [256, 256, 1024])(X)

            X = conv_diff_size(X, [512, 512, 2048])(X)
            X = conv_same_size(X, [512, 512, 2048])(X)
            X = conv_same_size(X, [512, 512, 2048])(X)
            X = conv_same_size(X, [512, 512, 2048])(X)
            X = conv_same_size(X, [512, 512, 2048])(X)
            X = conv_same_size(X, [512, 512, 2048](X))

            X = tf.keras.layers.Dense(1000, activation='relu')(X)
            X = tf.keras.layers.Dense(10, activation=relu)(X)
            return X
...