【问题标题】:TypeError: Expected tensorflow.python.keras.engine.training.Model, found tensorflow.python.framework.ops.TensorTypeError: Expected tensorflow.python.keras.engine.training.Model, found tensorflow.python.framework.ops.Tensor
【发布时间】:2020-10-05 12:43:26
【问题描述】:

我想写一个Resnet 18模型,所以找到了这段代码,知道我的数据集是一个图像数据集,我的标签是2(num_classes=2),我发现这个错误我看不懂。这是我的模型:

def create_compiled_keras_model():    

    inputs = tf.keras.Input((224, 224, 3))
    regularizer = None

    x = tf.keras.layers.ZeroPadding2D(padding=(3,3), name='pad')(inputs)
    x = tf.keras.layers.Conv2D(filters=64, kernel_size=7, strides=2, padding='valid', activation='linear', 
                               use_bias=False, kernel_initializer='he_normal', kernel_regularizer=regularizer, name='conv1')(x)
    x = tf.keras.layers.BatchNormalization(momentum=0.1, epsilon=1e-5, name='bn1')(x)
    x = tf.keras.layers.Activation('relu', name='relu')(x)
    x = tf.keras.layers.ZeroPadding2D(padding=(1,1), name='pad1')(x)
    x = tf.keras.layers.MaxPool2D(pool_size=3, strides=2, padding='valid', name='maxpool')(x)

    x = BasicBlock(x, num_channels=64, kernel_size=3, num_blocks=2, skip_blocks=[], regularizer=regularizer, name='layer1')

    x = BasicBlockDown(x, num_channels=128, kernel_size=3, regularizer=regularizer, name='layer2')
    x = BasicBlock(x, num_channels=128, kernel_size=3, num_blocks=2, skip_blocks=[0], regularizer=regularizer, name='layer2')

    x = BasicBlockDown(x, num_channels=256, kernel_size=3, regularizer=regularizer, name='layer3')
    x = BasicBlock(x, num_channels=256, kernel_size=3, num_blocks=2, skip_blocks=[0], regularizer=regularizer, name='layer3')

    x = BasicBlockDown(x, num_channels=512, kernel_size=3, regularizer=regularizer, name='layer4')
    x = BasicBlock(x, num_channels=512, kernel_size=3, num_blocks=2, skip_blocks=[0], regularizer=regularizer, name='layer4')

    x = tf.keras.layers.GlobalAveragePooling2D(name='avgpool')(x)
    x = tf.keras.layers.Dense(units=1000, use_bias=True, activation='linear', kernel_regularizer=regularizer, name='fc')(x)
    #x = tf.keras.layers.GlobalAveragePooling2D()(x)
    #x = tf.keras.layers.Dense(units=2, use_bias=False, name='output', activation='relu')(x)
  
    model_output = tf.keras.layers.Dense(units=2,use_bias=False, name='output', activation='relu')(x)
    model = tf.keras.Model(inputs, model_output)
    model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.001), 
             loss=tf.keras.losses.CategoricalCrossentropy(),
              metrics=[tf.keras.metrics.CategoricalAccuracy()])
    return x

错误:TypeError: Expected tensorflow.python.keras.engine.training.Model, found tensorflow.python.framework.ops.Tensor.

【问题讨论】:

    标签: python-3.x keras tensorflow2.0


    【解决方案1】:

    您返回了错误的变量。我认为你应该return model 而不是x

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 2019-07-18
    • 2021-01-22
    • 2021-02-07
    • 2018-12-25
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    相关资源
    最近更新 更多