keras 为什么尽管损失衰减且评估结果合理,但tensorflow的“准确性”值始终为0

voase2hg  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(73)

我正在构建一个模型,以执行方程y=mx+c的线性回归。我生成了一个包含1999个样本的csv文件和一个可以更改归一化的模型(开/关)、层数、节点数和纪元数。我希望能够使用loss /在我事先不知道答案但对我的结果感到困惑的情况下,指导选择这些变量的训练和评估的准确性,总结如下:

Normalization   Layers  Nodes   Epochs  Start Loss  End Loss    Accuracy

TRUE               1    200       5     0.6022      0.4348      0

TRUE               1    200      50     0.5963      0.4347      0

TRUE              10    200       5     0.5249      0.4525      0

TRUE              10    200      50     0.5157      0.4418      0

TRUE              10    500       5     0.5816      0.4825      0

TRUE              10    500      50     0.5591      0.4422      0

FALSE              1    200       5   996.2897      1.8313      0

FALSE              1    200      50  1063.1994      1.7264      0

FALSE             10    200       5   421.1371     40.6160      0

FALSE             10    200      50   293.6943     46.2854      0

FALSE             10    500       5   382.2659    297.2881      0

FALSE             10    500      50   412.2182     79.7649      0

字符串
我使用的编译参数是
compile optimizer:adam loss:mean_absolute_error metrics:['accuracy'] loss_weights:[1.0]
一个示例模型概要被

Model: "LRmodel"
_________________________________________________________________
Layer (type)                 Output Shape              Param #

LR-input (InputLayer)        [(None, 1)]                 0 
_________________________________________________________________
dense (Dense)                (None, 200)               400

_________________________________________________________________
ML-LinearRegression (Dense)  (None, 1)                 201

Total params: 601

Trainable params: 601

Non-trainable params: 0


拟合结果示例为

1600/1600 - 1s - loss: 1063.1994 - accuracy: 0.0000e+00 - val_loss: 90.2848 - val_accuracy: 0.0000e+00

Epoch 2/5

1600/1600 - 0s - loss: 137.8654 - accuracy: 0.0000e+00 - val_loss: 2.1525 - val_accuracy: 0.0000e+00

Epoch 3/5

1600/1600 - 0s - loss: 4.4340 - accuracy: 0.0000e+00 - val_loss: 3.4557 - val_accuracy: 0.0000e+00

Epoch 4/5

1600/1600 - 0s - loss: 1.7573 - accuracy: 0.0000e+00 - val_loss: 3.1190 - val_accuracy: 0.0000e+00

Epoch 5/5

1600/1600 - 0s - loss: 1.7264 - accuracy: 0.0000e+00 - val_loss: 3.2794 - val_accuracy: 0.0000e+00


此外,还有2个问题我不理解
1.有时候,拟合的损失很大,而且永远不会改变,模型无法计算结果。当这种情况发生时,我再次运行训练(有时是几次),最终得到上面描述的结果,而数据或代码没有变化。
1.规格化生成的模型比不规格化时的模型精度低。

az31mfrm

az31mfrm1#

您不会显示模型。但是,如果您正在进行线性回归,则不应使用准确度作为度量。当您进行分类时,例如尝试分类图像是狗还是猫时,会使用准确度。您应该在model.compile中使用适合线性回归的损失函数,如tf.keras.losses.MeanSquaredError。回归损失的文档为here.回归度量的文档为here.

相关问题