简体   繁体   English

训练损失减少但准确率始终为 0?

[英]Training loss decrease but accuracy is always 0?

I try to train a model, input is (3000,1) vector that is consist of negative numbers mostly, inormalize input.我尝试训练一个 model,输入是 (3000,1) 向量,主要由负数组成,非规范化输入。 Output is binary image which is represented as vector (2500,1). Output 是二进制图像,表示为矢量 (2500,1)。

My model is like this:我的 model 是这样的:

model = Sequential()
model.add(Dense(3000, input_shape=(x_train.shape[1:]), activation='linear'))
model.add(Dense(2500, activation='relu'))
model.add(Dense(2500, activation='relu'))
model.add(Dense(2500, activation='relu'))
model.add(Dense(2500, activation='relu'))
model.add(Dense(y_train.shape[1], activation='sigmoid'))
model.compile(optimizer=Adam(learning_rate=0.0001), loss='binary_crossentropy', metrics=['accuracy'])

Result is like this:结果是这样的:

Epoch 1/300
1/1 - 0s - loss: 0.6999 - accuracy: 0.0000e+00 - val_loss: 0.6930 - val_accuracy: 0.0000e+00
Epoch 2/300
1/1 - 0s - loss: 0.6843 - accuracy: 0.0000e+00 - val_loss: 0.6911 - val_accuracy: 0.0000e+00
Epoch 3/300
1/1 - 0s - loss: 0.6700 - accuracy: 0.0000e+00 - val_loss: 0.6944 - val_accuracy: 0.0000e+00
Epoch 4/300
1/1 - 0s - loss: 0.6515 - accuracy: 0.0000e+00 - val_loss: 0.7081 - val_accuracy: 0.0000e+00
Epoch 5/300
1/1 - 0s - loss: 0.6314 - accuracy: 0.0000e+00 - val_loss: 0.7349 - val_accuracy: 0.0000e+00
Epoch 6/300
1/1 - 0s - loss: 0.6147 - accuracy: 0.0000e+00 - val_loss: 0.7568 - val_accuracy: 0.0000e+00
Epoch 7/300
1/1 - 0s - loss: 0.6006 - accuracy: 0.0000e+00 - val_loss: 0.7615 - val_accuracy: 0.0000e+00
Epoch 8/300
1/1 - 0s - loss: 0.5865 - accuracy: 0.0000e+00 - val_loss: 0.7560 - val_accuracy: 0.0000e+00
Epoch 9/300
1/1 - 0s - loss: 0.5738 - accuracy: 0.0000e+00 - val_loss: 0.7515 - val_accuracy: 0.0000e+00
Epoch 10/300
1/1 - 0s - loss: 0.5637 - accuracy: 0.0000e+00 - val_loss: 0.7533 - val_accuracy: 0.0000e+00
Epoch 11/300
1/1 - 0s - loss: 0.5555 - accuracy: 0.0000e+00 - val_loss: 0.7629 - val_accuracy: 0.0000e+00
Epoch 12/300
1/1 - 0s - loss: 0.5490 - accuracy: 0.0000e+00 - val_loss: 0.7766 - val_accuracy: 0.0000e+00
Epoch 13/300
1/1 - 0s - loss: 0.5441 - accuracy: 0.0000e+00 - val_loss: 0.7877 - val_accuracy: 0.0000e+00
Epoch 14/300
1/1 - 0s - loss: 0.5402 - accuracy: 0.0000e+00 - val_loss: 0.7937 - val_accuracy: 0.0000e+00
Epoch 15/300
1/1 - 0s - loss: 0.5370 - accuracy: 0.0000e+00 - val_loss: 0.7966 - val_accuracy: 0.0000e+00
Epoch 16/300
1/1 - 0s - loss: 0.5346 - accuracy: 0.0000e+00 - val_loss: 0.8001 - val_accuracy: 0.0000e+00
Epoch 17/300
1/1 - 0s - loss: 0.5329 - accuracy: 0.0000e+00 - val_loss: 0.8065 - val_accuracy: 0.0000e+00
Epoch 18/300
1/1 - 0s - loss: 0.5315 - accuracy: 0.0000e+00 - val_loss: 0.8152 - val_accuracy: 0.0000e+00
Epoch 19/300
1/1 - 0s - loss: 0.5305 - accuracy: 0.0000e+00 - val_loss: 0.8253 - val_accuracy: 0.0000e+00
Epoch 20/300
1/1 - 0s - loss: 0.5294 - accuracy: 0.0000e+00 - val_loss: 0.8337 - val_accuracy: 0.0000e+00
Epoch 21/300
1/1 - 0s - loss: 0.5283 - accuracy: 0.0000e+00 - val_loss: 0.8408 - val_accuracy: 0.0000e+00
Epoch 22/300
1/1 - 0s - loss: 0.5271 - accuracy: 0.0000e+00 - val_loss: 0.8476 - val_accuracy: 0.0000e+00
Epoch 23/300
1/1 - 0s - loss: 0.5259 - accuracy: 0.0000e+00 - val_loss: 0.8550 - val_accuracy: 0.0000e+00
Epoch 24/300
1/1 - 0s - loss: 0.5247 - accuracy: 0.0000e+00 - val_loss: 0.8625 - val_accuracy: 0.0000e+00
Epoch 25/300
1/1 - 0s - loss: 0.5235 - accuracy: 0.0000e+00 - val_loss: 0.8705 - val_accuracy: 0.0000e+00
Epoch 26/300
1/1 - 0s - loss: 0.5223 - accuracy: 0.0000e+00 - val_loss: 0.8794 - val_accuracy: 0.0000e+00
Epoch 27/300
1/1 - 0s - loss: 0.5211 - accuracy: 0.0000e+00 - val_loss: 0.8872 - val_accuracy: 0.0000e+00
Epoch 28/300
1/1 - 0s - loss: 0.5200 - accuracy: 0.0000e+00 - val_loss: 0.8940 - val_accuracy: 0.0000e+00
Epoch 29/300
1/1 - 0s - loss: 0.5188 - accuracy: 0.0000e+00 - val_loss: 0.8982 - val_accuracy: 0.0000e+00

Accuracy and validation did not increase.准确性和验证没有增加。 Validation loss started to increase after some point.验证损失在某个时间点后开始增加。

Even when i try this network really small dataset(17 daatset), it does not converge smoothly.即使我尝试这个网络非常小的数据集(17 daatset),它也不会顺利收敛。

Then i try decision tree regressor , score of the decision tree was negative number.然后我尝试决策树回归器,决策树的得分为负数。 I check the dataset, but i could not find something wrong.我检查了数据集,但我找不到错误。 what could be wrong, can you please help me?有什么问题,你能帮帮我吗?

your task is hard for model to get good accuracy. model 的任务很难获得良好的准确性。

you have 2500 values in one output if one of these values is wrong then output will be zero accuracy for each data sample.您在一个 output 中有 2500 个值,如果其中一个值错误,则 output 将是每个数据样本的零精度。 your task dont require you to calculate accuracy, you can only focus on loss here.您的任务不需要您计算准确性,您可以在这里只关注损失。

Or you can manually define what accuracy is for your specific output, how many of these 2500 values have to be correctly predicted to be called correct prediction.或者您可以手动定义您的特定 output 的准确度,这 2500 个值中有多少必须被正确预测才能称为正确预测。 such as 50% of these values correctly classified with less then 0.5 error per value.例如,这些值中有 50% 正确分类,每个值的误差小于 0.5。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM