尝试在Google Colab中使用TensorFlow对图像进行分类,遇到了目标数组形状与输出形状维度不匹配的问题

以下是我的模型创建代码:

 import tensorflow as tf    from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Dropout, Flatten, Activation    model = tf.keras.models.Sequential()    model.add(Conv2D(40, kernel_size=5, padding="same",input_shape=(300, 300, 1), activation = 'relu'))    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))    model.add(Conv2D(70, kernel_size=3, padding="same", activation = 'relu'))    model.add(Conv2D(500, kernel_size=3, padding="same", activation = 'relu'))    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))    model.add(Conv2D(1024, kernel_size=3, padding="valid", activation = 'relu'))    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))    model.add(Dense(units=100, activation='relu'  ))    model.add(Dropout(0.8))    model.add(Dense(2))    model.add(Activation("softmax"))    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])    optim = "adam"    model.compile(optimizer=optim,              loss='categorical_crossentropy',              metrics=['accuracy'])train = train_data[:858]test = train_data[859:]X = np.array([i[0] for i in train]).reshape(-1,IMG_SIZE,IMG_SIZE,1)Y = [i[1] for i in train]Y=np.array(Y)print(X.shape)(858, 300, 300, 1)model.fit(X, Y, epochs=1)

以下是我的错误信息:任何帮助都将不胜感激。

谢谢另外,我的图像大小是300 —————————————————————————

ValueError                                Traceback (most recent call last)<ipython-input-131-d4fc87229b94> in <module>()----> 1 model.fit(X, Y, epochs=1)3 frames/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/training_utils.py in check_loss_and_target_compatibility(targets, loss_fns, output_shapes)    739           raise ValueError('A target array with shape ' + str(y.shape) +    740                            ' was passed for an output of shape ' + str(shape) +--> 741                            ' while using as loss `' + loss_name + '`. '    742                            'This loss expects targets to have the same shape '    743                            'as the output.')ValueError: A target array with shape (858, 2) was passed for an output of shape (None, 36, 36, 2) while using as loss `categorical_crossentropy`. This loss expects targets to have the same shape as the output

我的图像大小是300


回答:

你忘记在这一行之前添加Flatten()层:

model.add(Dense(units=100, activation='relu'))

所以只需添加:

model.add(Flatten())

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注