如何解决目标数组的形状与传递的数组的形状不匹配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 举报,一经查实,本站将立刻删除。