当前位置: 首页 > 知识库问答 >
问题:

为什么尽管损耗衰减且评估结果合理,tensorflow的“精度”值始终为0

岳意蕴
2023-03-14

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

规范化层节点时代开始损失结束损失精度

真正的1 200 5 0.6022 0.4348 0

真实1200 50 0.5963 0.4347 0

真实10 200 5 0.5249 0.4525 0

真正的10 200 50 0.5157 0.4418 0

真正的10 500 5 0.5816 0.4825 0

真10 500 50 0.5591 0.4422 0

假1200 5 996.2897 1.8313 0

虚假1200501063.1994 1.7264 0

假102005421.137140.6160 0

假1020050293.694346.28540

假10505382.2659297.2881 0

假10 500 50 412.2182 79.7649 0

我使用的编译参数是

编译优化器:adam损失:平均绝对误差度量:[“精度”]损失权重:[1.0]

下面是一个示例模型摘要

型号:"LRModel"

图层(类型)输出形状参数#

LR输入(输入层)[(无,1)]0

密(密)(无,200)400

ML-LinearRegression(密集)(无,1)201

总参数:601

可训练参数:601

不可训练参数:0

示例拟合结果是

1600/1600 - 1s-损失: 1063.1994-精度: 0.0000e 00-val_loss: 90.2848-val_accuracy: 0.0000e 00

纪元2/5

1600/1600 - 0s-损耗: 137.8654-精度: 0.0000e 00-val_loss: 2.1525-val_accuracy: 0.0000e 00

纪元3/5

1600/1600-0s-损耗:4.4340-精度:0.0000e00-瓦卢损耗:3.4557-瓦卢精度:0.0000e00

纪元4/5

1600/1600-0s-损耗:1.7573-精度:0.0000e00-瓦卢损耗:3.1190-瓦卢精度:0.0000e00

纪元5/5

1600/1600 - 0s-损失: 1.7264-精度: 0.0000e 00-val_loss: 3.2794-val_accuracy: 0.0000e 00

此外,还有两个问题我不明白

  1. 有时拟合具有永不改变的高损失并且模型无法计算结果。当这种情况发生时,我再次运行训练(有时几次),最终得到上面描述的结果,没有对数据或代码进行任何更改。
  2. 规范化产生的模型比我不规范化模型时更不准确。

共有1个答案

岳硕
2023-03-14

你没有展示你的模型。但是,如果您正在进行线性回归,则不应使用精度作为度量。在进行分类时,例如尝试分类图像是狗还是猫时,会使用准确度。您应该在模型中使用损失函数。编译适合于像tf这样的线性回归的代码。克拉斯。损失。MeanSquaredError。回归损失的文档在这里。回归度量的文档在这里。

 类似资料:
  • 我在Pytorch中用LSTM-线性模块构建了一个分类问题(10个类)的模型。我正在训练模型,对于每个时代,我在训练集中输出损失和准确性。产出如下: 纪元:0开始 损失:2.301875352859497 会计科目:0.1138888889 时代:1开始<损失:2.2759320735931396 会计科目:0.29 时代:2开始<损失:2.2510263919830322 会计科目:0.4872

  • 我的团队正在Tensorflow中训练一个CNN对损坏/可接受部件进行二进制分类。我们通过修改cifar10示例代码来创建我们的代码。在我以前的神经网络经验中,我总是训练到损失非常接近于0(远低于1)。然而,我们现在在训练期间(在一个单独的GPU上)用一个验证集来评估我们的模型,看起来精度在大约6.7K步数后停止增长,而损失在超过40K步数后仍在稳步下降。这是因为过装吗?一旦损失非常接近于零,我们

  • 问题内容: 我问这个问题是因为我知道以下检查列表是否为空的pythonic方法: 将打印等,所以这让我找出与真值; 但是,如果我尝试将[]和False直接“比较”,则会获得以下信息: 等等… 这里发生了什么?我觉得我确实缺少一些明显的东西。 问题答案: 该语句在布尔上下文中评估所有内容,就像对内置函数的隐式调用一样。 这是您实际检查语句如何评估事物的方式: 参见真值测试文档,空列表被 认为是错误的

  • 问题内容: 因此,我有一个简单的属性文件,其中包含以下条目: 该属性文件使用加载,该文件引用了上面的属性文件。 我有以下课程,为此,我正在尝试加载这些属性,如下所示: 问题是,并且总是为空…但是在我的控制器中,该值正好被加载。是什么赋予了? 问题答案: 如果通过手动实例化的实例,则不会涉及Spring,因此注释将被忽略。 如果您无法更改代码以使Spring实例化bean(也许使用-scoped b

  • 问题内容: 对于我确定的人来说,这是一个简单的答案。有人可以解释为什么此表达式的值为真吗? 问题答案: 因为您使用的是==(相似性)运算符,而PHP将字符串强制为int。 要解决此问题,请使用===(等于)运算符,该运算符不仅会检查值是否相同,还会检查数据类型是否相同,因此“ 123”字符串和123 int不会被视为相等。

  • 问题内容: 我的JDBC代码有问题。这是相关代码: 这是例外: 这是怎么引起的,我该如何解决? 问题答案: 您没有检查next的返回值。如果没有行,就会遇到麻烦…