Python 创建Tensorflow模型,该模型接受tensor图像作为模型的输入

Python 创建Tensorflow模型,该模型接受tensor图像作为模型的输入,python,tensorflow,keras,tensorflow2.0,keras-layer,Python,Tensorflow,Keras,Tensorflow2.0,Keras Layer,我正在为图像分类模型使用以下配置: model = keras.Sequential([ keras.layers.Flatten(input_shape=(100, 100, 3)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10) ]) model.compile(optimizer='adam', loss=tf.keras.losses.Sparse

我正在为图像分类模型使用以下配置:

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(100, 100, 3)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10)
])

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
如果打印model.inputs,则返回

[<tf.Tensor 'flatten_input:0' shape=(None, 100, 100, 3) dtype=float32>]
若我通过张量图像,我得到下面的误差

WARNING:tensorflow:Model was constructed with shape (None, 100, 100, 3) for input Tensor("flatten_input:0", shape=(None, 100, 100, 3), dtype=float32), but it was called on an input with incompatible shape (1, 886, 685, 3).
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
我只是想知道我应该更新到模型中哪些Keras层和输入参数,以便它可以接受张量图像作为输入。
任何帮助都将不胜感激。谢谢

定义你的模型时,你需要告诉keras你图片的通道数:1个用于黑白图片,3个用于RGB

所以你需要写:

keras.layers.Flatten(input_shape=(1, 100, 100, 3)) for a 1 channel picture
我还注意到,您没有为最后一层定义激活函数:
keras.layers.Dense(10)
,如果您将损失定义为交叉熵,则需要获得一些概率作为网络的输出,例如
keras.layers.Dense(10,activation='softmax')


希望你能明白这是一个警告,不是错误,只是一些语义。警告确实指出了一个真正的问题


您的模型使用形状
(100100,3)
拍摄图像,您使用形状
(886865,3)
为其提供输入。空间尺寸不匹配,您需要将图像调整为大小
100x100

该消息是警告,而不是错误,并且它清楚地表明图像应该是(100100,3),但您的图像是(886865,3)。您需要将图像大小调整为100x100ah!谢谢我会更新并再次检查。
keras.layers.Flatten(input_shape=(1, 100, 100, 3)) for a 1 channel picture