微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

目标数组的形状与传递的数组的形状不匹配CNN tensorflow具有loss = mean_squared_error`

如何解决目标数组的形状与传递的数组的形状不匹配CNN tensorflow具有loss = mean_squared_error`

我正在尝试使用CNN检测段落分割的边界框。那是我的模特,

model = models.Sequential()

model.add(layers.Conv2D(16,(3,3),activation='relu',input_shape=(1120,800,1)))


model.add(layers.Conv2D(16,activation='relu'))


model.add(layers.Conv2D(16,activation='relu'))
model.add(layers.MaxPooling2D((2,2)))



model.add(layers.Conv2D(16,2)))


model.add(layers.Flatten())
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(4,activation='sigmoid'))

#fit

model.compile(optimizer='adam',loss=tf.keras.losses.MeanSquaredError(),metrics=['accuracy'])

history = model.fit(X_train,y_Train,batch_size=10,epochs=5,validation_data=(X_test,y_test))

x_train形状的形状为(93,1120,800,1); y_train是shape为(93,1,4)。我关注的是一篇博客文章,其中他们使用 MeanSquaredError 作为损失函数。每次运行此代码时,都会出现此错误

错误

ValueError: A target array with shape (93,4) was passed for an output of shape (None,4) while using as loss `mean_squared_error`. This loss expects targets to have the same shape as the output.

我已经在寻找解决方案。但没有找到我的问题到底在哪里。

解决方法

删除激活=“ Sigmoid”。

MSE是一种回归度量,而S形是一种分类度量。

-MULTI LABEL CLASSIFICATION
activation: sigmoid 
loss: binary_crossentrophy

-MULTI CLASS CLASSIFICATION
activation: softmax
loss: categorical_crossentrophy

REGRESSION (-inf,+inf)
Activation: None
loss: mse

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。