tensorflow2.3实现cnn的一个bug

我的模型有两种定义方式

1.

model=tf.keras.Sequential([
        tf.keras.layers.Conv2D(filters=32,kernel_size= 3, input_shape=(256, 256, 3), activation='relu'),
        tf.keras.layers.MaxPooling2D(),
        tf.keras.layers.Conv2D(32, 5, activation='relu'),
        tf.keras.layers.MaxPooling2D(),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(64, activation='relu'),
        tf.keras.layers.Dense(2, activation='softmax')
    ])

2.

class CNN(tf.keras.Model):
    def __init__(self):
        super().__init__()
        self.conv1=tf.keras.layers.Conv2D(32, 3, activation='relu',input_shape=(256,256,3))
        self.pool1=tf.keras.layers.MaxPooling2D()
        self.conv2=tf.keras.layers.Conv2D(32, 5, activation='relu')
        self.pool2=tf.keras.layers.MaxPooling2D()
        self.flatten=tf.keras.layers.Flatten()
        self.dense1=tf.keras.layers.Dense(64, activation='relu')
        self.dense2=tf.keras.layers.Dense(2, activation='softmax')

    def call(self, inputs,training=None,mask=None):
        x=self.conv1(inputs)
        x=self.pool1(x)
        x=self.conv2(x)
        x=self.pool2(x)
        x=self.flatten(x)
        x=self.dense1(x)
        output=self.dense2(x)

        return output

model=CNN()

其中第一种方法正常运行,第二种方法出现bug

       ValueError: The channel dimension of the inputs should be defined. Found `None`.

 

模型是为了实现猫狗分类,图片为三通道,当我输入图片为mnist的手写数字单通道图片时没有问题

 

第13行的inputs都没定义他的维度啥的,当然报错

可是定义卷积层的时候有默认值啊,第四行

  self.conv1=tf.keras.layers.Conv2D(32, 3, activation='relu',input_shape=(256,256,3))